Dokumentation

MQTT-anvendelsesområder

MQTT er en internetprotokol med en central meddelelsesmægler. Med denne meddelelsesmægler kan deltagerne abonnere på bestemte "emner" og sende meddelelser til emnerne. CFos Charging Manager kan lytte til meddelelser om specifikke emner og dermed styres via MQTT. Den kan også kommunikere status for de enheder, som den administrerer. CFos Power Brain Wallbox kan også styres via MQTT og transmittere sin status. Dette er nyttigt, når du tilslutter til et hjemmeautomatiseringssystem, til industriel styring (M2M) og til overvågning og registrering. Alle emner begynder med cfos_mqtt. Hvis du ønsker at forbinde flere cFos MQTT-enheder til en MQTT-broker, kan emnet eventuelt starte med cfos_mqtt_<serienummer>/, som kan justeres under konfiguration. I konfigurationen kan du også angive en URL for standard MQTT-mægleren. URL'er kan eventuelt starte med mqtt:// og mqtts: //. Med mqtts:// etablerer cFos Charging Manager eller cFos Power Brain Wallbox en TLS-forbindelse. Standardportene 1883 for ukrypterede forbindelser og 8883 for TLS-forbindelser anvendes. Du kan dog også angive en port i URL'en. Brugernavn og adgangskode kan angives i den sædvanlige URL-notation, f.eks. mqtt://user:[email protected]. Hvis du angiver en MQTT-mægler i konfigurationen af cFos Charging Manager, kan du enten angive en individuel mægler eller blot skrive mqtt. I dette tilfælde anvendes den standardmægler, der er gemt i konfigurationen.

CFos Charging Manager understøtter både MQTT 3.1.1 og MQTT 5. Hvis du lader URL'en starte med mqtt3:// eller mqtt5:// (mqtts3:// og mqtts5:// for krypteret forbindelse), bestemmer du protokolversionen. Standardværdien er MQTT 3.1.1. cFos Charging Manager forsøger at skifte tilbage til MQTT 3.1.1 for MQTT 5, hvis der vises en fejlmeddelelse. Dette virker med ældre Mosquitto-brokere, men ikke nødvendigvis med andre brokere.

Bemærk: Da opsætningen af MQTT kræver administratoradgangskoden, håndterer Charging Manager dataene i overensstemmelse hermed. Der sendes derfor bevidst data, som kun kan tilgås med en administratoradgangskode.

