Internet věcí a protokol MQTT

Jedním ze standardů, kolem kterých se točí Internet věcí je protokol MQTT (Message Queuing Telemetry Transport). Jak už název napovídá, jde o protokol určený pro předávání zpráv mezi jednotlivými zařízeními.

Původně vznikl v devadesátých letech v IBM, ale postupně byl standardizován (ISO/IEC PRF 20922) a jde o jednoduchý a nenáročný protokol určený pro zařízení s malým výpočetním výkonem. Protokol počítá s centrálním místem, jenž zajišťuje komunikaci mezi ostatními zařízeními, nejčastěji různými senzory. První důležitou vlastnosti jsou kromě připojení (včetně autentifikace) a odpojení v tomto protokolu dvě hlavní funkce: Publish a Subscribe/UnSubscribe. Tímto způsobem je možné v síti na bázi TCP/IP (ale i jiných) zveřejňovat (publish) informace, které pak centralizovaný bod přepošle těm klientům nebo zařízením, které tuto zprávu odebírají (subscribe).

Druhou důležitou vlastností je hierarchická struktura, v rámci níž jsou jednotlivé MQTT zprávy rozděleny do jednotlivých témat (topic). Každá zpráva může patřit jen do jednoho tématu a hierarchie témat se odděluje lomítky a hierarchii navrhuje tvůrce řešení. Pokud například budeme tímto způsobem chtít definovat senzor intenzity osvětlení v kancelářské budově č.1, v prvním patře, v místnosti 111 u stolu 3, může hierarchie vypadat nějak takto: budova_1/patro_1/místnost_111/stůl_3. Úmyslně jsem použil v příkladu diakritiku, jelikož MQTT používá UTF-8.

Samotný obsah zprávy definovaný není, má jen určité omezení velikosti, které definuje verze protokolu, ale pro převážnou většinu zpráv toto omezení de facto neexistuje. Obsahem může být text, hodnota, binární data (např. JSON) apod. Ke každé zprávě se přidá nezbytné množství servisních dat, která definují například způsob potvrzení doručení zprávy.

Pokud se vrátím k fungování komunikace mezi čidly v názorném příkladu, tak senzor intenzity osvětlení při změně hodnoty (slunce zakryl mrak) odesílá (publish) zprávu do centrálního komunikačního bodu, ten vyhodnotí, kteří klienti tuto zprávu odebírají (subscribe) a přepošle jim ji. A pokud to bude například ovládání inteligentního svítidla nad stolem, které umí plynule regulovat intenzitu osvětlení, může taková zpráva při splnění nadefinovaných pravidel ovládat toto světlo. V praxi je to samozřejmě vždy složitější, ale na pochopení základního principu tento příklad postačuje.

Pokud se budete chtít do nějaké aplikace internetu věcí pustit, zkuste nejdříve prohledat internet, abyste nemuseli začínat od nuly. Existují open source projekty, na jejichž základě lze začít budovat už jednotlivé funkční bloky na bázi MQTT, většina vývojových prostředí dnes nabízí ke stažení klientské MQTT knihovny, ať již jde o JavaScript, Python nebo Javu, nebo jsou dokonce celé systémy podporující internet věcí včetně protokolu MQTT součástí standardně nabízených prostředí různých firem. A pro ty z vás, kteří si rádi hrají s hardwarem, doporučuji MQTT klienta pro Arduino nebo Raspberry.

Zdroj

Další informace