Problem Set #4: IoT Gateway

alebo o druhej vrste IoT architektúry

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.

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.

IoT Gateway: Homepage

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 sieti 10.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.

Č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.

Ukážka dashboard-u v miestnosti

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.