Når du snakker om koble til millioner av IoT-enheter For pålitelig, lett og sikker kommunikasjon er navnet som alltid dukker opp det samme: MQTT. Denne protokollen har blitt en nøkkelkomponent for sensorer, industrielle gatewayer, smarthjemenheter og skyplattformer for å kommunisere uten å overbelaste nettverket eller øke energiforbruket.
Langt fra å bare være «en annen protokoll» MQTT passer perfekt til de reelle behovene til tingenes internettUstabile nettverk, latterlig lav båndbredde, svært begrenset maskinvare, krevende industrielle miljøer eller nær sanntidsapplikasjoner som cyberfabrikker, energitelemetri eller avansert hjemmeautomatisering. La oss ta en rolig og detaljert titt på hvordan det fungerer, hvilken rolle det spiller i IoT-tilkobling, hva en MQTT-gateway er, og i hvilke spesifikke tilfeller det er mer fornuftig å bruke den sammenlignet med andre alternativer.
Hva er MQTT, og hvorfor har det blitt så populært innen IoT?
MQTT (Message Queuing Telemetry Transport) er en lett, åpen standardmeldingsprotokoll Spesielt utviklet for maskin-til-maskin (M2M) kommunikasjon og dermed også for tingenes internett. Målet er veldig klart: å kunne sende og motta data mellom enheter selv om nettverket er dårlig, båndbredden er begrenset og enheten har svært lite minne eller datakraft.
I motsetning til den klassiske klient-server-modellen bruker MQTT en publiserings-/abonnementsarkitektur Den er basert på en sentral mellommann kalt en megler. Enheter kommuniserer ikke direkte med hverandre, men publiserer i stedet meldinger i bestemte emner og abonnerer på emner av interesse. Megleren er ansvarlig for å motta alle disse meldingene, filtrere dem og levere dem til de riktige klientene.
Denne måten å jobbe på gjør MQTT ekstremt fleksibel og skalerbarI stedet for å ha hundrevis eller tusenvis av vanskelig administrerte punkt-til-punkt-tilkoblinger, orkestreres alt gjennom megleren, som kan håndtere alt fra noen få enheter til millioner, avhengig av implementering og tilgjengelige ressurser.
Viktige tekniske funksjoner i MQTT for IoT
Lett og effektiv protokoll
En av hovedgrunnene til at MQTT er så populært innen IoT er at det er latterlig lettImplementering på enheten kan ta opp svært lite kode og kreve svært få ressurser, noe som gjør den ideell for beskjedne mikrokontrollere, rimelige sensorer eller batteridrevet utstyr.
En MQTT-kontrollmelding i sin minimale versjon kan ha bare to byte med dataDessuten er meldingsoverskriftene svært kompakte, noe som minimerer kommunikasjonskostnader. Denne designen er perfekt for scenarier med liten båndbredde eller dyre nettverk (som noen mobilnettverk eller LPWAN-er), der hver byte teller.
Sammenlignet med tyngre protokoller, som HTTP med sine komplekse forespørsler og detaljerte overskrifter, tillater MQTT for å optimalisere bruken av nettverketDette er kritisk når tusenvis av enheter snakker sammen med noen få sekunders mellomrom.
Publiserings-/abonnementsmal med emner
MQTT er basert på en modell av publisering/abonnement om emnerDette er tekststrenger (i UTF-8) som organiserer informasjon i nivåer. For eksempel, i et smarthjem kan vi ha:
- hus/stue/temperatur
- hus/kjøkken/røyking
- hus/garasje/dør
En temperatursensor i stuen ville legge ut avlesningene sine i emnet. hus/stue/temperaturMens et overvåkingsprogram ville abonnere på det samme emnet for å motta alle innkommende meldinger. På denne måten er det like enkelt å legge til nye enheter eller dataforbrukere som bruk de riktige emneneuten å måtte endre eksisterende infrastruktur.
Dette systemet, selv om det ikke akkurat er en klassisk meldingskø, er ganske likt købaserte modeller: enheter genererer meldinger og sender dem til et sentralt punkt (megleren), og deretter Behandlingssystemene forbruker disse dataene i henhold til deres behov. Dette gjør det mye enklere å skalere systemet ved å øke antallet forbrukere uten å bytte sensorene.
Tjenestekvalitet (QoS) og pålitelighet
Mange IoT-enheter kobles til via nettverk med høy latens, lav båndbredde og begrenset pålitelighetsom for eksempel ustabile mobilnettverk eller overbelastede trådløse koblinger. MQTT inneholder en rekke mekanismer for å sikre meldingslevering i den sammenhengen.
Protokollen definerer tre nivåer av tjenestekvalitet (QoS):
- QoS 0 – «maksimalt én gang»Meldingen sendes bare én gang, uten bekreftelse. Det er den raskeste og enkleste metoden, men noen meldinger kan gå tapt.
- QoS 1 – «minst én gang»Dette sikrer at meldingen kommer frem, selv om den kan komme frem duplisert. Et bekreftelsessystem brukes for å garantere levering.
- QoS 2 – «nøyaktig én gang»Dette er det mest robuste nivået. Det sikrer at hver melding leveres én gang og bare én gang, ved hjelp av en firefasehåndtrykkDet er litt tyngre, men viktig i visse sensitive tilfeller.
Takket være disse QoS-nivåene kan MQTT tilpasses forskjellige brukstilfellerfra telemetri der ingenting skjer hvis en spesifikk dataenhet går tapt, til kritiske systemer der duplisering eller tap av en melding ville være uakseptabelt.
HÃ¥ndtering av gjenoppkoblinger og ustabile nettverk
En annen fordel er at MQTT er designet for miljøer med hyppige frakoblingerProtokollen inkluderer funksjoner som reduserer tiden det tar for en enhet å koble seg til megleren på nytt, noe som er viktig på mobil- eller Wi-Fi-nettverk av tvilsom kvalitet; og forbedrer sikker WiFi-tilkobling kan utfylle disse evnene.
I tillegg kan megleren administrere holdte meldinger, øktstatuser og andre funksjoner som tillater enheter gjenoppta kommunikasjonen uten å miste kontekst hver gang nettverket går ned og kommer på igjen.
Sikkerhet og kryptering
I IoT er sikkerhet ikke valgfritt. MQTT har støtte for kryptering og autentisering Stolt på moderne protokoller: TLS 1.3 kan brukes til å kryptere kanalen, autentisere via klientsertifikater, OAuth og andre teknikker som er vanlige i forretnings- og skymiljøer.
Dette gjør at meldinger kan krypteres under overføring og brukes Tilgangskontroller om hvem som kan publisere eller abonnere på bestemte emner, og beskytte både konfidensialiteten og integriteten til informasjonen, noe som er spesielt relevant i industri-, energi- eller helsemiljøer.
Omfattende støtte på tvers av språk og plattformer
MQTT har modne implementeringer av meglere og kunder på flere språk (Python, C, C++, Java, JavaScript, Go, osv.) og med et svært aktivt fellesskap. Dette gjør det enkelt for utviklere å integrere IoT-enheter med eksisterende systemer, databaser, stordataverktøy eller skytjenester uten å måtte oppfinne hjulet på nytt.
Å være en åpen kildekode-protokoll med godt testede bibliotekerLæringskurven er rimelig kort, og risikoen for kompatibilitetsproblemer er redusert, noe som gjør det svært attraktivt for prosjekter som spenner fra små prototyper til massive utrullinger.
MQTT-meglerens rolle i IoT-arkitektur
Megleren er den kjernen i enhver MQTT-basert arkitekturDet er komponenten som mottar alle meldinger, behandler dem og distribuerer dem til klienter som abonnerer på de tilsvarende emnene.
Blant hovedfunksjonene er:
- Motta informasjon publisert av klienter (sensorer, gatewayer, applikasjoner osv.).
- Dekode og filtrere meldinger avhengig av emne, QoS-nivå eller sikkerhetsregler.
- Finn ut hvilke kunder som er interesserte i hver melding (i henhold til abonnementene dine).
- Overfør meldingene til målkundenerespekterer QoS- og autorisasjonspolicyer.
Det finnes flere meglerimplementeringer, begge åpen kildekode så vel som kommersiellEn av de mest kjente er Mosquitto, mye brukt i hjemmemiljøer, hos programvareprodusenter og også i mer seriøse distribusjoner, som tillater administrasjon av alt fra noen få til tusenvis av klienter med en relativt enkel konfigurasjon.
MQTT i praksis: Arduino, ESP8266 og lokale nettverk

