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, ktorá obsahuje tieto služby:
Homepage - aplikačný panel, ktorý sa vám zobrazí pri prístupe na zariadenie na porte
80
cez protokol HTTPTelegraf - 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 - zariadenia sú vybavené externým 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ý.
Upozornenie
WiFi adaptér na minipočítači Raspberry Pi pracuje v režime Access Point, vďaka čomu umožní pripojiť len istý počet zariadení. Po dosiahnutí tohto limitu (ktorý je pod 10) sa k WiFi sieti už nepripojí žiadne ďalšie zariadenie. Rozhodne sa preto k WiFi sieti, ktorú vytvára zariadenie IoT Gateway nepripájajte pomocou vašich laptopov!!! S vašimi chytrými zariadeniami sa k tejto WiFi sieti pripájajte taktiež len na nevyhnutný čas!!!
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
gw/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
gw/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
gw/temp/xiaomi/data
- lokálny MQTT broker ju následne prepošle do MQTT
broker-a na zariadení Mother do témy
kpi/caprica/temp/xiaomi/data
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 | gw/temp/xiaomi/data | IoT | kpi/caprica/temp/xiaomi/data | 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 | gw/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.
Č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) je potrebné, aby vaše zariadenie IoT Gateway disponovalo jednoduchým dashboard-om, pomocou ktorého 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://IOTGW_IP:1880/ui
. Odklik je priamo dostupný z
aplikačného panelu zariadenia IoT Gateway v miestnosti.