Obsah
Protokol MQTT (Message Queuing Telemetry Transport)
MQTT je extrémně lehký síťový protokol určený pro přenos zpráv mezi zařízeními. Byl navržen v roce 1999 Andy Stanford-Clarkem (IBM) a Arlenem Nipperem (Arcom) původně pro monitorování ropovodů prostřednictvím satelitních linek. dnes je MQTT jedním z nejpoužívanějších a de facto standardních komunikačních protokolů v oblasti Internetu věcí (IoT) a průmyslové automatizace.
Jeho hlavní předností je minimální režie (hlavička zprávy může mít pouhé 2 bajty), nízké nároky na přenosové pásmo a spolehlivost i na nestabilních nebo zarušených sítích.
Princip fungování: Publish/Subscribe
Na rozdíl od klasického webového modelu HTTP (který funguje na principu klient-server / požadavek-odpověď), MQTT využívá architekturu Publish/Subscribe (Publikuj/Odebírej). Zařízení spolu nikdy nekomunikují napřímo, ale prostřednictvím centrálního bodu zvaného MQTT Broker.
- Broker (Zprostředkovatel): Centrální server, který přijímá všechny zprávy, filtruje je a distribuuje je správným příjemcům.
- Publisher (Publikující): Zařízení (např. senzor teploty), které posílá data na broker pod konkrétním tématem.
- Subscriber (Odběratel): Zařízení nebo aplikace (např. mobilní aplikace nebo řídicí jednotka), která se přihlásí k odběru určitého tématu a od brokera automaticky dostává všechny zprávy, které pod toto téma spadají.
Témata (Topics) a jejich struktura
Zprávy jsou v MQTT směrovány na základě tzv. témat (topics), což jsou v podstatě textové řetězce strukturované pomocí lomítek, podobně jako adresáře v počítači.
Příklad struktury témat v chytré domácnosti:
domov/prizemi/obyvak/teplota domov/prizemi/kuchyn/svetlo/stav domov/1patro/ložnice/vlhkost
Divoké karty (Wildcards)
Při odběru témat (Subscribe) lze využít speciální znaky pro přihlášení k více tématům najednou:
- Jednoúrovňová divoká karta (+): Nahrazuje právě jednu úroveň hierarchie.
- Odběr
domov/+/obyvak/teplotazachytídomov/prizemi/obyvak/teplotaidomov/1patro/obyvak/teplota.
- Víceúrovňová divoká karta (#): Nahrazuje všechny následující úrovně na konci řetězce.
- Odběr
domov/prizemi/#zachytí úplně všechna data z přízemí (teplotu, stavy světel atd.).
Úrovně kvality služeb (QoS - Quality of Service)
MQTT umožňuje definovat, jak spolehlivě má být zpráva doručena. K tomu slouží tři úrovně QoS:
| Úroveň | Název | Popis |
|---|---|---|
| QoS 0 | At most once (Nejvýše jednou) | Zpráva je odeslána bez potvrzení doručení. Nejrychlejší přenos, hrozí ztráta zprávy při výpadku (vhodné pro periodické měření teploty). |
| QoS 1 | At least once (Alespoň jednou) | Broker garantuje doručení zprávy, ale kvůli opakovaným pokusům může zpráva dorazit vícekrát. Příjemce musí odeslat potvrzení (PUBACK). |
| QoS 2 | Exactly once (Přesně jednou) | Nejbezpečnější a nejpomalejší režim. Čtyřcestný handshake zajišťuje, že zpráva bude doručena právě jednou, bez duplicit (vhodné pro kritické alarmy nebo finanční transakce). |
Speciální funkce MQTT
- Retained Messages (Zadržené zprávy): Broker si může zapamatovat poslední odeslanou zprávu na daném tématu. Když se nový odběratel přihlásí k tomuto tématu, okamžitě tuto zprávu obdrží a nemusí čekat, až senzor pošle nová data.
- Last Will and Testament (Poslední vůle): Klient může při připojení definovat zprávu, kterou má broker rozeslat ostatním v případě, že se klient nečekaně odpojí (např. kvůli vybité baterii nebo ztrátě signálu). Ostatní systémy se tak ihned dozví o výpadku zařízení.
- Keep Alive: Pravidelné „pingání“ mezi klientem a brokerem pro ověření, že je spojení stále aktivní.
Populární MQTT Brokery
Pokud si chceš postavit vlastní IoT infrastrukturu, existuje několik osvědčených řešení:
- Eclipse Mosquitto: Velmi populární, lehký open-source broker. Ideální pro běh na Raspberry Pi v domácí automatizaci.
- EMQX: Robustní, vysoce škálovatelný broker vhodný pro firemní a průmyslové nasazení s miliony připojených zařízení.
- HiveMQ: Další enterprise řešení s vynikající podporou cloudových integrací.
Související články:
