Zariadenie IoT Gateway

vytvorenie vlastného zariadenia IoT Gateway pomocou kompozície kontajnerov

Video pre cvičenie

Motivácia

Doteraz sme na naše experimenty používali MQTT broker nachádzajúci sa na serveri Mother, na ktorý sme sa pripájali priamo. Podstatou architektúry Smart Department je však distribuované riešenie pomocou viacerých MQTT brokerov, ktoré sa nachádzajú v jednotlivých miestnostiach na zariadeniach označených ako IoT Gateway. Na tomto cvičení si teda základ takého zariadenia vytvoríme pomocou kompozície kontajnerov na vlastnom počítači a vo výsledku ho pripojíme do samotnej architektúry.

Smart Department: Architektúra

Ciele

  • naučiť sa vytvárať kompozíciu kontajnerov

Postup

The MQTT Broker

Keďže je srdcom celej architektúry Smart Department komunikačný protokol MQTT, tak v prvom kroku vytvoríme základ kompozície práve so zameraním na tento protokol. Do kompozície totiž vložíme MQTT broker Mosquitto a klienta MQTT Explorer.

Task

Vytvorte si samostatný priečinok gateway/, v ktorej sa bude nachádzať kompozícia pre lokálne zariadenie IoT Gateway.

Vytvorte nasledovnú štruktúru priečinkov:

gateway/
├── configs/
│   ├── mosquitto/
│   │   └── config/
│   │       └── mosquitto.conf
│   └── mqtt-explorer/
└── docker-compose.yaml

Task

V priečinku gateway/configs/mosquitto/config/ vytvorte súbor mosquitto.conf, ktorý bude obsahovať počiatočnú konfiguráciu pre službu Mosquitto.

MQTT broker Mosquitto nakonfigurujeme tak, aby sa naň bolo možné pripájať anonymne. To zabezpečíme pomocou nasledujúceho konfiguračného súboru:

# allow annonymous connections
allow_anonymous true

# open listener port
listener 1883

Task

Vytvorte súbor pre kompozíciu docker-compose.yaml a podľa pokynov do neho pridajte službu mosquitto a mqtt-explorer.

Súbor s kompozíciou bude vyzerať nasledovne:

services:

  mosquitto:
    image: eclipse-mosquitto
    ports:
    - 1883:1883
    volumes:
    - ./configs/mosquitto:/mosquitto

  mqtt-explorer:
    image: smeagolworms4/mqtt-explorer
    ports:
    - 4000:4000
    volumes:
    - ./configs/mqtt-explorer:/mqtt-explorer/config

Task

Spustite vytvorenú kompozíciu.

Súbor s kompozíciou je možné spustiť príkazom:

$ docker compose up

Task

Pomocou klienta MQTT Explorer sa pripojte na MQTT broker Mosquitto.

MQTT Explorer je spustený na lokálnom porte 4000. Ak teda otvoríte prehliadač na adrese http://localhost:4000, v prehliadači sa zobrazí jeho používateľské rozhranie. Pre pripojenie sa k lokálnemu MQTT brokeru spustenému v kompozícii stačí, ak do poľa Host zadáte názov služby mosquitto tak, ako je uvedený v súbore s kompozíciou.

Pripojenie chytrého senzora

Všetky chytré veci je možné do architektúry Smart Department pripájať prostredníctvom zariadenia IoT Gateway. To pracuje ako WiFi prístupový bod, ale okrem možnosti pripojenia cez WiFi je možné pripájať aj zariadenia prostredníctvom komunikačných protokolov Zigbee a BLE.

Dnes vytvoríme IoT Gateway pomocou kompozície a pripojíme k nemu vytvorený chytrý senzor pomocou protokolu MQTT. V aktuálnej konfigurácii však váš počítač ako prístupový bod nepracuje. Miesto toho využijeme prístupový bod v miestnosti, cez ktorý prepojenie zabezpečíme.

Task

Upravte konfiguráciu chytrého senzora tak, aby sa mohol pripojiť na MQTT broker spustený v kompozícii.

V konfigurácii chytrého senzora je potrebné overiť a upraviť nasledovné nastavenia:

  • konfigurácia pripojenia na WiFi - váš počítač aj chytrý senzor musia byť pripojení na rovnakú WiFi sieť
  • adresa MQTT broker-a - IP adresa broker-a je momentálne IP adresa WiFi sieťového adaptéra vášho počítača
  • používateľské meno a heslo sú aktuálne prázdne (broker umožňuje anonymné pripojenie)
  • ako base_topic použite gw/temperature/<LOGIN> pre teplotu a gw/humidity/<LOGIN> pre vlhkosť

