Uiteraard heb je nog meer van dit soort projecten die een specifiek type smarthomeapparaten met MQTT koppelen, maar we kunnen ze in dit artikel niet allemaal behandelen. Uiteindelijk versturen dan al je apparaten boodschappen naar MQTT-topics en kun je zelf ook je apparaten aansturen door boodschappen naar MQTT-topics te sturen. Maar hoe automatiseer je dat nu? Een handig project daarvoor is Node-RED, dat je ook als Docker-container op je Raspberry Pi kunt draaien. In de documentatie vind je een Docker Compose-bestand, maar het kan al eenvoudiger met:
services:
node-red:
image: nodered/node-red
container_name: node-red
restart: always
volumes:
- ./containers/node-red:/data
- /etc/localtime:/etc/localtime:ro
ports:
- "1880:1880"
Nadat je de container hebt gestart, is de webinterface van Node-RED beschikbaar op http://IP:1880.
Node-RED is een low-codeprogrammeeromgeving waarmee je allerlei api’s en diensten aan elkaar koppelt. Je schrijft geen code, maar verbindt ‘nodes’ in een ‘flow’. In de zijbalk links vind je alle beschikbare nodes, waarvan er standaard al veel zijn.
MQTT-nodes
Zo vind je onder 'network' de node 'mqtt in', waarmee je op een MQTT-topic inschrijft en de binnenkomende boodschappen verwerkt. Als je zo’n node naar je canvas versleept en de eigenschappen ervan bewerkt, klik dan bij 'Server' naast de optie 'Add new mqtt-broker…' op het potlood. Hier vul je de hostname en andere verbindingsparameters van je MQTT-broker in. Zodra de brokerconfiguratie is toegevoegd, kun je in de eigenschappen van de node het topic invullen waarnaar deze node luistert.
Op dezelfde manier kun je een node 'mqtt out' toevoegen, die zijn invoer als boodschap naar een ingesteld MQTT-topic stuurt. Zo kun je ook opdrachten naar smarthomeapparaten sturen via MQTT en zaken automatiseren.
In Node-RED lees je eenvoudig MQTT-boodschappen in.
MQTT-dashboard
Node-RED is ook handig om een eenvoudig dashboard voor je apparaten te maken. Daarvoor moet je eerst de extra node node-red-dashboard installeren vanuit het hamburgermenu en dan 'Manage palette'. Je maakt dan een mqtt in-node aan die naar een topic als 'bt-mqtt-gateway/ruuvitag/slaapkamer/temperature' verwijst, en aan die node koppel je bijvoorbeeld een node 'gauge' uit de collectie 'dashboard'. In de eigenschappen van het metertje voeg je dan een dashboardgroep toe, die verschillende dashboardwidgets groepeert, en een tab.
Je kunt allerlei instellingen van de gaugenode aanpassen, zoals label, eenheden, bereik en kleurgradiënt. Nadat je zo allerlei gauges hebt toegevoegd, klik je op 'Deploy' bovenaan in Node-RED en krijg je je dashboard te zien op http://IP:1880/ui/. De metertjes in het dashboard worden continu bijgewerkt met de nieuwste sensorwaardes die via MQTT worden ontvangen.
Een eenvoudig dashboard voor je MQTT-boodschappen is in Node-RED snel gemaakt.
Conclusie
Door allerlei domoticadiensten in Docker-containers te draaien op een Raspberry Pi, houd je het beheer ervan eenvoudig en flexibel, en zitten ze elkaar niet in de weg. Laat je ze allemaal via MQTT met elkaar communiceren, dan heb je ook één protocol om je apparaten op dezelfde manier aan te spreken. Bovendien hoeven al die diensten niet op dezelfde Raspberry Pi te draaien, zolang ze maar via dezelfde MQTT-broker communiceren.
Voor een dashboard en automatisering moet je dan wel zelf nog al die systemen aan elkaar knopen. Node-RED is daarvoor een krachtige oplossing. Dat is wat meer werk dan bij een geïntegreerd systeem als Home Assistant, maar je hebt wel meer flexibiliteit. In het volgende en laatste artikel van deze reeks gaan we in op de beveiliging van je smarthome.