MQTT vs. HTTP pre IoT: kedy čo použiť a ako ušetriť dáta
Keď zbierate dáta z tisícok zariadení, na každom bajte a každom spojení záleží. Voľba medzi MQTT a HTTP rozhoduje o tom, koľko dát pretečie, ako rýchlo dorazia príkazy a ako dlho vydrží batéria. Poďme si vyjasniť, kedy siahnuť po ktorom — a ako z prenosu vyžmýkať maximum.
Čo si z článku odnesiete
- MQTT je ľahký protokol na trvalé spojenie — ideálny pre časté dáta a obojsmerné príkazy.
- HTTP je jednoduchý a všadeprítomný — sadne na občasné odoslanie z pohodlia REST-u.
- Úrovne QoS v MQTT určujú, či správa dorazí raz, aspoň raz alebo presne raz.
- Najviac dát ušetríte kompaktným payloadom — binárne alebo CBOR namiesto ukecaného JSON-u.
Dva rozdielne svety
HTTP funguje na princípe „zaklop, dostaň odpoveď, odíď“. Zariadenie nadviaže spojenie, pošle požiadavku, počká na odpoveď a spojenie zavrie. Je to jednoduché a pozná to každý server na svete — ale réžia okolo každej správy je veľká.
MQTT naopak drží trvalé spojenie na centrálneho sprostredkovateľa (broker) a komunikuje cez malé správy s minimálnou réžiou. Zariadenie „publikuje“ do témy (topic) a ktokoľvek na ňu prihlásený správu okamžite dostane. Práve preto MQTT dominuje v IoT.
# MQTT — publikovanie do témy
topic: "senzor/kuchyna/teplota"
payload: "21.4"
# HTTP — to isté cez REST
POST /api/v1/senzory/kuchyna/teplota
Content-Type: application/json
{ "value": 21.4 }Kedy MQTT a kedy HTTP
| Kritérium | MQTT | HTTP |
|---|---|---|
| Frekvencia dát | Vysoká, časté správy | Občasné odoslanie |
| Réžia na správu | Veľmi nízka | Vyššia (hlavičky) |
| Príkazy zo servera | Okamžité (push) | Zariadenie sa musí pýtať |
| Spotreba batérie | Nižšia pri častých dátach | Nižšia pri zriedkavých |
| Zložitosť nasadenia | Treba broker | Stačí bežný web server |
Zjednodušene: ak zariadenie posiela dáta často alebo potrebuje dostávať príkazy naspäť (napr. „zapni“, „otvor“, „aktualizuj“), voľte MQTT. Ak pošle údaj raz za dlhší čas a nič naspäť nečaká, HTTP je jednoduchší a nepotrebuje ďalšiu infraštruktúru.
QoS: záruka doručenia
MQTT ponúka tri úrovne kvality služby. Voľte podľa toho, čo sa stane, ak správa nedorazí:
- QoS 0 — „najviac raz“. Pošle a nestará sa. Najrýchlejšie a najúspornejšie. Vhodné pre časté merania, kde jedna stratená hodnota nevadí.
- QoS 1 — „aspoň raz“. Doručenie potvrdí, ale správa môže doraziť aj duplikovane. Dobrý kompromis pre väčšinu prípadov.
- QoS 2 — „presne raz“. Zaručí jediné doručenie za cenu najväčšej réžie. Nechajte len pre kritické príkazy (platby, spúšťanie).
Využite „retained“ správu a „last will“. Retained drží poslednú hodnotu témy pre nových odberateľov, last will automaticky oznámi, keď zariadenie nečakane vypadne — ideálne na sledovanie online stavu flotily.
Ako ušetriť dáta v payloade
Protokol je len obálka — najviac bajtov obvykle minie samotný obsah správy. Preto:
- Skráťte kľúče. „t“ namiesto „temperature“ znie drsne, ale pri miliónoch správ sú to megabajty.
- Posielajte binárne alebo CBOR. Kompaktné formáty zmenšia správu oproti JSON-u aj na tretinu.
- Používajte krátke a hierarchické témy. Dobre navrhnutá štruktúra tém uľahčí filtrovanie aj práva prístupu.
- Zapnite TLS, ale s rozumom. Šifrovanie je nutnosť; réžiu znížite udržiavaním jedného dlhého spojenia namiesto neustáleho nadväzovania.
V IoT nejde o to, poslať dáta. Ide o to, poslať čo najmenej dát tak, aby ste z nich vytiahli všetko potrebné. Zásada úsporného prenosu
Zhrnutie
Kľúčové poznatky
- MQTT pre časté dáta a obojsmerné príkazy, HTTP pre občasné odoslanie bez odpovede.
- Voľte QoS podľa dôsledku straty: 0 pre merania, 1 pre bežné, 2 pre kritické príkazy.
- Využite retained správy a last will na sledovanie stavu a online prítomnosti.
- Najviac ušetríte kompaktným payloadom — krátke kľúče, binárne alebo CBOR.
- TLS je povinné; réžiu držte nízko jedným dlhým spojením namiesto opakovaného nadväzovania.
Chystáte IoT riešenie od zariadenia po cloud?
Navrhnem konektivitu, broker aj backend tak, aby dáta tiekli spoľahlivo a lacno — vrátane dashboardu, alertov a prediktívnej údržby. Pozrite si, ako pristupujem k vývoju IoT riešení, alebo mi napíšte o svojom projekte.
Čítajte ďalej
Ďalšie články
IoT konektivita: BLE, LoRaWAN, NB-IoT a Wi-Fi — čo kedy zvoliť
Dosah verzus spotreba verzus cena dát. Prehľadné porovnanie technológií a rozhodovací postup, ktorý vám vyberie tú správnu.
Čítať článokAko IoT riešenia pomáhajú firmám znižovať náklady a zvyšovať efektivitu
Prediktívna údržba, optimalizácia spotreby, automatizácia a prehľad v reálnom čase. Ako dáta z IoT premeniť na úspory naprieč celou firmou.
Čítať článok5 kľúčových výziev pri vývoji IoT riešení a ako ich prekonať
Integrácia zariadení, bezpečnosť, spotreba, škálovateľnosť a testovanie v teréne. Päť najčastejších prekážok IoT projektov a ako ich zdolať.
Čítať článok