MQTT är ett internetprotokoll med en central meddelandeförmedlare. Med denna meddelandeförmedlare kan deltagarna prenumerera på vissa "ämnen" och skicka meddelanden till ämnen. CFos Charging Manager kan lyssna på meddelanden om specifika ämnen och därmed styras via MQTT. Den kan också meddela status för de enheter som den hanterar. CFos Power Brain Wallbox kan också styras via MQTT och överföra sin status. Detta är användbart när du ansluter till ett hemautomationssystem, för industriell styrning (M2M) och för övervakning och inspelning. Alla ämnena börjar med cfos_mqtt
. Om du vill ansluta flera cFos MQTT-enheter till en MQTT-broker kan ämnet eventuellt börja med cfos_mqtt_<serienummer>/
, som kan justeras under konfiguration. I konfigurationen kan du också ange en URL för standard MQTT-mäklaren. URL:er kan eventuellt börja med mqtt://
och mqtts:
//. Med mqtts://
upprättar cFos Charging Manager eller cFos Power Brain Wallbox en TLS-anslutning. Standardportarna 1883 för okrypterade anslutningar och 8883 för TLS-anslutningar används. Du kan dock också ange en port i URL:en. Du kan ange användarnamn och lösenord i den vanliga URL-notationen, t.ex. mqtt://user:password@192.168.2.111.
Om du anger en MQTT-mäklare i konfigurationen av cFos Charging Manager kan du antingen ange en enskild mäklare eller helt enkelt skriva mqtt
. I det här fallet används den standardmäklare som finns lagrad i konfigurationen.
CFos Charging Manager stöder både MQTT 3.1.1 och MQTT 5. Om du låter webbadressen börja med mqtt3:// eller mqtt5:// (mqtts3:// och mqtts5:// för krypterad anslutning), bestämmer du protokollversionen. Standardvärdet är MQTT 3.1.1. cFos Charging Manager försöker växla tillbaka till MQTT 3.1.1 för MQTT 5 om ett felmeddelande visas. Detta fungerar med äldre Mosquitto-mäklare, men inte nödvändigtvis med andra mäklare.
Observera: Eftersom konfigurationen av MQTT kräver administratörslösenordet hanterar Charging Manager data på motsvarande sätt. Därför skickas medvetet data som endast kan nås med administratörslösenordet.
Notering om MQTT-mäklare: Tack vare Stefan G. (#diebestenuserderwelt) kunde vi testa MQTT-mäklaren som är inbyggd i ioBroker. Denna MQTT 3.1.1-mäklare beter sig (från och med februari 2023) på flera sätt som inte är standardkompatibla: Anslutningsförsök avslutas tyst utan felmeddelande, nyttolasten saknas ibland i PUBLISH-paket, PUBLISH-paket skickas tydligen två gånger (kan detta stängas av med en konfigurationsinställning?). Detta innebär att den här mäklaren inte är lämplig för kontroll av Charging Manager API, eftersom API-förfrågningar kan utföras mer än en gång. Även om vi är intresserade av att vår MQTT-implementation ska vara kompatibel med så många mäklare som möjligt, rekommenderar vi för närvarande att Mosquitto används för ioBroker.
Istället för att leverera dessa enheter via HTTP (se HTTP API -> HTTP-mätare och wallboxar) kan dessa enheter också lyssna på MQTT. Ange mqtt
eller en MQTT-broker-URL som enhetsadress. Därefter lyssnar motsvarande mätare eller wallbox på ämnet cfos_mqtt/set/<enhets-ID>
, t.ex. för en mätare med enhets-ID M1 till cfos_mqtt/set/M1
. Mätaren med HTTP-inmatning förväntar sig sedan en JSON-sträng som meddelande, enligt beskrivningen i HTTP API under "HTTP-mätare och wallboxar". Din MQTT-källa måste därför leverera data i detta format. På så sätt kan du integrera enheter som inte stöds av cFos Charging Manager genom att hämta data från en annan källa (t.ex. ett hemautomationssystem) och sedan mata in dem i Charging Manager.
Obs: Om data från källan är i ett annat format än det som HTTP-räknaren förväntar sig kan du också skapa en anpassad räknare. För MQTT beskrivs detta nedan.
Exempel: Du har skapat en HTTP-ingångsräknare och den har M3 som enhets-ID. Du har angett adressen till Mosquitto-mäklaren som adress, t.ex. mqtt://192.168.2.30. Om du anger följande kommando på kommandoraden på den dator där Mosquitto körs: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] }'
räknaren ska då innehålla ovanstående värden.
I Charging Manager-konfigurationen kan du ange en MQTT-mäklar-URL (eller mqtt för standardmäklare), under vilken Charging Manager sedan publicerar statusen för alla enheter under ämnet cfos_mqtt/get/dev_info
. Den överför detta i det format som är känt från HTTP get_dev_info. Detta ger dig alla värden för enheterna eftersom de också är synliga i användargränssnittet, t.ex. effektvärden för mätarna eller status för wallboxarna. Om du bara vill prenumerera på enskilda enheter kan du avaktivera kryssrutan "Publicera info via MQTT" och istället markera alternativet "Publicera info via MQTT" i inställningarna för de enskilda enheterna under "Display". Då publiceras en motsvarande JSON-sträng om respektive enhet under ämnet cfos_mqtt/get/<device-ID>. Dessutom kan du prenumerera på alla globala värden under rubriken cfos_mqtt/get/params
, eftersom de matas ut i det format som är känt från HTTP get_dev_info under "params".
I konfigurationen för cFos Charging Manager kan du ange en URL för en MQTT-mäklare (eller mqtt för standardmäklare) under "Mäklare för API-åtkomst via MQTT". Om detta värde inte är tomt prenumererar cFos Charging Manager på alla ämnen som börjar med cfos_mqtt/api/. Den tolkar sedan meddelanden under sådana ämnen som om ämnesnamnet vore en HTTP-URL som börjar med /cnf? och vidarebefordrar dem till HTTP API. Laddningshanteraren publicerar sedan svaret från HTTP API som JSON under ämnet cfos_mqtt/api_res. På så sätt har du nästan hela HTTP API under din kontroll via MQTT. Undantag är API-anrop som levererar långa JSON-svar. Exempel: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1
sätter Charging Manager-variabeln x till 1 med API-funktionen set_cm_var. Ett meddelande under cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
anger RFID 5678 för wallboxen med enhets-ID E1 (se även våra utökade RFID-funktioner).
Data som överförs via HTTP POST kan placeras i meddelandet under ämnet.
Exempel: Ändra regelbundet den maximala totala strömmen som är tillgänglig för Charging Manager:
Ange din mäklare under de allmänna Charging Manager-inställningarna under "Mäklare för API-åtkomst via MQTT" (eller helt enkelt mqtt om standardmäklaren som lagras under "Konfiguration" ska användas). Använd sedan MQTT och publicera till ämnet
cfos_mqtt/api/cmd=set_params
ett JSON-objekt med följande innehåll:
{"max_total_cur_prc": p}
där p är en indikation i procent på vilken del av den förinställda maximala totala strömmen som ska tas.
Observera: Vissa av HTTP API-anropen gör att Laddningshanteraren sparar konfigurationen. Om du utför dem för ofta kommer flashminnet (i cFos Power Brain eller cFos Wallbox Booster) eller SD-kortet i Raspberry att slitas ut. API-anropet "set_params" med den enda parametern "max_total_cur_prc" sparar därför inte parametrarna.
Om cFos Charging Manager inte är i läget "Load management", utan i läget "Observe", kan du använda MQTT för att själv ta kontroll över alla wallboxar. Detta gäller särskilt för cFos Power Brain-wallboxar som drivs som slavar i "Observe"-läget. För att göra detta måste du markera alternativet "Aktivera kontroll av wallboxar" under MQTT i inställningarna för Charging Manager. CFos Charging Manager lyssnar sedan på MQTT-ämnet cfos_mqtt/ctl
och förväntar sig meddelanden med ett JSON-objekt. Det här objektet har underobjekt med enhets-ID som namn som egenskaper. Underobjekten ser ut så här: {"cur": c, "ena": b, "wke": b, "phs": p}, där c är laddningsströmmen i mA och b kan vara sant eller falskt. "ena": false avaktiverar laddningen vid wallboxen, "wke": true försöker skicka ett "väck bilen"-kommando till wallboxen (för närvarande endast möjligt med cFos Power Brain-wallboxar). p kan vara 1 eller 3 för att växla mellan 1-fas- och 3-fasladdning. Du kan också utelämna "cur", "ena", "wke" och "phs" och på så sätt endast utföra vissa kontrollfunktioner.
Exempel: {"E1":
{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000, phs: 3}}
Ställer in laddningsströmmen för wallboxen med enhets-ID till 8A, aktiverar laddningen och försöker väcka bilen. Dessutom ställs laddningsströmmen för wallbox E2 in på 10A och växlas till 3-fasladdning.
Du kan ange en MQTT-mäklar-URL för överföring av loggposter i systemloggen under "Configuration" (Konfiguration). CFos Charging Manager publicerar sedan alla loggposter under ämnet cfos_mqtt/log
. På så sätt kan du övervaka loggarna i Charging Manager på distans. Du kan också ange en MQTT-mäklar-URL för transaktionsloggposter under "Configuration" (konfiguration). Därefter skickas alla avgiftstransaktioner till ämnet cfos_mqtt/ta_log
. Detta gör det möjligt att på distans utvärdera bokföringsuppgifter om avgiftstransaktioner och skapa säkerhetskopior av avgiftstransaktioner i ett annat system. En laddningstransaktion börjar när laddningspluggen är inkopplad och slutar när den är urkopplad.
Du kan skapa egna räknare med rtype = 2 för MQTT. Dessa räknare definieras på samma sätt som HTTP-räknare (rtype = 1). Adresserna här är dock inte HTTP-URL:er utan MQTT-ämnen.
Exempel: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
Här prenumererar den användardefinierade räknaren på ämnet /test_topic3 och förväntar sig ett JSON-objekt med egenskapen "power_w", t.ex. {"power_w": 1234}. Olika räknarvariabler kan ha olika ämnen och uppdateras så snart ett meddelande publiceras under motsvarande ämne.