Dokumentasjon

Bruksområder for MQTT

MQTT er en internettprotokoll med en sentral meldingsmegler. Med denne meldingsmegleren kan deltakerne abonnere på bestemte "emner" og sende meldinger til emner. CFos Charging Manager kan lytte til meldinger om bestemte emner og dermed styres via MQTT. Den kan også kommunisere statusen til enhetene den administrerer. CFos Power Brain Wallbox kan også styres via MQTT og overføre status. Dette er nyttig ved tilkobling til et hjemmeautomatiseringssystem, for industriell kontroll (M2M) og for overvåking og registrering. Alle emner starter med cfos_mqtt. Hvis du vil koble flere cFos MQTT-enheter til en MQTT-megler, kan emnet valgfritt starte med cfos_mqtt_<serienummer>/, justerbar under konfigurasjon. I konfigurasjonen kan du også angi en URL for standard MQTT-megler. Nettadresser kan valgfritt starte med mqtt:// og mqtts: //. Med mqtts:// oppretter cFos Charging Manager eller cFos Power Brain Wallbox en TLS-forbindelse. Standardportene 1883 for ukrypterte tilkoblinger og 8883 for TLS-tilkoblinger brukes. Du kan imidlertid også angi en port i nettadressen. Brukernavn og passord kan angis i vanlig URL-notasjon, f.eks. mqtt://user:password@192.168.2.111. Hvis du angir en MQTT-megler i cFos Charging Manager-konfigurasjonen, kan du enten angi en individuell megler eller bare skrive mqtt. I dette tilfellet brukes standardmegleren som er lagret i konfigurasjonen.

CFos Charging Manager støtter både MQTT 3.1.1 og MQTT 5. Hvis du lar URL-en starte med mqtt3:// eller mqtt5:// (mqtts3:// og mqtts5:// for kryptert tilkobling), bestemmer du protokollversjonen. Standard er MQTT 3.1.1. cFos Charging Manager prøver å bytte tilbake til MQTT 3.1.1 for MQTT 5 hvis en feilmelding vises. Dette fungerer med eldre Mosquitto-meglere, men ikke nødvendigvis med andre meglere.

Merk: Siden oppsettet av MQTT krever administratorpassordet, håndterer Charging Manager dataene deretter. Det sendes derfor bevisst data som bare kan nås med administratorpassordet.