I mange hjemme- eller semi-profesjonelle IoT-prosjekter innebærer et ganske typisk scenario å ha en MQTT-megler som kjører på en Raspberry Pi eller en PC innenfor det lokale nettverket, og diverse enheter som f.eks. Arduino med Arduino IoT Cloud Remote-appen eller ESP8266 koblet til som klienter.
For eksempel kan du ha en Arduino med en DHT22 temperatursensor som sender periodiske avlesninger til et emne som hus/stue/temperaturI mellomtiden abonnerer en annen Arduino eller en mobilapp på det samme emnet for å vise temperaturen i sanntid. Megleren, i dette tilfellet Mosquitto, er ansvarlig for å motta meldinger fra den første Arduinoen og levere dem til den andre, uten at de trenger å kjenne hverandre eller administrere en direkte forbindelse.
Denne arkitekturen har én stor fordel: Den er skalerbar nesten uanstrengtDu kan legge til flere sensorer, flere dataforbrukere og koble dem til databaser, maskinlæringssystemer eller visualiseringsdashboards uten å endre virkemåten til allerede distribuerte enheter. Du trenger bare å eksperimentere med emner og abonnementer.
Hvorfor MQTT og ikke bare HTTP?
Et veldig vanlig spørsmål er om det virkelig er verdt å bruke MQTT når du tilsynelatende kan løse alt med direkte HTTP-forespørsler til en ESP8266 eller lignende, ved å åpne en port på ruteren, og det er det, eller til og med med WebSockets på Android.
Svaret er at selv om det er teknisk mulig, tilbyr MQTT flere viktige fordeler:
- Lavere gjennomsnittlig ventetid og mindre overhead i hyppig kommunikasjon, spesielt med korte meldinger sendt med noen få sekunders mellomrom.
- Native Pub/SubMobiltelefonen trenger ikke å kommunisere direkte med hver enhet; den trenger bare å kommunisere med megleren.
- Sentralisert sikkerhets- og autentiseringsadministrasjon på megleren, i stedet for å replikere logikken på hver enhet.
- Enkel skaleringHvis du i morgen går fra 5 til 500 enheter, trenger du ikke å åpne 500 porter eller redesigne hele topologien.
- Innebygd støtte for gjenoppkoblinger og QoS tenker på ustabile nettverk, noe HTTP ikke tilbyr som standard.
I et typisk scenario ville mobilappen din koble seg til MQTT-megleren (enten innenfor LAN-et ved hjelp av portvideresending, eller til en skymegler), publisere en melding til et kontrollemne (for eksempel hus/stue/lampe/sett), og ESP8266, som abonnerer på det emnet, ville motta kommandoen nesten umiddelbart. Du trenger bare å opplyse megleren.ikke alle enheter på nettverket.
Når det gjelder tjenester som io.adafruit.com og aktiveringsintervallene deres (hvert 15. minutt i gratisversjonen, hvert 5. sekund i betaltversjonen), er det begrensninger for den spesifikke tjenestenDet er ikke selve MQTT-protokollen som er problemet. Selve protokollen tillater svært lav latens; problemet er at leverandøren pålegger grenser for bruksfrekvens.
MQTT Gateway: porten mellom sensorer og skyen
Hva er en MQTT-gateway?
Den såkalte «MQTT Gateway» eller MQTT-gatewayen er i hovedsak en mellomleddet mellom sensorene eller lokale enhetene og IoT-plattformen eller MQTT-meglerenHovedfunksjonen er å samle inn data i forskjellige protokoller (f.eks. Bluetooth, kablede sensorer, Modbus osv.), konvertere dem til MQTT og sende dem til skyen eller til en sentral megler.
I mange tilfeller implementeres en MQTT-gateway som en Ethernet-gateway med spesifikk programvare som fungerer som en MQTT-klient. Denne gatewayen kan ha radiogrensesnitt, industrielle innganger og utganger, eller feltbusstilkobling, og er ansvarlig for å oversette alt dette til MQTT-språket for å forene dem.
Fordeler med en MQTT-gateway (inkludert Bluetooth MQTT)
MQTT-baserte gatewayer, spesielt de som integrerer Bluetooth, tilbyr flere interessante fordeler:
- Svært lette meldingernoe som gjør kommunikasjonen effektiv selv med mange sensorer som sender data samtidig.
- ToveismeldingerDe tillater både sky-til-enhet og enhet-til-sky-kommunikasjon, ikke bare opplink-telemetri.
- Pålitelig levering støttet av QoS-nivåer, som sikrer at meldinger ankommer i henhold til det konfigurerte garantinivået.
- Innebygd sikkerhetGatewayer støtter vanligvis TLS-kryptering og sertifikatautentisering, slik at data som passerer gjennom gatewayen kommer sikkert i kontakt med skyen.
I tilfelle a MQTT Bluetooth-gatewayEnheten skanner og oppdager alle BLE-sensorer innenfor rekkevidde, administrerer kommunikasjonen med dem og sentraliserer dataoverføringen til MQTT-megleren. Fra IoT-plattformens perspektiv «snakker alle disse Bluetooth-sensorene MQTT», selv om de faktisk gjør det gjennom gatewayen.
Hvordan en MQTT-gateway fungerer og hvordan du konfigurerer den
Generelt sett er den typiske flyten for en MQTT-gateway:
- Skann og oppdag sensorer og enheter innenfor rekkevidden (f.eks. via Bluetooth eller kablede nettverk).
- Samle inn dataene fra disse sensorene gjennom de tilsvarende protokollene.
- Oversett disse dataene til MQTT-format (definer passende emner og nyttelaster).
- Publiser dataene på megleren eller på den valgte IoT-plattformen.
Konfigurasjonen av en fysisk gateway involverer først montering av maskinvareriktig kabling, separasjon mellom sensortilkoblinger og radiomoduler, og valg av port, MAC-adresse og en statisk IP-adresse for å sikre en unik identifikasjon på nettverket.
Deretter velger du modulen som MQTT-klienten skal kjøre, for eksempel:
- Arduino + W5100 Ethernet-modul.
- ESP8266-modul med WiFi-tilkobling.
Fastvaren definerer Publisering og abonnementsemnerFor eksempel et prefiks som MY_MQTT_PUBLISERING_EMNE_PREFIX/FRA_NODE_ID/SENSOR_ID kunne generere temaer som mygateway1-out/2/1/1/0/49, mens for å sende kommandoer til sensorene ville et abonnementsprefiks bli brukt, for eksempel MY_MQTT_SUBSCRIBE_TOPIC_PREFIXsom gir opphav til emner av typen mygateway1-in/2/1/1/0/49.
Når den er konfigurert, anbefales det på det sterkeste å teste MQTT-gatewayen mot en kjent megler, for eksempel Mosquitto, for å bekrefte at meldingene er mottatt riktigDe publiseres i de forventede emnene, og abonnenter mottar det de skal motta.
MQTT Gateway som en bro til en sentral server
Når du distribuerer MQTT-enheter på tvers av flere fysiske steder, trenger du vanligvis konsolider alle disse dataene på en delt server eller på en sentralisert skyplattform. Det er her MQTT-gatewayen skinner som en bro.
Tanken er å installere en MQTT-gateway på hvert sted der det finnes IoT-enheter. Hver gateway samler inn informasjon fra sitt lokale miljø, Legg den til og videresend den til en sentral server (eller en skymegler) ved hjelp av MQTT. På denne måten kan du få en global oversikt over alle dataene uten å miste lokal kontroll og med optimalisert nettverksforbruk.
I tillegg kan disse gatewayene sikker med egne sertifikaterTLS-krypterings- og autentiseringsmekanismer beskytter sensorene og IoT-kanten som forblir «bak» gatewayen. De kan også lagre informasjon lokalt, tilpasse brukergrensesnittet for å administrere enheter i nærheten og legge til kompatibilitet med andre industrielle protokoller etter behov.
MQTT-kompatibilitet med skyplattformer og andre protokoller
En av MQTTs største styrker er at den er Kompatibel med de fleste store skybaserte IoT-plattformerMange industrielle MQTT-gatewayer fungerer som standard med:
- Azure IoT.
- Google Cloud IoT.
- AWS IoT.
- IBM Watson IoT.
Gatewayen tolker dataene den mottar fra sensorene og Den overfører dem til plattformen i MQTT-format.Brukere trenger bare å abonnere på de relevante emnene for å se eller behandle informasjonen når som helst.
Videre kan mange av disse catwalkene tjene som protokollkonvertererVed å integrere nettverk som Modbus TCP med MQTT, og tilby eksterne webpaneler for å administrere grupper av enheter, blir MQTT en sentral komponent i hybridarkitekturer der eldre systemer sameksisterer med nye IoT-løsninger.
Eksempler på bruk av MQTT og IoT i den virkelige verden
Industrielle miljøer og telemetri
I den industrielle verden er MQTT allerede en de facto standard for overføring av telemetridata fra sensorer og utstyr distribuert i fabrikker, gruvedrift, olje- og gassanlegg eller landbruks- og næringsmiddelselskaper.
Bedrifter installerer en rekke sensorer som måler parametere som temperatur, trykk, strømning, vibrasjon og energiforbruk. Disse dataene sendes via MQTT til analysesystemer som De oppdager uoverensstemmelser, trender og muligheter for forbedring. i driften. Takket være dette kan prosesser optimaliseres, feil forutses og uplanlagt nedetid reduseres.
Lavstrøms bredbåndsnettverk (LPWAN-er)
LPWAN-nettverk (Low Power Wide Area Network) er utformet for å enheter med svært lavt strømforbruk som sender små meldinger over lange avstanderVanligvis er nettverk med høy latens og begrenset båndbredde problematiske. MQTT passer perfekt for dette miljøet fordi meldingene er lette, støtter tjenestekvalitet og tilpasser seg upålitelige nettverk.
I selskaper som bruker LPWAN til å sende sensordata til skyløsninger, muliggjør MQTT overføre store mengder meldinger uten å overbelaste nettverket og sørge for at dataene når frem til analyse- og overvåkingssystemene så langt det er mulig.
Sosiale nettverk og massemeldinger
Et slående eksempel på bruk av MQTT utenfor det klassiske industrielle miljøet er Facebook hvor den har blitt brukt som den primære kommunikasjonsprotokollen for å håndtere et enormt volum av meldinger i sanntid. Den spiller også en rolle i meldinger til plattformer som Instagram.
Det faktum at et selskap av den størrelsen satser på MQTT forsterker ideen om at det er en robust, skalerbar protokoll egnet for scenarier med høy samtidighetikke bare for små IoT-prosjekter.
Smarte hjem og hjemmeautomasjon
I den innenlandske sfæren har MQTT blitt en av de Favorittprotokoller for automatisering av smarthjemDen integreres sømløst med skyplattformer som Azure eller IBM Watson, samt med lokale automatiseringssystemer.
Med MQTT kan du overvåke energiforbruket i hjemmetkontrollere belysning, overvåke temperatur eller luftkvalitet i sanntid og koordinere flere enheter (termostater, persienner, vanningssystemer osv.), inkludert enheter som Xiaomi Velauten at hver enhet trenger å kommunisere direkte med de andre. En MQTT Bluetooth-gateway kan for eksempel sentralisere alle BLE-sensorene i et hjem og koble dem til én enkelt megler.
Bilseksjon
Digital transformasjon i bilindustrien innebærer å koble sammen kjøretøy, produksjonslinjer og styringssystemer. MQTT brukes som pålitelig meldingskanal mellom skyen og kjøretøyettillater sending av telemetridata, fjerndiagnostikk og parameteroppdateringer.
Denne muligheten til å kommunisere i nær sanntid, selv med endret mobiltilkobling, gjør MQTT til et svært attraktivt alternativ for bilprodusenter og tjenesteleverandører.
Transport og logistikk
Innen transport og logistikk er kapasiteten til spore flåter og varer i bevegelse Det er nøkkelen. MQTT brukes til å sende data om posisjon, laststatus, døråpningshendelser eller miljøforhold inne i containeren.
Ved å bruke lettvektsmeldinger og en meglerbasert arkitektur er det mulig overvåke store flåter i sanntid med lav latens og uten å overbelaste mobil- eller satellittnettverkene som brukes for tilkoblingen.
Skalerbare arkitekturer og avkobling mellom maskinvare og programvare
En av de store fordelene med å ta i bruk MQTT i et IoT-prosjekt er at det tillater tydelig skille maskinvarelaget fra programvarelagetSensorene og enhetene driver kun med å sende data til en megler og motta kommandoer fra bestemte emner; alt som skjer derfra (lagring, analyse, visualisering) kan utvikle seg uavhengig.
Denne tilnærmingen minner ofte om mikrotjenestemønsterder hver komponent gjør én ting, og gjør det bra. I vårt tilfelle fokuserer maskinvareenheten på måling og publisering; andre tjenester håndterer prosessering, lagring, visualisering eller bruk av kunstig intelligens, uten at sensoren trenger å «vite» noe om dem.
Takket være denne avkoblingen, hvis du i morgen bestemmer deg for å gå fra et enkelt visualiseringsnettsted på en Raspberry Pi til en komplekst system av stordata og maskinlæring I skyen trenger du ikke å berøre sensorene. De vil fortsette å sende data til megleren, og du trenger bare å koble til nye forbrukere som abonnerer på eksisterende emner.
Sammen danner MQTT og tilhørende gatewayer en løsning svært robust for IoT-tilkoblingLett, skalerbar, sikker, kompatibel med store skyplattformer, og støtter alle typer nettverk, fra LPWAN til hjemme-WiFi eller industrielt Ethernet. Alt dette, kombinert med publiserings-/abonnementsmodellen og muligheten til å legge til gatewayer som bygger bro mellom protokoller, gjør den til en av nøkkelkomponentene som nåtiden og fremtiden til Tingenes Internett bygges på. Del informasjonen slik at flere brukere vet om emnet.