Problem Set #6: The Messages and Topics in MQTT
alebo o organizácii a štruktúre tém a prenášaných správ pomocou komunikačného protokolu MQTT
Upozornenie
Work in progess! Dokumentácia nie je úplná a bude priebežne dopĺňaná.
Komunikačný protokol MQTT je hlavným komunikačným protokolom v architekúre projektu Chytrá katedra. Používa sa na komunikáciu medzi všetkými vrstami architektúry, pričom jednotlivé správy sa odosielajú vo formáte JSON.
Ako je možné vidieť na obrázku vyššie, celá architektúra je hierarchická. V každej miestnosti je na zariadení IoT Gateway spustený samostatný MQTT broker, pričom každý jeden z nich je taktiež prepojený s MQTT broker-om v cloud-e pomocou mechanizmu MQTT bridge. Vďaka nemu MQTT broker-y v jednotlivých miestnostiach posielajú dáta do cloud-u a prihlásia sa na odber dát z cloud-u, ktoré sú určené nim.
Štruktúra tém sa preto líši na zariadeniach IoT Gateway od zariadenia Mother. Ich podoba je opísaná v nasledujúcom texte.
Komunikácia medzi 1. a 2. vrstvou
Štruktúra tém na tejto úrovni vyzerá nasledovne:
gw/<type>/<id>/<operation>
Význam jednotlivých častí témy je nasledovný:
gw
- povinný lokálny prefix<type>
- typ zariadenia, napr.temperature
pre meranie teploty,audio
pre meranie/ovládanie hlasitosti<id>
- identifikátor zariadenia, pokiaľ sa nejedná o špeciálne označené zariadenie (napr. predné/zadné dvere), používajte svoj študentský identifikátor v tvareab123cd
<operation>
- definuje, či je správa vstupná alebo výstupná, a čo reprezentuje
Komunikácia medzi 2. a 3. vrstvou
Štruktúra tém na tejto úrovni vyzerá nasledovne:
<department>/<room>/<type>/<id>/<operation>
Význam jednotlivých častí je nasledovná:
<department>
- Názov organizácie alebo oddelenia, napr.kpi
.<room>
- Názov alebo označenie miestnosti, napr.caprica
.<type>
- typ zariadenia, napr.temperature
pre meranie teploty,audio
pre meranie/ovládanie hlasitosti<id>
- identifikátor zariadenia, pokiaľ sa nejedná o špeciálne označené zariadenie (napr. predné/zadné dvere), používajte svoj študentský identifikátor v tvareab123cd
<operation>
- definuje, či je správa vstupná alebo výstupná, a čo reprezentuje
Odosielanie (nameraných) dát zo zariadenia
Pre odosielanie správ z chytrého senzora sa bude používať téma
gw/<type>/<id>/data
. Napríklad, ak sa jedná o
teplomer v miestnosti dune
, bude téma vyzerať takto:
gw/temperature/ab123cd/data
.
Samotná správa bude vyzerať nasledovne:
{
"dt": "2024-10-29T20:09:35Z",
"metrics": [
{
"dt": "2024-10-29T20:00:00Z",
"name": "temperature",
"value": 23.4,
"units": "metric"
}
]
}
Čas a dátum či už odoslanej správy alebo jednotlivých meraní je odosielaný v reťazcovej podobe naformátovanej pomocou štandardu ISO 8601. Na reprezentáciu času sa používa vždy štandard UTC.
Pod kľúčom metrics
sa nachádza zoznam meraní, kde každé
je reprezentované samostatným JSON dokumentom. Tento dokument
reprezentuje meranie príslušnej veličiny v konkrétny čas. To je dôležité
vtedy, keď do jednej správy zabalíte viacero meraní tej istej
veličiny alebo veličín súvisiacich s predmetom merania (napr.
hodnota GPS sa skladá zo zemepísnej šírky a dĺžky, senzor zrýchlenia
vracia hodnoty v troch osiach, a pod.).
Príklad meraných veličín a ich prípustných hodnôt jednotiek ako aj typ hodnôt, je uvedený v nasledujúcej tabuľke.
name | units | value |
---|---|---|
temperature |
metric | imperial | standard |
float |
humidity |
percent |
int |
Odosielanie informácií o stave zariadenia
Každé zariadenie bude mať specifickú tému, v ktorej sa bude nachádzať
aktuálny stav zariadenia. Hlavne informácia o tom, či zariadenie
pracuje. Táto téma bude vyzerať nasledovne:
<department>/<room>/<type>/<device_id>/status
.
Do tejto témy bude zapísaná aj posledná vôľa zariadenia.
V prípade, že zariadenie pracuje, bude v stave online
a
správa bude vyzerať nasledovne:
{
"status": "online"
}
V opačnom prípade bude zariadenie v stave offline
. V tom
prípade bude správa vyzerať nasledovne:
{
"status": "offline"
}
Poznámka
Táto správa by mala mať príznak retain
, aby o stave
zariadenia vedeli v prípade potreby ďalšie zariadenia.
Zmena vlastností zariadenia
Počas behu zariadenia bude možné meniť jeho konfiguráciu, čím bude
možné ovplyvniť správanie zariadenia. Na to bude slúžiť téma
<department>/<room>/<type>/<device_id>/set
.
Správa bude odrážať podobu konfiguračného súboru. Naraz je samozrejme možné zmeniť viacero hodnôt, čo znamená, že je možné naraz poslať novú podobu celého konfiguračného súboru.
Ovládanie zariadenia
V prípade, že zariadenie predstavuje akčný člen, akým je napríklad
žiarovka, bude možné jej na diaľku posielať príkazy na jej ovládanie. To
môže znamenať jej zapnutie, vypnutie, zmenu jasu, nastavenie farby,
prehratie efektu a pod. Na to bude slúžiť téma
<department>/<room>/<type>/<device_id>/cmd
.
Zdroje
Pri navrhovaní tém a formátu správ sme sa inšpirovali najmä z týchto zdrojov: