Indledning
I denne artikel vil jeg gennemgå installationen af to komponenter – Mosquitto MQTT-broker og Zigbee2mqtt. Men inden vi kaster os ud i installationen, lad mig kort forklare hvad de forskellige applikationer/komponenter gør – og hvad deres formål er 😄
Mosquitto MQTT broker
MQTT (Message Queuing Telemetry Transport) er en åben standard der meget kort fortalt transporterer meddelelser mellem enheder i et public-subscribe format (det kommer jeg ind på senere),. Og netop fordi det er en åben standard, betyder at der findes et hav af forskellige applikationer der understøtter MQTT.
Lidt historie om MQTT

Andy Stanford-Clark fra IBM og Arlen Nipper fra firmaet Cirrus Link byggede den første version af MQTT-protokollen tilbage i 1999. Den blev blev brugt til at overvåge en olieledning gennem ørkenen. Målet var at have en simpel og let protokol, der ikke krævede ret meget – hverken båndbredde eller strøm. Dengang var enhederne forbundet via en satellitforbindelse, og på det tidspunkt var det en meget bekostelig affære, så derfor var det vigtigt at kommunikationen fyldte så få bytes som muligt. MQTT er stadig meget brugt i dag, til at sende hurtige små beskeder på tværs af enheder, Zigbee bygger bl.a. på en variant af MQTT kaldet MQTT-SN, der er specielt bygget til IoT-enheder som ofte er batteridrevne og derfor strøm-følsomme.
MQTT består af 2 komponenter/niveauer, der er en sender (public) og en modtager (subscribe), hvilket gør MQTT til en såkaldt pub-sub protokol. En modtager (subscriber) kan lytte på en bestemt kanal, f.eks. “mqtt/lampe1”, og hver gang der sendes noget til den kanal, modtager lampen det – det kunne f.eks. være “turn_on”, “turn_off”, “dim” mv. Lige ligesom en walkie-talkie, hvor man indstiller begge walkie-talkies til f.eks. kanal 27, og så kan de snakke sammen, men kun en ad gangen kan snakke, mens den anden lytter.
Da vores Zigbee2mqtt system benytter MQTT til at sende signaler imellem enheder, skal vi bruge en MQTT-server, også kaldet en MQTT broker. Og Mosquitto er netop sådan en – en MQTT server som kan distribuere signaler mellem enheder som kobler sig ind på serveren.