När man talar om anslut miljontals IoT-enheter För pålitlig, lätt och säker kommunikation är namnet som alltid dyker upp detsamma: MQTT. Detta protokoll har blivit en nyckelkomponent för sensorer, industriella gateways, smarta hemenheter och molnplattformar för att kommunicera utan att överbelasta nätverket eller öka energiförbrukningen.
Långt ifrån att bara vara "ytterligare ett protokoll", MQTT passar perfekt med de verkliga behoven hos sakernas internetInstabila nätverk, löjligt låg bandbredd, mycket begränsad hårdvara, krävande industriella miljöer eller applikationer i nära realtid som cyberfabriker, energitelemetri eller avancerad hemautomation. Låt oss ta en lugn och detaljerad titt på hur det fungerar, vilken roll det spelar i IoT-anslutning, vad en MQTT-gateway är och i vilka specifika fall det är mer meningsfullt att använda den jämfört med andra alternativ.
Vad är MQTT och varför har det blivit så populärt inom IoT?
MQTT (Message Queuing Telemetry Transport) är en lätt, öppet standardmeddelandeprotokoll Specifikt utformad för maskin-till-maskin-kommunikation (M2M) och i förlängningen för sakernas internet. Dess mål är mycket tydligt: att kunna skicka och ta emot data mellan enheter även om nätverket är dåligt, bandbredden är begränsad och enheten har väldigt lite minne eller datorkraft.
Till skillnad från den klassiska klient-server-modellen använder MQTT en publicerings-/prenumerationsarkitektur Den är baserad på en central mellanhand som kallas en mäklare. Enheter kommunicerar inte direkt med varandra, utan publicerar istället meddelanden i specifika ämnen och prenumererar på ämnen av intresse. Mäklaren ansvarar för att ta emot alla dessa meddelanden, filtrera dem och leverera dem till lämpliga klienter.
Detta arbetssätt gör MQTT extremt flexibel och skalbarIstället för att ha hundratals eller tusentals svårhanterliga punkt-till-punkt-anslutningar, orkestreras allt genom brokern, som kan hantera allt från ett fåtal enheter till miljontals, beroende på implementering och tillgängliga resurser.
Viktiga tekniska funktioner hos MQTT för IoT
Lätt och effektivt protokoll
En av de främsta anledningarna till att MQTT är så populärt inom IoT är att det är löjligt lättImplementering på enheten kan kräva väldigt lite kod och väldigt få resurser, vilket gör den idealisk för enkla mikrokontroller, billiga sensorer eller batteridriven utrustning.
Ett MQTT-kontrollmeddelande i sin minimala version kan ha bara två byte dataDessutom är meddelanderubrikerna mycket kompakta, vilket minimerar kommunikationskostnader. Denna design är perfekt för scenarier med liten bandbredd eller dyra nätverk (som vissa mobilnät eller LPWAN), där varje byte räknas.
Jämfört med tyngre protokoll, som HTTP med dess komplexa förfrågningar och utförliga rubriker, tillåter MQTT för att optimera användningen av nätverketDetta är avgörande när tusentals enheter kommunicerar med några sekunders mellanrum.
Publicerings-/prenumerationsmall med ämnen
MQTT är baserat på en modell av publikation/prenumeration om ämnenDet här är textsträngar (i UTF-8) som organiserar information i nivåer. I ett smart hem kan vi till exempel ha:
- hus/vardagsrum/temperatur
- hus/kök/rök
- hus/garage/dörr
En temperatursensor i vardagsrummet skulle skicka sina avläsningar till ämnet hus/vardagsrum/temperaturMedan en övervakningsapplikation skulle prenumerera på samma ämne för att ta emot alla inkommande meddelanden. På så sätt är det lika enkelt att lägga till nya enheter eller datakonsumenter som använd lämpliga ämnenutan att behöva ändra den befintliga infrastrukturen.
Det här systemet, även om det inte direkt är en klassisk meddelandekö, är ganska likt köbaserade modeller: enheter genererar meddelanden och skickar dem till en central punkt (mäklaren), och skickar sedan Bearbetningssystemen förbrukar den informationen enligt deras behov. Detta gör det mycket enklare att skala upp systemet genom att öka antalet konsumenter utan att byta sensorer.
Tjänstekvalitet (QoS) och tillförlitlighet
Många IoT-enheter ansluts via nätverk med hög latens, låg bandbredd och begränsad tillförlitlighetsåsom ojämna mobilnät eller överbelastade trådlösa länkar. MQTT innehåller en rad mekanismer för att säkerställa meddelandeleverans i det sammanhanget.
Protokollet definierar tre nivåer av servicekvalitet (QoS):
- QoS 0 – “högst en gång”Meddelandet skickas bara en gång, utan bekräftelse. Det är den snabbaste och enklaste metoden, men vissa meddelanden kan gå förlorade.
- QoS 1 – “minst en gång”Detta säkerställer att meddelandet kommer fram, även om det kan komma fram dubblerat. Ett bekräftelsesystem används för att garantera leverans.
- QoS 2 – “exakt en gång”Detta är den mest robusta nivån. Den säkerställer att varje meddelande levereras en gång och endast en gång, med hjälp av en fyrfasigt handslagDet är lite tyngre, men nödvändigt i vissa känsliga fall.
Tack vare dessa QoS-nivåer kan MQTT anpassas till olika användningsfallfrån telemetri där ingenting händer om en specifik dataenhet går förlorad, till kritiska system där det är oacceptabelt att duplicera eller förlora ett meddelande.
Hantering av återanslutningar och instabila nätverk
En annan fördel är att MQTT är utformat för miljöer med frekventa frånkopplingarProtokollet innehåller funktioner som minskar den tid det tar för en enhet att återansluta till brokern, vilket är viktigt på mobil- eller Wi-Fi-nätverk av tvivelaktig kvalitet; vilket förbättrar säker WiFi-anslutning kan komplettera dessa förmågor.
Dessutom kan brokern hantera lagrade meddelanden, sessionstillstånd och andra funktioner som tillåter enheter återuppta kommunikationen utan att förlora sammanhang varje gång nätverket går ner och kommer på igen.
Säkerhet och kryptering
Inom IoT är säkerhet inte valfritt. MQTT har stöd för kryptering och autentisering Förlitar sig på moderna protokoll: TLS 1.3 kan användas för att kryptera kanalen, autentisera via klientcertifikat, OAuth och andra tekniker som är vanliga i affärs- och molnmiljöer.
Detta gör att meddelanden kan krypteras under överföring och tillämpas Åtkomstkontroller om vem som kan publicera eller prenumerera på vissa ämnen, och skydda både informationens sekretess och integritet, något som är särskilt relevant inom industri-, energi- eller hälsovårdsmiljöer.
Omfattande stöd för olika språk och plattformar
MQTT har mogna implementeringar av mäklare och kunder på flera språk (Python, C, C++, Java, JavaScript, Go, etc.) och med en mycket aktiv community. Detta gör det enkelt för utvecklare att integrera IoT-enheter med befintliga system, databaser, Big Data-verktyg eller molntjänster utan att behöva uppfinna hjulet på nytt.
Att vara ett protokoll med öppen källkod väl beprövade bibliotekInlärningskurvan är relativt kort och risken för kompatibilitetsproblem minskar, vilket gör det mycket attraktivt för projekt som sträcker sig från små prototyper till massiva implementeringar.
MQTT-mäklarens roll i IoT-arkitekturen
Mäklaren är den kärnan i alla MQTT-baserade arkitekturerDet är den komponent som tar emot alla meddelanden, bearbetar dem och distribuerar dem till klienter som prenumererar på motsvarande ämnen.
Bland dess huvudfunktioner är:
- Ta emot information publicerade av klienter (sensorer, gateways, applikationer etc.).
- Avkoda och filtrera meddelanden beroende på ämne, QoS-nivå eller säkerhetsregler.
- Bestäm vilka kunder som är intresserade i varje meddelande (enligt dina prenumerationer).
- Skicka meddelanden till målkundernarespektera QoS- och auktoriseringspolicyer.
Det finns flera mäklarimplementeringar, båda öppen källkod såväl som kommersiellEn av de mest kända är Mosquitto, som används flitigt i hemmiljöer, hos tillverkare och även i mer seriösa implementeringar, och som möjliggör hantering av allt från några få till tusentals klienter med en relativt enkel konfiguration.
MQTT i praktiken: Arduino, ESP8266 och lokala nätverk

