Zariadenie IoT Gateway
vytvorenie vlastného zariadenia IoT Gateway pomocou kompozície kontajnerov
Video pre cvičenie
Upozornenie
Predtým, ako prídete na cvičenie, tak:
je potrebné mať lokálne nainštalovaný Docker
je potrebné zvládať základy práce s technológiou Docker
prineste si vytvorených chytrý senzor teploty vytvorený počas predchádzajúcich cvičení
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.
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
Poznámka
Pre testovacie účely je dobré príkaz spúšťať takto:
$ docker compose up || docker compose down --volumes
Po nekorektnom ukončení kompozície (napr. stlačením kláves
Ctrl+C
) dôjde k ukončeniu kompozície a taktiež sa odstránia
aj všetky anonymné zväzky.
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.
Poznámka
Pri diagnostikovaní problémov vám pomôže sledovať aj log správy,
ktoré produkuje MQTT broker. Tie viete vidieť vo výstupe
príkazu docker compose up
, ale jeho súčasťou sú log správy
zo všetkých služieb. Ak chcete zobrazovať správy len zo služby
mosquitto
, tak v priečinku, kde sa nachádza súbor s
konfiguráciou kompozície docker-compose.yaml
spustite
príkaz:
$ docker compose logs mosquitto
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žitegw/temperature/<LOGIN>
pre teplotu agw/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
- 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
- Docker Compose - Docker Compose is a tool for defining and running multi-container applications.
- docker-compose
cheatsheet - ťahák pre používanie
docker compose