MQTT (Message Queuing Telemetry Transport) er en lettvekts protokoll for maskin til maskin kommunikasjon.
Av den grunn er den blitt veldig populær i smarthus sammenheng og er supportert av mange smarthus systemer.
Vi skal bruke den her for å kommunisere med en ESP32 for å lage devicer som kan styres med smarthuset.
Det finnes masse fine artikkler som diskuterer MQTT så google dem selv. Mitt hode forenkler det slik:
- Du setter opp en MQTT Broker som er et program som kjører kontinuering på en PC eller en Raspberry PI eller tilsvarende. Alle Clientene sender meldinger til denne og den videresender meldinger til dem som har bedt om det.
- Når en device (MQTT Client) starter, kobler den seg opp til Brokeren ved å vite IP addressen (og noen ganger brukernavn/passord) og port nummeret til Brokeren. (Ligger i kode på samme måte som SSID og passord til WiFien) Den gir også brokeren "navnet" sitt (ClientID)
- Når Klienten har fått kontakt med Brokeren sier den ifra hvilke meldinger den ønsker å motta. Vi sier at den abonnerer på et topic.
- Navnet på meldingene gis på formen meldingsnavn /underMeldingsnavn og navnet kan utvides med flere nivåer på formatet hovedMeldingsnavn/underMeldingsnavn/underUnderMeldingsnavn osv.
- En kan også bruke # og + som wildcards for å anngi en gruppe meldinger.
- Når en klient sender en melding til Brokeren gir den den et topic navn på dette formatet.
- Så om Klient1 abonnerer på meldinger av typen hus/Baderom/vifte og klient2 sender en melding til Brokeren med topic hus/Baderom/vifte vil Brokeren sende denne videre til klient1 (og alle andre klienter som abonnerer på dette topicet)
- For å folge med i det som skjer kan du koble deg til Brokeren med en klient som sier han vi ha beskjed om ALLE meldingene, en "MQTT Debugger" eller en "MQTT Explorer"
For at vi skal kunne bruke MQTT til å la ESP32en snakke med Smarthus systemet må vi altså ha en MQTT Broker.
Noen smarthus-systemer har slike innebygget (jeg bruker mscMQTT pluginen i HomeSeer) andre ønsker å ha dem separat kjørende på en Rasberry-PI eller som en service på en (smarthus) PC.
Jeg overlater til dere å velge en løsning som passer for dere, men for testing tar vi med hvordan du setter opp en enkel MQTT broker:
Mosquitto er en open source MQTT Broker (kan også kjøre som klient om nødvendig) som du kan laste ned herfra:
https://mosquitto.org/download/
Kjør install men dersom du ikke har tenkt at den skal kjøre i bakgrunn på PCen din som en service, tar du bort krysset på "Service".
Når den er ferdig med å installere pleier jeg å flytte mosquitto mappen fra Program Filer til C:\ for å slippe alt bråket når jeg skal editere filer.
- Gå til mappen og rename mosquitto.conf til mosquitto.conf-orginal
-
Lag en ny fil med navnet mosquitto.conf og legg disse linjene i den:
listener 1883
allow_anonymous true -
Lag en ny fil start.bat og legg disse linjene i den:
ipconfig
mosquitto -v -c mosquitto.conf - Dobbelklikk denne filen og du skal få opp et vindu som dette:
Du har nå en MQTT broker kjørende på den IP adressen som vises, og som viser all aktivitet som skjer i den DOS boksen.
Før vi kaster oss på å sende meldinger til den med en ESP32 skal vi teste litt med MQTT Explorer:
Jeg bruker MQTT Explorer som du finner her:
https://mqtt-explorer.com/
Last den ned og start opp.
Skriv inn IP adressen til Brokeren under HOST og trykk Connect. Du skal nå få opp et bilde som dette:
Vi kan nå sende en medling til Brokeren og se den ankomme:
I Mosquitto vinduet vil du se det raser forbi meldinger men du vil også se at meldingen mottas (Gul) og deretter sendes videre til(bake) til MQTT Exploreren (Grønn)
I neste Guide; ESP32/MQTT Det første programmet skal vi bruke ESP32'en til å sende og motta meldinger og følge med på meldingene på denne måten.
Anbefalte kommentarer
Det er ingen kommentarer å vise.
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.