Merknad om MQTT-meglere: Takket være Stefan G. (#diebestenuserderwelt) var vi i stand til å teste MQTT-megleren innebygd i ioBroker. Denne MQTT 3.1.1-megleren oppfører seg (fra februar 2023) på flere måter som ikke er i samsvar med standarden: Tilkoblingsforsøk avsluttes stille uten feilmelding, nyttelasten mangler noen ganger i PUBLISH-pakker, PUBLISH-pakker sendes tilsynelatende to ganger (kan dette slås av med en konfigurasjonsinnstilling?). Dette betyr at denne megleren ikke er egnet for å kontrollere Charging Manager API, ettersom API-forespørsler kan utføres mer enn én gang. Selv om vi er interessert i at MQTT-implementeringen vår skal være kompatibel med så mange meglere som mulig, anbefaler vi for øyeblikket å bruke Mosquitto for ioBroker.

Integrering av målere og ladestasjoner via enhetstypen "HTTP Input".

I stedet for å forsyne disse enhetene via HTTP (se HTTP API -> HTTP-målere og ladestasjoner), kan disse enhetene også lytte til MQTT. Angi mqtt eller en MQTT-megler-URL som enhetsadresse. Deretter lytter den tilsvarende måleren eller Wallbox-ladestasjonen til emnet cfos_mqtt/set/<enhets-ID>, f.eks. for en måler med enhets-ID M1 til cfos_mqtt/set/M1. HTTP-inngangsmåleren forventer deretter en JSON-streng som en melding, som beskrevet i HTTP API under "HTTP-målere og ladestasjoner". MQTT-kilden din må derfor levere dataene i dette formatet. Dette gjør at du kan integrere enheter som ikke støttes av cFos Charging Manager ved å hente dataene fra en annen kilde (f.eks. et hjemmeautomatiseringssystem) og deretter mate dem inn i Charging Manager.
Merk: Hvis dataene fra kilden er i et annet format enn HTTP-telleren forventer, kan du også opprette en egendefinert teller. For MQTT er dette beskrevet nedenfor.


Eksempel: Du har opprettet en HTTP-inngangsteller, og den har M3 som enhets-ID. Du har angitt adressen til Mosquitto-megleren som adresse, f.eks. mqtt://192.168.2.30. Hvis du skriver inn følgende kommando på kommandolinjen på datamaskinen der Mosquitto kjører:
mosquitto_pub -h localhost -t cfos_mqtt/set/M3 -m '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }'
telleren skal da inneholde verdiene ovenfor.

Overfør statusen til Charging Manager-enhetene

I Charging Manager-konfigurasjonen kan du angi en MQTT-megler-URL (eller mqtt for standard megler), som Charging Manager deretter publiserer statusen til alle enheter under emnet cfos_mqtt/get/dev_info. Den overfører dette i formatet som er kjent fra HTTP get_dev_info. Dette gir deg alle verdiene for enhetene slik de også er synlige i brukergrensesnittet, f.eks. effektverdier for målerne eller status for Wallbox-ladestasjonene. Hvis du bare vil abonnere på enkelte enheter, kan du deaktivere avkrysningsruten "Publish info via MQTT" og i stedet merke av for "Publish info via MQTT" i innstillingene for de enkelte enhetene under "Display". Da publiseres en tilsvarende JSON-streng om den aktuelle enheten under emnet cfos_mqtt/get/<device-ID>. I tillegg kan du abonnere på alle globale verdier under emnet cfos_mqtt/get/params, ettersom de publiseres i formatet som er kjent fra HTTP get_dev_info under "params".

kontroller cFos Charging Manager API via MQTT

I konfigurasjonen av cFos Charging Manager kan du angi en MQTT-megler-URL (eller mqtt for standard meglere) under "Megler for API-tilgang via MQTT". Hvis denne verdien ikke er tom, abonnerer cFos Charging Manager på alle emner som starter med cfos_mqtt/api/. Den tolker deretter meldinger under slike emner som om emnenavnet var en HTTP-URL som begynner med /cnf? og videresender dem til HTTP-API-et. Charging Manager publiserer deretter svaret fra HTTP API-et som JSON under emnet cfos_mqtt/api_res. På denne måten har du kontroll over nesten hele HTTP-API-et via MQTT. Unntak er API-anrop som leverer lange JSON-svar. Eksempel: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 setter Charging Manager-variabelen x til 1 med API-funksjonen set_cm_var. En melding under cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 angir RFID 5678 for Wallbox-ladestasjonen med enhets-ID E1 (se også våre utvidede RFID-funksjoner).
Data som overføres via HTTP POST, kan plasseres i meldingen under emnet.

Eksempel: Endre med jevne mellomrom den maksimale totale strømmen som er tilgjengelig for Charging Manager:
Angi megleren din under de generelle Charging Manager-innstillingene under "Meglere for API-tilgang via MQTT" (eller bare mqtt hvis standardmegleren som er lagret under "Konfigurasjon" skal brukes). Deretter publiserer du ved hjelp av MQTT til emnet
cfos_mqtt/api/cmd=set_params
et JSON-objekt med følgende innhold:
{"max_total_cur_prc": p}
der p er en angivelse i prosent av hvor stor del av den forhåndsinnstilte maksimale totale strømmen som skal tas.
Merk: Noen av HTTP API-anropene fører til at Charging Manager lagrer konfigurasjonen. Hvis du utfører dem for ofte, vil blitsen (i cFos Power Brain eller cFos Wallbox Booster) eller SD-kortet i Raspberry bli utslitt. API-anropet "set_params" med den enkle parameteren "max_total_cur_prc" lagrer derfor ikke parametrene.

Kontroll av ladestasjoner via MQTT

Hvis cFos Charging Manager ikke er i "Load Management"-modus, men i "Observe"-modus, kan du bruke MQTT til å styre alle Wallbox-ladestasjonene selv. Dette gjelder spesielt for cFos Power Brain Wallbox-ladestasjoner som drives som slaver i "Observe"-modus. For å gjøre dette må du krysse av for alternativet "Aktiver kontroll av Wallbox-ladestasjoner" i Charging Manager-innstillingene under MQTT. Deretter lytter cFos Charging Manager til MQTT-emnet cfos_mqtt/ctl og forventer meldinger med et JSON-objekt. Dette objektet har underobjekter som egenskaper med enhets-ID-en som navn. Underobjektene ser slik ut: {"cur": c, "ena": b, "wke": b}, der c er ladestrømmen i mA, og b kan være henholdsvis true eller false. "ena": false deaktiverer ladingen i Wallbox-ladestasjonen, "wke": true forsøker å sende en "wake up car"-kommando til Wallbox-ladestasjonen (for øyeblikket bare mulig med cFos Power Brain-ladestasjoner). Du kan også utelate "cur", "ena" og "wke" og dermed bare utføre visse kontrollfunksjoner.
Eksempel: {"E1":


{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000}}

Setter ladestrømmen til Wallbox-ladestasjonen med enhets-ID-en til 8A, aktiverer ladingen og forsøker å vekke bilen. Videre settes ladestrømmen for Wallbox-ladestasjon E2 til 10A.

Send logging og transaksjonslogg via MQTT

Du kan angi en MQTT-megler-URL for overføring av loggoppføringer i systemloggen under "Konfigurasjon". CFos Charging Manager publiserer deretter alle loggoppføringer under emnet cfos_mqtt/log. Dette lar deg overvåke Charging Manager-loggene eksternt. Du kan også angi en MQTT-megler-URL for transaksjonsloggoppføringer under "Konfigurasjon". Deretter sendes alle ladetransaksjoner under emnet cfos_mqtt/ta_log. Dette muliggjør ekstern evaluering av ladetransaksjonsregnskapsdata og oppretting av sikkerhetskopier av ladetransaksjoner på et annet system. En ladetransaksjon begynner når ladepluggen plugges inn og slutter når den trekkes ut.

Brukerdefinerte tellere med MQTT

Du kan opprette egendefinerte tellere ved å bruke rtype = 2 for MQTT. Disse tellerne defineres på samme måte som HTTP-tellere (rtype = 1). Adressene her er imidlertid ikke HTTP-nettadresser, men MQTT-emner.




Eksempel: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Her abonnerer den brukerdefinerte telleren på emnet /test_topic3 og forventer et JSON-objekt med egenskapen "power_w", f.eks. {"power_w": 1234}. Ulike tellervariabler kan ha forskjellige emner og oppdateres så snart en melding publiseres under det tilsvarende emnet.