Uživatelské nástroje

Nástroje pro tento web


it:protokoly:mqtt

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/teplota zachytí domov/prizemi/obyvak/teplota i domov/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:

it/protokoly/mqtt.txt · Poslední úprava: autor: admin