Installer Mosquitto MQTT-broker og Zigbee2mqtt
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

Foto af Andy Stanford-Clark
Foto af Andy Stanford-Clark

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.

Let’s install Mosquitto 🙂

Det er heldigvis supernemt at installere en MQTT-broker i Hass. Vi hopper under vores Add-on store, som vi har gennemgået flere gange tidligere, søger efter “mosq” for at installere den officielle MQTT Mosquitto broker:

Billede uploadet af @db

Tryk på Install-knappen for at starte installationen - ja, så nemt er det faktisk... 🤭️😜

Billede uploadet af @db

Når installationen er færdig, kan du hakke-dakke et flueben i “Start on boot” og efterfølgende trykke på "Start"-knappen, så tjenesten starter op og bliver grøn som vist her.

🐶️ Du kan ydermere også aktivere Watchdog (Vagthund) så tjenesten automatisk bliver genstartet hvis den crasher - anbefales!

Billede uploadet af @db

Konfigurer MQTT op mod Home Assistant

Da vores nye MQTT-broker bruger Home Assistants indbyggede bruger-system til at autentificere brugere, laver vi en ny bruger specifikt til vores MQTT-tjenester. Jeg vælger at kalde min noget så simpelt som “mqtt”. Denne bruger skal vi taste ind i alle andre tjenester der skal kommunikere over vores MQTT-server, som bl.a. senere i denne artikel hvor vi installerer Zigbee2MQTT 🙂

👥 Se evt. min guide her om oprettelse nye brugere i Home Assistant.

Billede uploadet af @db

✅ Done! Så er vores MQTT-server klar til brug 🎉 Wuhuu - videre til Zigbee2mqtt.

Lad os installere Zigbee2mqtt

Da Zigbee2mqtt er community-dreven software, skal vi først tilføje et nyt Repository til vores Home Assistant. Det gør vi ved at trykke ind i vores Supervisor i sidemenuen → vælge Add-on Store og så klikke ind på “:”-knappen i toppen og vælg “Repositories“:

Billede uploadet af @db

Her skal du tilføje følgende repo til din Hass Add-on Store:

https://github.com/danielwelch/hassio-zigbee2mqtt

Billede uploadet af @db

Efter det er tilføjet, får du to nye software-komponenter i din Add-on store, zigbee2mqtt og zigbee2mqtt-edge. 

💡️ Vi installerer zigbee2mqtt versionen, medmindre du gerne vil prøve de seneste features 🪴️

edge-versionen er den nyeste beta-version, men jeg anbefaler at holde sig til den stabile- og lidt mere gennemtestede version, fremfor de seneste udviklingsversioner 😎 Men er du modig (eller oplever nogle mærkelige fejl, kan du altid prøve -edge versionen).

Billede uploadet af @db

Efter installationen af Zigbee2mqtt, skal du hoppe under fanen “Configuration” i toppen og indsætte det brugernavn og kodeord, som vi lavede i forrige afsnit til vores MQTT-broker server, i mit tilfælde var user: mqtt og pass: 123456 🃏️

I “server:” udfylder du som også vist på billedet herunder: mqtt://core-mosquitto:1883 og i user: og pass: udfylder du hhv. dit brugernavn mqtt og dit password, som forhåbentlig er lidt mere komplekst end 123456 😄

Billede uploadet af @db

Efter du har rettet konfigurationen og trykket “Save” for at gemme ændringerne, kan du nu starte din nye Zigbee2mqtt tjeneste. Husk at sikre “Start on boot” er slået til, ligesom med vores MQTT-broken og ligeså anbefaler jeg også Vagthund/Watchdog aktiveret.

Billede uploadet af @db

Når du har trykket på “Start”, er det altid en god idé at trykke ind i fanen “Log” for at sikre sig, at tjenesten starter korrekt op. Bemærk at vores “Log” ikke opdateres automatisk, derfor skal vi klikke på den lille “Refresh/Opdater”-knap i bunden af siden, for at opdatere log-filen løbende.

Hvis du ikke får nogle fejl, men en masse grønne linjer som her, er alt godt. Hvis du får en rød linje, er du nødt til at læse hvad fejlen er, og rette op på det den brokker sig over. Typisk vil fejlen være, at den ikke kan få forbindelse til din MQTT-server, hvis du f.eks. har indtastet forkert servernavn, brugernavn eller password:

Billede uploadet af @db

Tjek evt. også loggen på vores MQTT addon for at bekræfte i dennes log, at din Zigmee2mqtt er forbundet med success:

Billede uploadet af @db

✅ Done! Vi har nu installeret zigbee2mqtt og forbundet denne med vores MQTT-broker 🎉

Forbind MQTT med Home Assistant

