Lauko jutiklio duomenų perdavimas Zigbee ryšiu į MQTT serverį
Tęsiu kelionę su lauko jutikliu ir šiame straipsyje priimsime jo siunčiamus duomenis ir paruošime apdorojimui.
Reikalinga geležis#
- Zigbee jutiklis (pvz., Sonoff SNZB-02P)
- Zigbee koordinatorius (pvz., Smlight SLZB-06)
- Kompiuteris Zigbee2MQTT paleidimui (pvz., Raspberry Pi 3)
Reikalinga programinė įranga#
- Zigbee2MQTT
- MQTT brokeris (pvz., Mosquitto)
Zigbee koordinatoriaus paruošimas#
Paruošti Smlight SLZB-06 koordinatorių pakankamai paprasta - tereikia prijungti elektros maitinimą ir pajungti LAN kabelį į maršrutizatorių.
IP adreso sužinojimas#
Vėliau, kad galėtume prijungti Zigbee2MQTT prie koordinatoriaus, mums reikės sužinoti jo (koordinatoriaus) IP adresą. Tai galime padaryti keliais būdais:
- maršrutizatoriaus WEB sąsajoje - prisijungti prie maršrutizatoriaus administravimo sąsajos ir surasti prijungtą įrenginį (dažniausiai vadinasi “slzb-06” arba panašiai)
- nuskenuoti tinklą - naudojant tokius įrankius kaip
nmap.
Mano atveju koordinatorius gavo IP adresą 192.168.50.11. Įsiminkite savo koordinatoriaus IP - jo prireiks konfigūruojant Zigbee2MQTT.
Galite pasiekti koordinatoriaus WEB sąsają atsidarę naršyklėje http://IP_ADRESAS (pvz., http://192.168.50.11). Čia taip pat galite pamatyti įrenginio informaciją ir konfigūracijos nustatymus, kurių reikės vėliau.

Kompiuterio paruošimas#
Panaudosiu seną gerą Raspberry Pi 3. Diegimui naudosiu Raspberry Pi OS Lite OS, nes mūsų tikslams nereikia GUI. Taip pat kompiuterį reikia pajungti prie maršrutizatoriaus.
Dar mums reikės docker ir docker-compose. Jei jų dar neturite, galite įdiegti pagal oficialias Docker instrukcijas
.
Zigbee2MQTT diegimas#
Susikuriame darbo katalogą ir reikiamą struktūrą:
mkdir -p ~/zigbee2mqtt
cd ~/zigbee2mqtt
mkdir -p mosquitto/config mosquitto/data mosquitto/log
mkdir -p zigbee2mqtt-data
docker-compose konfigūracija#
Susikuriame docker-compose.yaml failą darbiniame kataloge:
services:
mosquitto:
image: eclipse-mosquitto:2.0.22
container_name: mosquitto
restart: unless-stopped
ports:
- "1883:1883"
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
zigbee2mqtt:
image: koenkk/zigbee2mqtt:2.6.3
container_name: zigbee2mqtt
restart: unless-stopped
depends_on:
mosquitto:
condition: service_started
volumes:
- "./zigbee2mqtt-data:/app/data"
ports:
- "8080:8080"
Mosquitto konfigūracija#
Sukuriame mosquitto/config/mosquitto.conf failą su šiuo turiniu:
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
log_timestamp_format %Y-%m-%dT%H:%M:%S
listener 1883 # allows remote access
socket_domain ipv4 # works only in remote access mode
allow_anonymous true
Zigbee2MQTT konfigūracija#
Sukuriame zigbee2mqtt-data/configuration.yaml failą su šiuo turiniu (nepamirškite pakeisti IP adresą į savo koordinatoriaus IP):
version: 4
homeassistant:
enabled: false
frontend:
enabled: true
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://mosquitto:1883'
user: ''
password: ''
serial:
adapter: zstack
port: tcp://192.168.50.11:6638 # location of SLZB-06
baudrate: 115200
disable_led: false
Paleidimas#
Paleidžiame komandą:
docker compose up -d
Jei viskas pasileido tvarkingai, turėtume pasiekti Zigbee2MQTT WEB sąsają naršyklėje: http://RASPBERRY_PI_IP:8080 (pvz., jei Raspberry Pi IP adresas yra 192.168.50.100, tai http://192.168.50.100:8080).
Raspberry Pi IP adresą galite sužinoti komanda:
hostname -I
Jutiklio pajungimas#
Jei jutiklis jungiamas pirmą kartą, tai galime ištraukti juostelę, kuri skiria bateriją ir kontaktus, ir jutiklis iš karto pereis į pairing režimą. Jei tokio nėra - dažniausiai būna mygtukas, kurį reikia ilgiau paspausti.
Tuo tarpu Zigbee2MQTT reikia taip pat pereiti į pairing režimą paspaudžiant Permit join mygtuką.

Neužilgo jutiklis turėtų susijungti ir atsirasti Zigbee2MQTT dashboard’e.

Jutiklis iš pradžių turi keistą pavadinimą 0x187a3efffe302eec, todėl galime jį pakeisti į draugiškesnį - balkonas_laukas_termometras. Tai galime padaryti tiesiog paspaudę ant jutiklio pavadinimo Zigbee2MQTT sąsajoje.
Duomenų patikrinimas#
Dabar patikrinkime, ar duomenys iš tiesų keliauja į MQTT serverį. Zigbee2MQTT sąsajoje paspaudę ant jutiklio turėtumėte matyti dabartines reikšmes (temperatūrą, drėgmę, bateriją).
Taip pat galime pasiklausyti MQTT žinučių naudojant komandą:
docker exec -it mosquitto mosquitto_sub -t "zigbee2mqtt/#" -v
Turėtumėte matyti periodiškai ateinančias žinutes iš jutiklio, pavyzdžiui:
zigbee2mqtt/balkonas_laukas_termometras {"temperature":5.2,"humidity":85,"battery":100,"voltage":3000}
Jei matote kažką panašaus, tuomet viskas veikia. Duomenys dabar keliauja į Mosquitto MQTT serverį. Kitame straipsnyje pradėsime skaityti šiuos duomenis ir juos išsaugoti ilgalaikiam saugojimui.