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.
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.
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
Při odběru témat (Subscribe) lze využít speciální znaky pro přihlášení k více tématům najednou:
domov/+/obyvak/teplota zachytí domov/prizemi/obyvak/teplota i domov/1patro/obyvak/teplota.domov/prizemi/# zachytí úplně všechna data z přízemí (teplotu, stavy světel atd.).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). |
Pokud si chceš postavit vlastní IoT infrastrukturu, existuje několik osvědčených řešení:
Související články: