Problem Set #4: IoT Gateway
alebo o druhej vrste IoT architektúry
Upozornenie
Work in progess! Dokumentácia nie je úplná a bude priebežne dopĺňaná.
Každá miestnosť je vybavená jedným IoT Gateway zariadením. Ak chcete, aby vaše chytré zariadenia (veci, z angl. things), ktoré vytvoríte a naprogramujete, boli schopné komunikovať, budete sa pripájať práve prostredníctvom IoT Gateway.
Zariadenie IoT Gateway je reprezentované minipočítačom Raspberry Pi 3 Model B.
Služby na IoT Gateway
Na IoT Gateway zariadeniach sú spustené rozličné služby a aplikácie pomocou Docker kompozície. Základ je tvorený core kompozíciou, s ktorou ste sa zoznámili počas cvičení z predmetu. Tu sú spustené tieto služby:
Homepage - aplikačný panel, ktorý sa vám zobrazí pri prístupe na zariadenie cez protokol HTTP
Telegraf - slúži na zbieranie základných metrík o stave zariadenia IoT Gateway
Mosquitto - MQTT broker pre danú miestnosť, ktorý komunikuje na štandardnom porte
1883
Chrony - NTP server, s ktorým si môžu vaše zariadenia zosynchronizovať čas na štandardnom porte
123
Zigbee2MQTT - most medzi komunikačným protokolom Zigbee a MQTT
Theengs - most medzi komunikačným protokolom BLE a MQTT
Node-RED - (jediné) programátorské prostredie pre vaše scenáre na zariadení IoT Gateway
Zoznam zariadení
V nasledujúcej tabuľke sa nachádzajú informácie o jednotlivých zaradeniach a ich umiestnení:
miestnosť | označenie | IP adresa | DNS záznam |
---|---|---|---|
abydoss | A536 | 147.232.52.251 |
abydos-gw.fei.tuke.sk |
caprica | B527 | 147.232.44.166 |
caprica-gw.fei.tuke.sk |
dune | B529 | 147.232.45.9 |
dune-gw.fei.tuke.sk |
endor | B526 | 147.232.52.253 |
endor-gw.fei.tuke.sk |
hyperion | A512 | 147.232.52.252 |
hyperion-gw.fei.tuke.sk |
kronos | B524 | 147.232.44.94 |
kronos-gw.fei.tuke.sk |
meridian | B519 | 147.232.22.230 |
meridian-gw.fei.tuke.sk |
romulus | A534 | 147.232.22.242 |
romulus-gw.fei.tuke.sk |
solaris | A532 | 147.232.34.94 |
solaris-gw.fei.tuke.sk |
vulkan | A514 | 147.232.34.254 |
vulcan-gw.fei.tuke.sk |
Upozornenie: Prístup cez prehliadač môže trvať dlhšie. Preto neprepadajte panike, ak sa vám hneď nezobrazí stránka aplikačného panelu.
Ako komunikovať so zariadením IoT Gateway z vašich zariadení
Pre komunikáciu so zariadením IoT Gateway môžete použiť:
WiFi - každý IoT Gateway má pre svoju miestnosť vytvorenú vlastnú WiFi sieť, ku ktorej sa môžete pripojiť,
Bluetooth Low Energy - vaše zariadenie môže publikovať údaje pomocou protokolu BLE, alebo
Zigbee - (niektoré) zariadenia sú vybavené Zigbee kontrolérom, vďaka ktorému môžete komunikovať so Zigbee zariadeniami v miestnoti.
Informácie o pripojení vašich zariadení nájdete nižšie.
Komunikácia prostredníctvom WiFi
Zariadenie IoT Gateway funguje aj ako WiFi prístupový bod, pomocou ktorého sa dostanete na služby zariadenia (ale nedostanete sa do internetu!). Pre pripojenie k sieti použite nasledujúce údaje:
- názov siete (SSID):
ROOM-things
- heslo:
welcome.to.the.ROOM
kde ROOM
je názov miestnosti zadaný malými písmenami. IP
adresa IoT Gateway zariadenia je v tejto sieti
10.0.0.1
.
Upozornenie: Aktuálne je možné sa prostredníctvom lokálnej WiFi siete dostať do internetu. Nespoliehajte sa však na to! Po nastavení správnych pravidiel v lokálnom firewall-e bude tento “problém” odstránený.
Komunikácia prostredníctvom BLE
Minipočítače Raspberry Pi 3 sú vybavené Bluetooth
modulom. V kompozícii je v ňom spustená služba Theengs, ktorá všetku komunikáciu
prostredníctvom tohto komunikačného protokolu preposiela do lokálneho
MQTT broker-a. BLE komunikáciu nájdete v téme
gateway/ble/#
.
Komunikácia prostredníctvom Zigbee
V každom IoT Gateway zariadení sa nachádza aj
Zigbee koordinátor. Služba Zigbee2MQTT zasa zabezpečí
komunikáciu medzi Zigbee zariadeniami a MQTT
komunikačným protokolom. Túto komunikáciu nájdete v téme
gateway/zigbee/#
.
Lokálny NTP server
Lokálny NTP server je zabezpečený službou Chrony. Synchronizáciu času vašich
zariadení zabezpečíte pripojením sa na NTP server, ktorý je v lokálnej
sieti dostupný na adrese 10.0.0.1
a komunikuje na
štandardnom porte 123
.
Lokálny MQTT broker
Lokálny MQTT broker je zabezpečený vďaka službe Mosquitto. Pripojiť sa k nemu môžete prostredníctvom týchto údajov:
- server: v aplikácii Node-RED môžete použiť názov služby
mosquitto
, na vašich IoT zariadeniach môžete použiť IP adresu zariadenia v lokálnej sieti10.0.0.1
- port:
1883
- používateľské meno:
maker
- heslo:
this.is.mqtt
MQTT broker pracuje v režime MQTT bridge. To znamená, že niektoré správy preposiela na MQTT broker, ktorý je na serveri Mother. Rovnako je prihlásený na odber niektorých správ na serveri Mother, ktoré potom preposiela na lokálnom MQTT broker-i (na zariadení IoT Gateway).
Tieto témy sú na MQTT broker na serveri Mother preposielané do témy s prefixom katedry a miestnosti, z ktorej boli odoslané. Napríklad:
- teplomer v miestnosti Caprica pošle nameranú hodnotu na
lokálny MQTT broker v miestnosti do témy
gateway/temperature/xiaomi
- lokálny MQTT broker ju následne prepošle do MQTT
broker-a na zariadení Mother do témy
kpi/caprica/temperature/xiaomi
Týmto spôsobom sa je možné prihlásiť na odber správ z konkrétnych miestností a samotné dáta sa ukladajú do databázy.
+--------+ +---------+ +--------+
| IoT | gateway/temperature/xiaomi | IoT | kpi/caprica/temperature/xiaomi | mother |
| device |----------------------------->| Gateway |--------------------------------->| |
+--------+ +---------+ +--------+
Rovnako to funguje aj opačným smerom. Ak chcete napríklad z vašaj aplikácie v miestnosti Kronos rozsvietiť svetlá, tak:
- na MQTT broker na serveri Mother pošlete správu do
témy
kpi/kronos/light/all/set
- MQTT broker na zariadení IoT gateway v miestnosti
Kronos túto správu dostane a lokálne ju prepošle do témy
gateway/light/all/set
+--------+ +---------+ +--------+
| IoT | gateway/light/all/set | IoT | kpi/kronos/light/all/set | mother |
| device |<------------------------| Gateway |<---------------------------| |
+--------+ +---------+ +--------+
Čo nemôžete robiť
Je prísne zakázané:
- Akokoľvek manipulovať so zariadením IoT Gateway!, napr. ho svojvoľne reštartovať.
- Pripájať k bráne vaše zariadenia!, napr. kvôli napájaniu na to využiť USB porty.
- Získať neoprávnený prístup do zariadenia!, napr. hackovaním.
Upozornenie
V prípade, že bude musieť byť na zariadení vykonaný servisný zásah, budú tímy využívajúce danú bránu penalizované adekvátnym znížením počtu bodov z výsledného hodnotenia! Rovnako tak, ako keď si platíte za servis zariadenia vo vašej domácnosti.
Čo by ste mali zabezpečiť
V prípade, že dôjde k výpadku internetu, vaše riešenie by malo v danej miestnosti pracovať aj naďalej bez akýchkoľvek obmedzení. Vaša klientska aplikácia/služba by zasa mala vedieť, že nie ste pripojení s domácnosťou a vašich klientov by na túto skutočnosť mala v prípade potreby upozorniť (napr. minimálne znefunkčnením tlačidiel, pomocou ktorých je možné ovládať zariadenia v miestnosti).
Pre tento prípad (ale nie len pre ten) by bolo dobré, aby vaše zariadenie IoT Gateway disponovalo jednoduchým dashboard-om. Pomocou tohto dashboard-u by ste mali vedieť:
- získať aktuálny prehľad o stave zariadení v miestnosti, a
- ovládať zariadenia v miestnosti.
Na vytvorenie tohto dashboard-u využite samotný Node-RED a jeho modul node-red-dashboard, ktorý je na zariadení predinštalovaný. V prípade potreby si doinštalujte akýkoľvek ďalší rozširujúci modul.
Keďže sa v každej miestnosti nachádza viacero tímov, každý si svoj vlastný dashboard uložte na samostatnú kartu (v kontexte dashboardu v aplikácii Node-RED je to Tab). Kartu pomenujte názvom svojho tímu alebo projektu, na ktorom pracujete.
Dashboard-y budú následne dostupné na adrese
http://iot-gateway:1880/ui
. Odklik je priamo dostupný z
aplikačného panelu zariadenia IoT Gateway v miestnosti.
Poznámka
Pre študentov ročníka 2023/24 nie je tvorba dashboard-ov povinná. Ak ho však vytvoríte, budeme ho rátať za samostatný produkt.