Task

Spustite chytrý senzor a overte správnosť vašej úpravy.

Ak ste postupovali správne, v aplikácii MQTT Explorer uvidíte správy prichádzajúce z vášho senzora.

MQTT Bridge

Aktuálne zostávajú namerané údaje len na lokálnom MQTT brokeri. Ak ich chceme dostať do MQTT brokera na serveri Mother, musíme vytvoriť tzv. bridge.

Task

Pripojte lokálny MQTT broker na vzdialený MQTT broker nachádzajúci sa na serveri mother.

Pripojenie zabezpečíme rozšírením konfigurácie lokálneho MQTT brokera o nasledujúce riadky:

# bridge from local mqtt broker to mother
connection <UID>-to-mother
address 147.232.205.176
remote_username maker
remote_password mother.mqtt.password

kde UID je váš univerzitný login.

Task

Overte úspešnosť vášho pripojenia.

To, či pripojenie prebehlo v poriadku, si viete overiť pohľadom do logovacích správ. Príslušné správy budú vyzerať takto:

mosquitto version 2.0.20 starting
Config loaded from /mosquitto/config/mosquitto.conf.
Opening ipv4 listen socket on port 1883.
Opening ipv6 listen socket on port 1883.
Connecting bridge ab123cd-to-mother (147.232.205.176:1883)
mosquitto version 2.0.20 running

Task

Zabezpečte, aby správy, ktoré publikuje váš senzor do lokálneho MQTT brokera, boli preposielané na MQTT broker matka.

To zabezpečíme pridaním pravidiel na preposielanie týchto správ v konfigurácii pre MQTT broker:

# forwarding messages from local gw to mother
topic ab123cd        out 2 gw/temperature/ kpi/ab123cd/temperature/
topic ab123cd/status out 2 gw/temperature/ kpi/ab123cd/temperature/

Task

Zabezpečte, aby správy posielané chytrému senzoru cez MQTT broker na serveri mother boli doručované na lokálnom MQTT brokeri.

# subscribing to topics on mother
topic temperature/ab123cd/set   in 2 gw/ kpi/ab123cd/
topic temperature/ab123cd/cmd   in 2 gw/ kpi/ab123cd/

Pripojenie notifikačnej služby

Počas posledných cvičení sme vytvorili službu Notifier, pomocou ktorej je možné posielať notifikácie.

Služby sa však do architektúry Smart Department pripájajú cez cloud. To znamená, že aj naša vytvorená služba sa bude do architektúry pripájať cez MQTT broker v cloud-e tak, ako tomu bolo doteraz.

V tomto kroku však rozšírime kompozíciu o spúšťanie notifikačnej služby.

Task

Rozšírte kompozíciu o vytvorenú službu Notifier, z ktorej ste vytvorili Docker obraz a nahrali ste ho na hub.docker.com.

Do konfigurácie kompozície pridajte túto službu:

notifier:
  image: <USERNAME>/notifier
  environment:
    - NOTIFIER_BROKER=147.232.205.176
    - NOTIFIER_USER=maker
    - NOTIFIER_PASSWORD=mother.mqtt.password
    - NOTIFIER_BASE_TOPIC=services/notifier/<LOGIN>

kde <USERNAME> je vaše používateľské meno, akým ste sa zaregistrovali na portáli hub.docker.com.

Task

Overte vašu kompozíciu.

Kompozíciu po zmene konfigurácie vypnite a opäť zapnite. Ak ste postupovali správne, tak po poslaní správy do témy services/notifier vo formáte, ktorý sme vytvorili na predchádzajúcich cvičeniach, dostanete odoslanú notifikáciu.

Task

Zabezpečte, aby správy, ktoré budú z lokálneho MQTT brokera odosielané do témy

Ďalšie úlohy

  1. Ak chcete mať pre svoju kompozíciu aj pekné používateľské webové rozhranie, môžete vyskúšať nietkorý z aplikačných dashboardov, ako je napr. Homepage. Ten je použitý aj na jednotlivých zariadeniach IoT Gateway.

Ďalšie zdroje