I många hem- eller semiprofessionella IoT-projekt innebär ett ganska typiskt scenario att man har en MQTT-mäklare som körs på en Raspberry Pi eller en PC inom det lokala nätverket och olika enheter som t.ex. Arduino med Arduino IoT Cloud Remote-appen eller ESP8266 anslutna som klienter.
Till exempel kan du ha en Arduino med en DHT22-temperatursensor som skickar periodiska avläsningar till ett ämne som hus/vardagsrum/temperaturSamtidigt prenumererar en annan Arduino eller en mobilapp på samma tema för att visa temperaturen i realtid. Brokern, i det här fallet Mosquitto, ansvarar för att ta emot meddelanden från den första Arduinon och leverera dem till den andra, utan att de behöver känna varandra eller hantera en direkt anslutning.
Denna arkitektur har en stor fördel: Den är skalbar nästan utan ansträngningDu kan lägga till fler sensorer, fler datakonsumenter och ansluta dem till databaser, maskininlärningssystem eller visualiseringsinstrumentpaneler utan att ändra beteendet hos redan distribuerade enheter. Du behöver bara experimentera med ämnen och prenumerationer.
Varför MQTT och inte bara HTTP?
En mycket vanlig fråga är om det verkligen är värt att använda MQTT när man till synes skulle kunna lösa allt med direkta HTTP-förfrågningar till en ESP8266 eller liknande, genom att öppna en port på routern och det är allt, eller till och med med WebSockets på Android.
Svaret är att MQTT, även om det är tekniskt möjligt, erbjuder flera viktiga fördelar:
- Lägre genomsnittlig latens och mindre overhead vid frekvent kommunikation, särskilt med korta meddelanden som skickas med några sekunders mellanrum.
- Native Pub/SubMobiltelefonen behöver inte kommunicera direkt med varje enhet; den behöver bara kommunicera med mäklaren.
- Centraliserad säkerhets- och autentiseringshantering på mäklaren, istället för att replikera logiken på varje enhet.
- Enkel skalningOm du imorgon går från 5 till 500 enheter behöver du inte öppna 500 portar eller designa om hela topologin.
- Inbyggt stöd för återanslutningar och QoS tänker på instabila nätverk, något som HTTP inte erbjuder som standard.
I ett typiskt scenario skulle din mobilapp ansluta till MQTT-brokern (antingen inom LAN med portvidarebefordran eller till en molnbroker), publicera ett meddelande till ett kontrollämne (till exempel hus/vardagsrum/lampa/set), och ESP8266, som prenumererade på det ämnet, skulle ta emot kommandot nästan omedelbart. Du behöver bara avslöja mäklaren.inte alla enheter i nätverket.
Angående tjänster som io.adafruit.com och deras aktiveringsintervall (var 15:e minut i gratisversionen, var 5:e sekund i betalversionen) är det begränsningar för den specifika tjänstenDet är inte MQTT-protokollet i sig som är problemet. Protokollet i sig tillåter mycket låg latens; problemet är att leverantören inför gränser för användningsfrekvens.
MQTT Gateway: porten mellan sensorer och molnet
Vad är en MQTT-gateway?
Den så kallade "MQTT Gateway" eller MQTT-gatewayen är i huvudsak en mellanliggande enhet mellan sensorerna eller lokala enheter och IoT-plattformen eller MQTT-mäklarenDess huvudsakliga funktion är att samla in data i olika protokoll (t.ex. Bluetooth, trådbundna sensorer, Modbus, etc.), konvertera dem till MQTT och skicka dem till molnet eller till en central broker.
I många fall implementeras en MQTT-gateway som en Ethernet-gateway med specifik programvara som fungerar som en MQTT-klient. Denna gateway kan ha radiogränssnitt, industriella ingångar och utgångar, eller fältbussanslutning, och ansvarar för att översätta allt detta till MQTT-språket för att förena dem.
Fördelar med en MQTT-gateway (inklusive Bluetooth MQTT)
MQTT-baserade gateways, särskilt de som integrerar Bluetooth, erbjuder flera intressanta fördelar:
- Mycket lätta meddelandenvilket gör kommunikationen effektiv även med många sensorer som skickar data samtidigt.
- TvåvägsmeddelandenDe tillåter både moln-till-enhet- och enhet-till-moln-kommunikation, inte bara upplänkstelemetri.
- Pålitlig leverans stöds av QoS-nivåer, vilket säkerställer att meddelanden anländer enligt den konfigurerade garantinivån.
- inbyggd säkerhetGateways stöder vanligtvis TLS-kryptering och certifikatautentisering, så data som passerar genom gatewayen når molnet på ett säkert sätt.
I fallet med a MQTT Bluetooth-gatewayEnheten skannar och detekterar alla BLE-sensorer inom räckhåll, hanterar kommunikationen med dem och centraliserar dataöverföringen till MQTT-mäklaren. Ur IoT-plattformens perspektiv "talar" alla dessa Bluetooth-sensorer MQTT, trots att de faktiskt gör det via gatewayen.
Hur en MQTT-gateway fungerar och hur man konfigurerar den
Generellt sett är det typiska flödet för en MQTT-gateway:
- Skanna och upptäck sensorer och enheter inom räckhåll (t.ex. via Bluetooth eller trådbundna nätverk).
- Samla in data från dessa sensorer via motsvarande protokoll.
- Översätt den informationen till MQTT-format (med definition av lämpliga ämnen och nyttolaster).
- Publicera informationen på mäklaren eller på den valda IoT-plattformen.
Konfigurationen av en fysisk gateway involverar först hårdvarumonteringKorrekt kabeldragning, separation mellan sensoranslutningar och radiomoduler, samt val av port, MAC-adress och statisk IP-adress för att säkerställa unik identifiering i nätverket.
Därefter väljer du den modul som MQTT-klienten ska köra, till exempel:
- Arduino + W5100 Ethernet-modul.
- ESP8266-modul med WiFi-anslutning.
Den inbyggda programvaran definierar Publicerings- och prenumerationsämnenTill exempel ett prefix som MY_MQTT_PUBLISH_TOPIC_PREFIX/FRÅN_NOD_ID/SENSOR_ID skulle kunna generera ämnen som mygateway1-out/2/1/1/0/49, medan ett prenumerationsprefix skulle användas för att skicka kommandon till sensorerna, till exempel MY_MQTT_SUBSCRIBE_TOPIC_PREFIXger upphov till ämnen av den typen mygateway1-in/2/1/1/0/49.
När MQTT-gatewayen är konfigurerad rekommenderas det starkt att testa den mot en välkänd mäklare, som Mosquitto, för att kontrollera att meddelandena tas emot korrektDe publiceras i de förväntade ämnena och prenumerationsenheter får vad de ska få.
MQTT Gateway som en brygga till en central server
När du distribuerar MQTT-enheter på flera fysiska platser behöver du vanligtvis konsolidera all den informationen på en delad server eller på en centraliserad molnplattform. Det är här MQTT-gatewayen lyser som en brygga.
Tanken är att installera en MQTT-gateway på varje plats där det finns IoT-enheter. Varje gateway samlar in information från sin lokala miljö, Lägg till det och vidarebefordra det till en central server (eller en molnmäklare) med hjälp av MQTT. På så sätt kan du få en global vy över all data utan att förlora lokal kontroll och med optimerad nätverksförbrukning.
Dessutom kan dessa gateways säker med egna certifikatTLS-krypterings- och autentiseringsmekanismer skyddar sensorerna och IoT-kanten som finns kvar "bakom" gatewayen. De kan också lagra information lokalt, anpassa användargränssnittet för att hantera enheter i närheten och lägga till kompatibilitet med andra industriella protokoll efter behov.
MQTT-kompatibilitet med molnplattformar och andra protokoll
En av MQTTs största styrkor är att det är Kompatibel med de flesta större molnbaserade IoT-plattformarMånga industriella MQTT-gateways fungerar som standard med:
- Azure IoT.
- Google Cloud IoT.
- AWS IoT.
- IBM Watson IoT.
Gatewayen tolkar data den tar emot från sensorerna och Den överför dem till plattformen i MQTT-format.Användare behöver bara prenumerera på relevanta ämnen för att när som helst se eller bearbeta informationen.
Dessutom kan många av dessa catwalks fungera som protokollomvandlareGenom att integrera nätverk som Modbus TCP med MQTT, och erbjuda fjärrstyrda webbpaneler för att hantera grupper av enheter, blir MQTT en central komponent i hybridarkitekturer där äldre system samexisterar med nya IoT-lösningar.
Verkliga användningsfall av MQTT och IoT
Industriella miljöer och telemetri
I industrivärlden är MQTT redan en de facto-standard för överföring av telemetridata från sensorer och utrustning som distribueras i fabriker, gruvdrift, olje- och gasanläggningar eller livsmedelsföretag.
Företag installerar ett flertal sensorer som mäter parametrar som temperatur, tryck, flöde, vibrationer och energiförbrukning. Denna data skickas via MQTT till analyssystem som De upptäcker inkonsekvenser, trender och möjligheter till förbättring. i driften. Tack vare detta kan processer optimeras, fel förutses och oplanerade driftstopp minskas.
Lågeffektsnätverk (LPWAN)
LPWAN-nätverk (Low Power Wide Area Network) är utformade för att mycket strömsnåla enheter som skickar små meddelanden över långa avståndVanligtvis är nätverk med hög latens och begränsad bandbredd problematiska. MQTT passar perfekt för denna miljö eftersom dess meddelanden är lätta, stöder servicekvalitet och anpassar sig till otillförlitliga nätverk.
I företag som använder LPWAN för att skicka sensordata till molnlösningar möjliggör MQTT överföra stora mängder meddelanden utan att överbelasta nätverket och så långt det är möjligt säkerställa att informationen når analys- och övervakningssystemen.
Sociala nätverk och massmeddelanden
Ett slående exempel på användningen av MQTT utanför den klassiska industriella miljön är Facebookdär det har använts som det primära kommunikationsprotokollet för att hantera en enorm mängd meddelanden i realtid. Det spelar också en roll i meddelanden till plattformar som Instagram.
Att ett företag av den storleken satsar på MQTT förstärker idén att det är en robust, skalbart protokoll lämpligt för scenarier med hög samtidighetinte bara för små IoT-projekt.
Smarta hem och hemautomation
Inom den inhemska sfären har MQTT blivit en av de Favoritprotokoll för att automatisera smarta hemDen integreras sömlöst med molnplattformar som Azure eller IBM Watson, såväl som med lokala automationssystem.
Med MQTT kan du övervaka energiförbrukningen i hemmetstyra belysning, övervaka temperatur eller luftkvalitet i realtid och koordinera flera enheter (termostater, persienner, bevattningssystem etc.), inklusive enheter som Xiaomi seglingutan att varje enhet behöver kommunicera direkt med de andra. En MQTT Bluetooth-gateway kan till exempel centralisera alla BLE-sensorer i ett hem och ansluta dem till en enda mäklare.
Bilsektion
Digital transformation inom fordonsindustrin innebär att koppla samman fordon, produktionslinjer och ledningssystem. MQTT används som pålitlig meddelandekanal mellan molnet och fordonetmöjliggör sändning av telemetridata, fjärrdiagnostik och parameteruppdateringar.
Denna förmåga att kommunicera i nära realtid, även med förändrade mobila anslutningar, gör MQTT till ett mycket attraktivt alternativ för biltillverkare och tjänsteleverantörer.
Transport och logistik
Inom transport och logistik, kapaciteten hos spåra flottor och varor i rörelse Det är viktigt. MQTT används för att skicka data om position, laststatus, dörröppningshändelser eller miljöförhållanden inuti containern.
Genom att använda lättviktiga meddelanden och en mäklarbaserad arkitektur är det möjligt övervaka stora flottor i realtid med låg latens och utan att överbelasta mobil- eller satellitnäten som används för anslutningen.
Skalbara arkitekturer och frikoppling mellan hårdvara och mjukvara
En av de stora fördelarna med att använda MQTT i ett IoT-projekt är att det möjliggör tydligt separera hårdvaruskiktet från mjukvaruskiktetSensorerna och enheterna sysslar bara med att skicka data till en mäklare och ta emot kommandon från specifika ämnen; allt som händer därifrån (lagring, analys, visualisering) kan utvecklas oberoende av varandra.
Detta tillvägagångssätt påminner ofta om mikrotjänstmönsterdär varje komponent gör en sak och gör den bra. I vårt fall fokuserar hårdvaruenheten på mätning och publicering; andra tjänster hanterar bearbetning, lagring, visualisering eller tillämpning av artificiell intelligens, utan att sensorn behöver "veta" något om dem.
Tack vare denna frikoppling, om du imorgon bestämmer dig för att gå från en enkel visualiseringswebbplats på en Raspberry Pi till en komplext system av stordata och maskininlärning I molnet behöver du inte röra sensorerna. De fortsätter att skicka data till mäklaren, och du behöver bara ansluta nya konsumenter som prenumererar på befintliga ämnen.
Tillsammans bildar MQTT och dess tillhörande gateways en lösning mycket robust för IoT-anslutningLätt, skalbar, säker, kompatibel med större molnplattformar och stöder alla typer av nätverk, från LPWAN till hem-WiFi eller industriellt Ethernet. Allt detta, i kombination med dess publicerings-/prenumerationsmodell och möjligheten att lägga till gateways som överbryggar protokoll, gör den till en av nyckelkomponenterna som nutiden och framtiden för sakernas internet bygger på. Dela informationen så att fler användare känner till ämnet.