- Förklara TCP/IP, UDP, MQTT och LoRa i en IoT-lösning.
- Skilja mellan publisher, broker och subscriber.
- Bygga och dokumentera ett första MQTT-flöde.
Allt börjar med ett mätvärde
En temperatursensor mäter 21,7 °C. För att värdet ska bli användbart behöver det nå ett annat program. Under kursen följer du just den resan: från nätverk och meddelanden, via API:er och datakontrakt, till ett säkert system som klarar avbrott.
IP-adressen pekar ut ett nätverksgränssnitt och porten hjälper trafiken att hitta rätt tjänst. MQTT använder normalt TCP, som levererar en ordnad byte-ström och skickar om förlorade data. UDP skickar i stället avgränsade datagram utan garanti för leverans eller ordning.
Tre roller, ett gemensamt språk
I MQTT publicerar en publisher ett meddelande till en broker. Brokern förmedlar meddelandet till de subscribers som prenumererar på det aktuella ämnet, ett topic. Sensorn behöver alltså inte känna till vilka som ska läsa värdet.
- Publisher: producerar och skickar mätvärdet.
- Broker: tar emot och förmedlar meddelanden.
- Subscriber: prenumererar på och konsumerar data.
Topic: iot25/min-grupp/sensor/temperatur1
Payload: {"sensorId":"temp-01","value":21.7,"unit":"C"}Topics, leverans och senaste värdet
Snedstreck skapar en hierarki av topics. Prenumerationen iot25/# följer alla nivåer under iot25. Payload är själva innehållet och kan exempelvis vara JSON.
QoS 0 innebär högst en leverans utan kvittens. QoS 1 innebär minst en leverans och kan ge dubbletter. QoS 2 ger exakt en leverans inom MQTT:s protokollutbyte men kräver mer trafik; det garanterar inte att en hel kedja av externa system utför en affärshändelse exakt en gång.
Retained betyder att brokern sparar det senaste retained-meddelandet för ett topic och ger det till nya matchande prenumeranter. Det är inte en historik över alla mätningar.
Var kommer LoRa in?
LoRa är radioteknik för små datamängder över långa avstånd med låg energiförbrukning. En batteridriven sensor kan skicka via LoRa till en gateway, som förmedlar data över IP och MQTT. LoRa och MQTT fyller olika roller och kan ingå i samma lösning.
Prova själv
Ta med ämnet in i ditt eget IoT-case. Dokumentera vad du upptäcker.
- Skapa ett Git-repository med en README och en enkel skiss över sensor, broker och mottagare.
- Installera Mosquitto enligt dess dokumentation och starta en lokal broker. Använd localhost och port 1883 för den lokala övningen.
- Starta en subscriber på iot25/min-grupp/sensor/temperatur1. Publicera JSON-exemplet på samma topic.
- Kontrollera topic och payload hos mottagaren. Prova ett felaktigt topic, beskriv resultatet och gör en commit.
Testa dina kunskaper
Stanna upp en stund. Vad har fastnat?
Fortsätt vara nyfiken
Originalmaterial och utvalda källor för dig som vill gå djupare.
Föreläsningsbilder · Ämne 1Joakim Englund · Systementor AB · PDF på svenskaMQTT: topics, QoS och retainedEclipse Mosquitto · EngelskaEtt steg närmare helheten.
Markera ämnet när du känner dig redo.