Gytis Karčiauskas

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

Reikalinga programinė įranga

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:

  1. maršrutizatoriaus WEB sąsajoje - prisijungti prie maršrutizatoriaus administravimo sąsajos ir surasti prijungtą įrenginį (dažniausiai vadinasi “slzb-06” arba panašiai)
  2. 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.

SLZB-06 WEB sąsaja

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

zigbee2mqtt permit

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

zigbee2mqtt device

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.