Note om MQTT-mæglere: Takket være Stefan G. (#diebestenuserderwelt) kunne vi teste den MQTT-mægler, der er indbygget i ioBroker. Denne MQTT 3.1.1-mægler opfører sig (fra februar 2023) på flere måder, der ikke er standardkonforme: Connect-forsøg afbrydes lydløst uden en fejlmeddelelse, nyttelasten mangler nogle gange i PUBLISH-pakker, PUBLISH-pakker sendes tilsyneladende to gange (kan dette slås fra med en konfigurationsindstilling?). Dette betyder, at denne mægler ikke er egnet til at styre Charging Manager API'et, da API-forespørgsler kan blive udført mere end én gang. Selv om vi er interesserede i, at vores MQTT-implementering er kompatibel med så mange mæglere som muligt, anbefaler vi i øjeblikket at bruge Mosquitto til ioBroker.

Integration af målere og wallboxes via enhedstypen "HTTP Input".

I stedet for at forsyne disse enheder via HTTP (se HTTP API -> HTTP-målere og wallboxes) kan disse enheder også lytte til MQTT. Indtast mqtt eller en MQTT-mægler-URL som enhedsadresse. Derefter lytter den tilsvarende måler eller wallbox til emnet cfos_mqtt/set/<device ID>, f.eks. for en måler med device ID M1 til cfos_mqtt/set/M1. HTTP-inputmåleren forventer derefter en JSON-streng som en meddelelse, som beskrevet i HTTP API 'et under "HTTP-målere og wallboxes". Din MQTT-kilde skal derfor levere dataene i dette format. Dette giver dig mulighed for at integrere enheder, der ikke understøttes af cFos Charging Manager, ved at indhente dataene fra en anden kilde (f.eks. et hjemmeautomatiseringssystem) og derefter levere dem til Charging Manager.
Bemærk: Hvis dataene fra kilden er i et andet format end det, som HTTP-tælleren forventer, kan du også oprette en brugerdefineret tæller. For MQTT er dette beskrevet nedenfor.


Eksempel: Du har oprettet en HTTP-indgangstæller, og den har M3 som enheds-id. Du har indtastet Mosquitto-brokerens adresse som adresse, f.eks. mqtt://192.168.2.30. Hvis du indtaster følgende kommando på kommandolinjen på den computer, hvor Mosquitto kø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] }'
tælleren skal så indeholde ovenstående værdier.

Overførsel af status for Charging Manager-enhederne

I Charging Manager-konfigurationen kan du angive en MQTT-broker-URL (eller mqtt for standardbroker), under hvilken Charging Manager derefter offentliggør status for alle enheder under emnet cfos_mqtt/get/dev_info. Den sender dette i det format, der kendes fra HTTP get_dev_info. Dette giver dig alle værdier for enhederne, da de også er synlige i brugergrænsefladen, f.eks. effektværdier for målerne eller status for wallboxene. Hvis du kun vil abonnere på enkelte enheder, kan du deaktivere afkrydsningsfeltet "Publish info via MQTT" og i stedet markere indstillingen "Publish info via MQTT" i indstillingerne for de enkelte enheder under "Display". Derefter offentliggøres en tilsvarende JSON-streng om den pågældende enhed under emnet cfos_mqtt/get/<device-ID>. Derudover kan du abonnere på alle globale værdier under emnet cfos_mqtt/get/params, da de udgives i det format, der er kendt fra HTTP get_dev_info under "params".

styr cFos Charging Manager API via MQTT

I konfigurationen af cFos Charging Manager kan du angive en MQTT-mægler-URL (eller mqtt for standardmæglere) under "Mægler til API-adgang via MQTT". Hvis denne værdi ikke er tom, abonnerer cFos Charging Manager på alle emner, der starter med cfos_mqtt/api/. Den fortolker derefter beskeder under sådanne emner, som om emnenavnet var en HTTP-URL, der begynder med /cnf? og videresender dem til HTTP API. Charging Manager offentliggør derefter svaret fra HTTP API'en som JSON under emnet cfos_mqtt/api_res. På denne måde har du næsten hele HTTP API'en under din kontrol via MQTT. Undtagelser er API-kald, der leverer lange JSON-svar. Eksempel: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 sætter Charging Manager-variablen x til 1 med API-funktionen set_cm_var. En besked under cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 indtaster RFID 5678 for wallboxen med enheds-ID E1 (se også vores udvidede RFID-funktioner).
Data, der overføres via HTTP POST, kan placeres i meddelelsen under emnet.

Eksempel: Skift med jævne mellemrum den maksimale samlede strøm, der er tilgængelig for Charging Manager:
Indtast din broker under de generelle Charging Manager-indstillinger under "Brokers for API access via MQTT" (eller blot mqtt, hvis den standardbroker, der er gemt under "Configuration", skal bruges). Brug derefter MQTT til at udgive til emnet
cfos_mqtt/api/cmd=set_params
et JSON-objekt med følgende indhold:
{"max_total_cur_prc": p}
hvor p er en angivelse i procent af, hvor stor en del af den forudindstillede maksimale samlede stream, der skal tages.
Bemærk: Nogle af HTTP API-kaldene får Charging Manager til at gemme konfigurationen. Hvis du udfører dem for ofte, vil flashen (i cFos Power Brain eller cFos Wallbox Booster) eller SD-kortet i Raspberry'en blive slidt op. API-kaldet "set_params" med den enkelte parameter "max_total_cur_prc" gemmer derfor ikke parametrene.

Styr wallboxes via MQTT

Hvis cFos Charging Manager ikke er i "Load management"-tilstand, men i "Observe"-tilstand, kan du bruge MQTT til selv at tage kontrol over alle wallboxe. Dette gælder især for cFos Power Brain-wallboxe, der betjenes som slaver i "Observe"-tilstand. For at gøre dette skal du markere indstillingen "Aktivér kontrol af wallboxe" under MQTT i Charging Manager-indstillingerne. CFos Charging Manager lytter derefter til MQTT-emnet cfos_mqtt/ctl og forventer beskeder med et JSON-objekt. Dette objekt har underobjekter med enhedens ID som navn som egenskaber. Underobjekterne ser sådan ud: {"cur": c, "ena": b, "wke": b, "phs": p}, hvor c er opladningsstrømmen i mA, og b hver især kan være true eller false. "ena": false deaktiverer opladning ved wallboxen, "wke": true forsøger at sende en "wake up car"-kommando til wallboxen (i øjeblikket kun muligt med cFos Power Brain-wallboxe). p kan være 1 eller 3 for at skifte mellem 1-faset og 3-faset opladning. Du kan også udelade "cur", "ena", "wke" og "phs" og dermed kun udføre visse kontrolfunktioner.
Eksempel: {"E1":


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

Indstiller ladestrømmen for wallboxen med enheds-ID'et til 8A, aktiverer opladning og forsøger at vække bilen. Desuden sættes ladestrømmen for wallbox E2 til 10A, og der skiftes til 3-faset opladning.

Send logning og transaktionslog via MQTT

Du kan angive en MQTT-mægler-URL til overførsel af logposter i systemloggen under "Konfiguration". CFos Charging Manager offentliggør derefter alle logposter under emnet cfos_mqtt/log. Dette giver dig mulighed for at overvåge logfilerne fra Charging Manager på afstand. Du kan også angive en MQTT-mægler-URL til transaktionslogposter under "Konfiguration". Derefter sendes alle opkrævningstransaktioner under emnet cfos_mqtt/ta_log. Dette giver mulighed for fjernvurdering af regnskabsmæssige data om opkrævningstransaktioner og oprettelse af sikkerhedskopier af opkrævningstransaktioner på et andet system. En opladningstransaktion begynder, når opladningsstikket sættes i stikket, og slutter, når det tages ud af stikket.

Brugerdefinerede tællere med MQTT

Du kan oprette brugerdefinerede tællere ved at bruge rtype = 2 til MQTT. Disse tællere er defineret på samme måde som HTTP-tællere (rtype = 1). Adresserne her er dog ikke HTTP-URL'er, men MQTT-emner.




Eksempel: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Her abonnerer den brugerdefinerede tæller på emnet /test_topic3 og forventer et JSON-objekt med egenskaben "power_w", f.eks. {"power_w": 1234}. Forskellige tællervariabler kan have forskellige emner og opdateres, så snart der offentliggøres en meddelelse under det tilsvarende emne.