Nu hvor vores to nye add-ons er kørende og spinder derudaf, skal vi integrere vores MQTT-broker ind i vores Home Assistant installation.

Dette gør vi for at kunne finde alle de enheder der kobles ind på vores MQTT via i dette tilfælde zigbee2mqtt.

Der findes mange andre enheder udover denne Zigbee-installation der benytter MQTT, f.eks. er det muligt at custom-flashe rigtig mange forskellige smart-plugs (bl.a. Sonoff) med open-source firmwaren Tasmota som også benytter MQTT, alt dette kan du også koble ind i samme MQTT-broker, og så vil enhederne automatisk poppe ind i dine Home Assistant - klar til brug 🍭 Kort fortalt: én MQTT-broken kan bruges til mange ting – ikke kun denne Zigbee2mqtt.

Åben Integrationer

Hop ind i Indstillinger -> Integrationer for at starte en ny integration med vores nye MQTT-broker:

Billede uploadet af @db

Her trykker du på " + Tilføj integration "-knappen i bunden og søger efter “mqtt” for at oprette en ny integration:

Billede uploadet af @db

På samme vis som tidligere, skal vi udfylde server-navn, brugernavn og kodeord. Værdierne udfyldes som her, dog med dit eget Brugernavn og Password, som du oprettede tidligere:

Billede uploadet af @db

Hvis alt går godt… så får du denne besked, og integrationen er gennemført:

Billede uploadet af @db

Tillykke 🙂 Du har nu gennemført denne guide og forhåbentlig har du en kørende MQTT og Zigbee2mqtt kørende nu.

Zigbee2mqtt har intet UI, derfor anbefaler jeg alle der starter ud med MQTT og Zigbee2mqtt at installere en ekstra komponent kaldetZigbee2mqtt Assistant, som kort fortalt er en brugergrænseflade til Zigbee2mqtt 🙂

Opdateringer, August 2021: Zigbee2mqtt har nu fået sit eget UI 🍾️ Så jeg har nu tilføjet et nyt afsnit herunder med dette, wuhuu 😄️

Zigbee2mqtt har fået en UI (2021-update)

Jubii - en god nyhed - Zigbee2mqtt har fået sit eget UI kaldet "Zigbee2mqtt Frontend" og det skulle gerne virke OOTB (out-of-the-box), Drip - som de unge siger 😜️

Hvis det ikke virker OOTB, så tjek afsnittet herunder, hvor du kan finde en kopi af hele min "Konfiguration", så du kan sammenligne med din "Konfiguration". Men som sagt burde alt virke ud-af-boksen på nye installationer 🤞😉 Hvis du har en gammel installation som du løbende har opdateret, kan det være følgende parametre mangler i din Konfiguration, i så fald, kan du nemt sætte den ind:

frontend:
  port: 8099

 

 ✅️ Slå "Vis i Sidepanel" til

Det første vi skal gøre, er at slå Sidepanels-ikonet til, så vi nemt kan komme til vores nye Zigbee-panel:

Billede uploadet af @db

Wupsi, nu har vi et fint nyt Zigbee-panel i siden, og vi kan nu klikke ind her, og styre hele vores awesome Zigbee-univers af enheder på tværs af producenter.

Billede uploadet af @db

Min Konfiguration

Som lovet herover er her en komplet kopi af mine konfiguration - dog er passwords og min network_key ændret. Som udgangspunkt burde du ikke få brug for denne, men er der noget der driller, kan du evt. sammenligne din opsætning med min. Du kan finde din egen konfiguration under Supervisor -> Zigbee2mqtt og "Konfiguration"-fanen i toppen:

data_path: /share/zigbee2mqtt
external_converters: []
devices: devices.yaml
groups: groups.yaml
homeassistant: true
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://core-mosquitto:1883
  user: mqtt
  password: navlefnuller32
serial:
  port: /dev/ttyACM0
advanced:
  log_level: info
  pan_id: 6754
  channel: 15
  network_key:
    - 1
    - 3
    - 5
    - 7
    - 9
    - 11
    - 13
    - 15
    - 0
    - 2
    - 4
    - 6
    - 8
    - 10
    - 12
    - 13
  availability_blocklist: []
  availability_passlist: []
device_options:
  qos: 2
  retain: true
blocklist: []
passlist: []
queue: {}
frontend:
  port: 8099
experimental:
  new_api: true
socat:
  enabled: false
  master: pty,raw,echo=0,link=/dev/ttyZ2M,mode=777
  slave: tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
  restartdelay: 1
  initialdelay: 1
  options: '-d -d'
  log: false

Du er ikke logget ind

Du skal være logget ind på rbx.dk før du kan benytte vores forum, kommentar og debat-systemer. Det er ganske gratis at oprette en bruger. Velkommen til 😄️

Opret en ny gratis bruger Log ind