Smart Home Projects vă vorbește despre MQTT în Home Assistant, pe înțelesul tuturor
În acest articol vom discuta despre MQTT broker & client și cum ajută acesta în Home Assistant.
MQTT este un protocol de mesaje, contruit peste TCP/IP, folosit în IoT în comunicarea dintre dispozitive. Pe scurt, modul de comunicare constă în 2 funcții principale pentru un dispozitiv:
- publică un mesaj – își anunță starea și își expune funcțiile suportate prin publicarea unui mesaj (payload) pe un anumit canal unic (topic);
- primește un mesaj – își actualizează starea, funcție de payload-ul primit pe topicul lui.
Avantajele acestui protocol sunt (nu te speria dacă nu-ți sunt clare):
- consumul redus de lățime de bandă pentru a trimite informații;
- oferă o comunicare bidirecțională între dispozitive;
- suportă milioane de dispozitive conectate simultan;
- siguranța trimiterii mesajele dpdv erori apărute în acest proces, pe 3 nivele diferite, în funcție de necesități (QoS);
- conexiuni persistente
- securitate – mesajele se pot trimite criptat TLS sau folosind metode de autentificare gen Oauth.
Structura client/broker, ai nevoie de:
- un client care să se conecteze la broker și să trimită informații pe anumite topicuri sau să asculte pe anumite topicuri. Exemplu de clienți Home Assistant prin integrarea MQTT, addon-ul Zigbee2mqtt, Z-Wave JS to MQTT etc.;
- un server care să gestioneze mesajele primite de la client, funcție de topicuri. Se poate folosi un server public MQTT sau cu ajutorul addon-ului open source Mosquitto Broker din HomeAssistant.
Exemplu
Să presupunem că avem un Broker MQTT la care se conectează 3 clienți MQTT (Zigbee2MQTT, Z-Wave JS to MQTT și Home Assistant) și device-urile fizice pe care vrem să le controlăm din HomeAssistant.

Să discutăm pe imaginea de mai sus și să vedem fiecare lucru ce rol are:
- la mijloc avem MQTT Broker care primește, stochează și transmite mesaje. Broker-ul se poate instala ca addon din HAHome Assistant;
- în stânga Zigbee2Mqtt care permite comunicarea dintre device-urile zigbee (în cazul nostru un termometru și un bec) și Broker. Are rol de client MQTT și se poate instala ca addon din HA. Pentru a face comunicarea cu device-urile zigbee pe frecvența de ~2,4 GHz este nevoie și de partea hardware, un stick USB gen Conbee II, Sonoff Dongle Plus 3.0, CC2531 etc.;
- sus Z-WaveJsToMQTT care permite comunicarea dintre device-urile z-wave (în cazul nostru un senzor de mișcare și o priză) și Broker. Are rol de client MQTT și se poate instala ca addon din HA. Pentru a face comunicarea cu device-urile z-wave pe frecvența de ~868 MHz este nevoie și de partea hardware, un stick USB gen Aeotec Gen5+ etc.;
- și în final, în dreapta avem Home Assistant pe care-l facem client de MQTT prin integrarea MQTT care este built-in.
Cum comunica toate acestea între ele folosind MQTT, să discutăm despre priza z-wave:
- addon-ul Z-Wave JS to MQTT comunică cu priza prin stick-ul USB și îi permite să se înregistreze. În timpul înregistrării priza comunică addon-ului toate feature-urile pe care le suportă (on/off, consum etc.);
- addon-ul Z-Wave JS to MQTT compune un mesaj prin care trimite la Broker, pe un topic nou (ex: zwave/priza), toate datele primite de la priză și încă un mesaj de tip MQTT Discovery pe un al doilea topic;
- HA ascultă mesajele de la Broker (prin integrarea MQTT) și primește acel mesaj MQTT Discovery, care instruiește HA să creeze entități noi cu proprietățile prizei și care este topicul la care să facă subscribe HA pentru a afla sau publica schimbările de stare pentru priză;
- mergem în HA la entitatea de priză prin care controlăm on/off și ii ziceam să fie ON;
- HA va publica mesajul în topicul la care a fost instruit mai sus sa publice schimbările de stare pentru priză;
- addon-ul Z-Wave JS to MQTT ascultă pe topicul de stare pentru priză, va primi comanda de ON și o va trimite mai departe la priza prin stick.
Cam așa se plimbă datele, prezentate într-un format minimalist. Ce m-a ajuta pe mine să urmaresc ușor ce se întâmplă în Broker-ul de MQTT este aplicația MQTT Explorer, care este de fapt un client MQTT care prezintă vizual topic-urile existente.
Faptul că addon-ul Z-Wave JS to MQTT poate funcționa și fără MQTT, că există și alte addon-uri pe care le puteți folosi în Home Assistant etc. nu fac subiectul acestui articol.