MQTT

MQTT (Message Queuing Telemetry Transport) wordt liefkozend Mosquitto genoemd. Het is een lichtgewicht protocol voor het uitwisselen van berichten tussen apparaten onderling en software. Het wordt vaak gebruikt voor IoT (Internet of Things) omdat het efficiënt omgaat met netwerkgebruik en energieverbruik.

Begrippen

Broker De centrale server die berichten ontvangt en doorstuurt naar de juiste ontvangers (clients).

Clients Apparaten of software die met de broker communiceren. Ze kunnen berichten publiceren (verzenden) of abonneren (ontvangen).

Topics Labels of kanalen waaraan berichten gekoppeld zijn. Bijvoorbeeld:
mijnhuis/keuken/temperatuur.

Publish Een client stuurt een bericht naar een specifiek topic.

Subscribe Een client schrijft zich in op een topic om berichten over dat onderwerp te ontvangen.

QoS (Quality of Service) Niveaus van betrouwbaarheid bij het verzenden/ontvangen van berichten. Standaard werk je bij HA met QoS 0, wat betekent dat verzonden gegevens verdwijnen ook als er niemand ‘luisterde’ (Fire and forget). QoS 1; berichten worden net zo lang (opnieuw) verzonden tot de broker aangeeft het te hebben gehad. In dit proces kan het antwoord van de broker laat of niet aankomen bij de verzender, die het dan dus opnieuw verstuurt, maar dat kan dus leiden tot meermaals hetzelfde bericht bij de abonnees. Soms is dat onwenselijk. Daarom is er QoS 2 waarbij een veel ingewikkelder communicatie er voor zorgt dat elke abonnee elk bericht precies één keer ontvangt.

Installatie

Installeren is simpel als je weet hoe het moet. Installeer eerst de Add-on (Zie Add-on), dan de Integratie (zie Integratie), ga je bijvoorbeeld een slimme meter koppelen of wil je met Node-Red of externe data aan de gang? Dan is het slim om een extra gebruiker aan te maken in Home Assistant voor MQTT (Zie Extra gebruiker aanmaken soms nodig).

Add-on

Ga naar Instellingen -> Add ons en dan naar de Add on winkel en zoek naar MQTT. Let op, er zijn meerdere MQTT Add-ons, maar je moet deze hebben:

Zet Start bij opstarten en Watchdog aan en start de add-on.

Integratie

Je hebt nu de Add-on geïnstalleerd, maar er is nog geen koppeling met Home Assistant. Daarvoor installeer je de integratie.

Ga naar instellingen -> aparaten en diensten. Je staat nu op de tab Integraties en waarschijnlijk geeft Home Assistant aan dat MQTT is gevonden als apparaat.

Klik op toevoegen en bevestig de volgende schermen. Daarna staat MQTT in de lijst verder naar beneden. Verdere configuratie is niet nodig. Wel kun je met de integratie zien of er gegevens binnenkomen op MQTT, wat in dit stadium vreemd zou zijn, want je hebt nog geen zendend apparaat toegevoegd.

Als je de integratie opent zie je een deel dat gaat over verzenden (publiceren) en een deel dat gaat over ontvangen (luisteren).

Klik in het onderste deel op Onderwerp en typ “#” (een hekje), dat betekent ‘alles’. Klik dan op Begin met luisteren.

Verzin dan (bovenin) een onderwerp en een bericht en druk op Publiceer, je ziet onderaan dat je je eigen bericht ontvangt. Dit heeft natuurlijk geen nut, behalve dat je ziet dat het werkt. Onderwerpen (topics) kunnen dus bestaan uit meerdere delen met een slash ertussen.

Bijvoorbeeld:
mijnhuis/verlichting/tuinlamp
Zo’n topic is als een postvakje waarin zenders boodschappen kunnen sturen. Abonnees kunnen zich op deze topics abonneren.

ZiggBee apparaten kunnen meestal werken via MQTT. Het voordeel is dat via MQTT vaak veel meer eigenschappen van het apparaat kunnen worden gebruikt. Wil je je Zigbee-devices via MQTT gebruiken, dan heb je wel een ZiggBee-dongel nodig die MQTT ondersteunt, zoals de SONOFF Zigbee 3.0 USB Dongle Plus.

Extra gebruiker toevoegen soms nodig

Voor sommige toepassingen is het nodig (of handig/veiliger) om een extra gebruiker toe te voegen aan Home Assistant. In principe kun je daarvoor je hoofdgebruikersaccount gebruiken, maar wat betreft veiligheid is dat een slecht idee. Maak een aparte gebruiker aan voor dit doel die precies genoeg kan. Deze gebruiker kan worden gebruikt door MQTT-apparaten om te koppelen aan de broker en gegevens door te sturen. Let op, je hoeft dus hiervoor geen PERSOON aan te maken.

Ga naar Instellingen -> Personen. Klik dan op het tabblad Gebruikers en klik op de knop onder in de hoek: Gebruiker toevoegen.
Geef de gebruiker een naam, bijvoorbeeld “mqtt”. Vul een sterk wachtwoord in en noteer deze (bijvoorbeeld in je wachtwoord-manager). Zet Alleen lokale toegang aan en Beheerder uit. Zo kan dit account niet te veel en is het niet van buitenaf benaderbaar, maar wel vanaf je eigen netwerk.

Een voorbeeld

Een slimme meter (voor stroom en/of gas) stuurt gegevens door via MQTT. De meter logt in op de broker en publiceert berichten naar verschillende topics. De Broker is gekoppeld met Home Assistant en heeft zelf geen gebruikers-systeem. Het gebruikt HA om mensen en apparaten te laten inloggen. Alle gebruikers van Home Assistant hebben via de intergratie namelijk automatisch toegang tot de broker. Aparaten geven bij de broker aan dat ze willen inloggen, maar achter de schermen gebruikt de Broker dus Home Assistant daarvoor. Je zou dus de gegevens van elke HA-gebruiker kunnen opgeven, maar zorg dat deze niet te veel kan, zoals de eigenaar.

Een voorbeeld van een topic van de slimme meter is het huidige stroomverbruik in kW. De meter stuurt bijvoorbeeld elke 10 seconden een actuele waarde. Daarnaast kan de meter elk uur de gasmeterstand doorgeven. Hoe vaak en wanneer de meter gegevens doorstuurt, hangt af van de instellingen van de meter of is vooraf bepaald door de fabrikant.

De meter bepaalt dus wanneer nieuwe gegevens worden gepubliceerd naar de broker. Andere apparaten of software kunnen zich abonneren op deze topics. Zo kun je de gegevens ook in Home Assistant gebruiken en verwerken in automatiseringen of dashboards.

Zigbee apparaten toevoegen

Nu wil je waarschijnlijk ZigBee-apparaten gaan toevoegen. Daarvoor gebruik je weer een andere integratie: Zigbee2MQTT.