Zigbee2mqtt via TCP

cześć,
na wstępie chce zaznaczyć że mam wszystko postawione na Synology w Container Manager (dawniej docker). Wcześniej miałem Sonoff zigbee 3.0 plus i wszystko działało za pomocą tego poradnika:

Ale kupiłem SMLIGHT SLZB-06 bo chciałem wszystko oprzeć na porcie LAN. W pliku configuration.yaml dla Z2M podmiłem element jak poniżej bo tak mi sugerował nowy dongle

# Serial settings
serial:
  # Location of SLZB-06
  port: tcp://192.168.50.200:6638
  baudrate: 115200

to niestety Z2M wywala błędy jak tutaj:

info  2023-06-13 14:50:51: Logging to console and directory: '/app/data/log/2023-06-13.14-50-51' filename: log.txt
info  2023-06-13 14:50:51: Starting Zigbee2MQTT version 1.31.2 (commit #21f5125)
info  2023-06-13 14:50:51: Starting zigbee-herdsman (0.14.117)
error 2023-06-13 14:51:23: Error while starting zigbee-herdsman
error 2023-06-13 14:51:23: Failed to start zigbee
error 2023-06-13 14:51:23: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
error 2023-06-13 14:51:23: Exiting...
error 2023-06-13 14:51:23: Error: AREQ - SYS - resetInd after 30000ms
    at Timeout._onTimeout (/app/node_modules/zigbee-herdsman/src/utils/waitress.ts:64:35)
    at listOnTimeout (node:internal/timers:569:17)
    at processTimers (node:internal/timers:512:7)

info  2023-06-13 14:51:32: Logging to console and directory: '/app/data/log/2023-06-13.14-51-32' filename: log.txt
info  2023-06-13 14:51:32: Starting Zigbee2MQTT version 1.31.2 (commit #21f5125)
info  2023-06-13 14:51:32: Starting zigbee-herdsman (0.14.117)
error 2023-06-13 14:51:37: Not connected to MQTT server!

tak wygląda w całości plik Z2M configuration.yaml:

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.50.201:1883
  user: ---tutaj moj user---
  password: ---tutaj moje haslo---
serial:
  port: tcp://192.168.50.200:6638
  baudrate: 115200
frontend:
  port: 8081
  host: 192.168.50.201
advanced:
  network_key:
    - 108
    - 129
    - 12
    - 109
    - 56
    - 44
    - 76
    - 29
    - 169
    - 158
    - 99
    - 98
    - 188
    - 204
    - 75
    - 26
  pan_id: 63263

mam jeszcze jedno pytanie mniej instotne ale również. Nowy dongle powinien ciągnąć prąd z LAN ale tak nie jest bo musze bez zewnętrznego zasilania nia działa jest na to jakiś trik?

Po pierwsze czy możesz wejść przeglądarką na GUI tego koordynatora?
http://192.168.50.200

jeśli nie to prawdopodobnie pracuje w trybie USB (można przełączyć przyciskiem)

Jeśli tak to jeszcze pytanie czy kontener w którym pracuje Z2M ma dostęp do sieci 192.168.50.0/24 ?

Masz switcha z PoE? Jeśli tak to w jakim standardzie PoE?
Normalne porty Ethernet (czyli sławetny “LAN” w typowych routerach czy switchach) nie dostarczają zasilania.
W samym standardzie PoE też jest zdrowy pierdolnik i nie wszystko ze wszystkim jest kompatybilne.

Tu specyfikacja określa, że to ma być PoE 802.5af

tak moge sie zalogowac na dongle przez (wczesniej nadany staly adres IP na routerze

nie umiem tego zweryfikować. Podpowiesz jak?

ps juz z tego wszystkiego postawilem na nowo i mqtt broker i Z2M i dalej nic a co ciekawe w mqtt w home assistant dalej pamieta jedno urzadzenie (stary czujnik otwarcia ktory parowalem jeszcze na poprzednim dongle)

co ciekawe z ZHA tez nie moge sie połączyc, byc moze problem jest wspólny?

Zigbee2mqtt nie może się połączyć do brokera MQTT. W jaki sposób masz go uruchomionego? Jako dodatek do HA? Wtedy wystarczy taka konfiguracja:

mqtt: {}

Reszta skonfiguruje sie automatycznie.

hej cześć,
jeżeli chodzi o mqtt broker to mam go uruchomionego dokładnie w ten sposób:

A próbowałeś sie podłączyć klientem MQTT (np. MQTT-Explorer’em) do tego brokera?

Nigdy nie próbowałem tego, właściwie jest to jedynie kontener który nie wiem jak działa i nie umiem na niego wejść (jedynie HA może się na niego zalogować a urządzenia z tasmotą na pokładzie działają jakoś) nie wiem co to MQTT Explorer (miałby to być kolejny kontener?)

Jak pisałem wcześniej mam wszystko oparte o Dockera

Edit:
Poszukam w necie info na temat tego Explorera i dam znać jutro

Trudno będzie pomagac komuś kto nie podstawowego pojecia co i jak, z czym gada dlatego proponuję zacząć zabawę z HA zainstalowanym bezpośrednio na PC albo RPi, gdzie wszystkie wymagane systemy jak broker MQTT, Z2M itd można łatwo zainstalować jako dodatki a potem łatwo skonfigurować. W miarę zdobywania wiedzy i doświadczenia można potem uruchomić całość w dowolny sposób bo naprawdę nie jest to skomplikowane :slight_smile:.

cytujac klasyka ja bez przerwy sie ucze :wink:

mam tego Explorer’a widze w nim pod adresem IP

  • tele - mam tam podlaczone gniazdka wifi na tasmocie
  • tasmota a w nim katalog discovery a w nim znowu ww gniazdka po MAC adresach
  • $SYS
  • cmd
  • stat

wszystko za wyjatkiem $SYS powiazane jest z podlaczonymi gniazkami w tasmota (jedno z nich czesto sie ponownie loguje stad cmd i stat)
moj problem z Zigbee2MQTT musi byc powiazany z tym ze ZHA tez mi nie dziala. Gdy dodaje dongle do ZHA idzie gladko do momentu az wybieram zeby utworzylo nowa siec, wtedy mieli dlugo i konczy sie tym ze mam blad i koniec.
Nie wiem o co moze chodzic mam dongle podlaczonego do routeraz via LAN, juz na wszelki wypadek w routerze robilem przekierowanie portu 6638 na dongle (od tak na wszelki wypadek) ale nie dziala dalej.

Po tym jak zwróciłem sonoff 3.0 plus odinstalowalem rowniez to co robilem zgodnie z tym proadnikiem zebym on dzialal Synology: How to Add USB Support on DSM 7 – Marius Hosting

zastanawia mnie jeszcze to ze zeby zainstalowac zigbee2mqtt musze wpisac to w ssl:

sudo docker run -itd --name="Zigbee2MQTT" --net=host -e TZ=Europe/Warsaw --device=/dev/ttyACM0 --restart=always -v /volume1/docker/zigbee2mqtt/data:/app/data koenkk/zigbee2mqtt:latest

i tam jest ta fraza device=/dev/ttyACM0 byc moze powinienem ją zastapic czyms innym lub calkiem wywalic?

Musisz zrozumieć jak działa komenda docker run. Na początek:

Rozumiem że wymagana jest ta ścieżka ale ja jej nie mam bo nie mam stronników USB na swoim NAS nie wiem co mam tam wpisać lub jak poprawnie wpisać IP nowego dongla?

Jeżeli przekazujesz dla kontenera urządzenie device wpięte fizycznie w port USB hosta, to w konfiguracji kontenera należy wskazać ścieżkę do tego urządzenia.

Możesz zostawić… powinieneś zrozumieć co oznacza ten zapis. Poszukaj informacji na ten temat - przykładowe hasło wyszukiwania Docker przekazywanie urządzeń/peryferii dla hosta
Przetłumaczony cytat z dokumentacji Z2M, w którym czytamy o zaleceniu używania identyfikatora urządzenia (a nie tylko samego portu ttyACM0):

--device=/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018ED3DDF-if00:/dev/ttyACM0

" Lokalizacja adaptera (np. CC2531). Ścieżka przed :to ścieżka na hoście, ścieżka po niej to ścieżka zmapowana do wnętrza kontenera. Należy zawsze używać tzw /dev/serial/by-id/ścieżka na hoście."

W Twoim przypadku najważniejsze jest uzyskanie przez kontener dostępu do sieci Ethernet i odpowiednich portów na hoście. System DSM jest nietypową odmianą Linux’a, więc być może sam zapis --net=host w komendzie docker run nie załatwia sprawy. Spróbował bym, na Twoim miejscu, zmapować porty kontenera odpowiednimi wpisami konfiguracji komendy docker run podczas tworzenia kontenera.
np

-p 8080:8080 \
-p 6638:6638 \

itd
Wszystko po to aby kontener Z2M mógł połączyć się z koordynatorem w sieci LAN.

no dobra teraz mam tak:
gdy wrzucę to:

sudo docker run -itd --name="Zigbee2MQTT" --net=host -p 6638:6638 -p 8080:8080 -e TZ=Europe/Warsaw --device=/dev/ttyUSB0 --restart=always -v /volume1/docker/zigbee2mqtt/data:/app/data koenkk/zigbee2mqtt:latest

lub to:

sudo docker run -itd --name="Zigbee2MQTT" --net=host -p 6638:6638 -p 8080:8080 -e TZ=Europe/Warsaw --device=/dev/ttyACM0 --restart=always -v /volume1/docker/zigbee2mqtt/data:/app/data koenkk/zigbee2mqtt:latest

w PuTTY mam taka zwrotke:

WARNING: Published ports are discarded when using host network mode
c4094b9acaf877e2dae98985abf0927b3bfeca6fd40fe60f2f321a0ea009a714
docker: Error response from daemon: error gathering device information while adding custom device "/dev/ttyUSB0": no such file or directory.

różni sie tylko koncowka bo albo jest ‘/dev/ttyUSB0’ albo ‘/dev/ttyACM0’

kontener nie startuje pliku configuration.yaml chyba nawet nie zaciaga a komunikat w dockerze mam taki:

image

ewidetnie chce miec cos podlaczone via USB a nie ma

Źle, port 6638 to port urządzenia SMLIGHT SLZB-06 (działającego po sieci ethernet) i nie ma nic wspólnego z Dockerem, w Dokerze chcesz uruchomić Z2M więc korzystasz tylko z -p 8080:8080.

Więc po co mapujesz ścieżkę do tego urządzenia (koordynatora Zigbee) dla kontenera, skoro go nie podłączasz, wkładasz fizycznie do portu USB…

Wg mnie kolega @toahawk5000 chce podłaczyć koordynator po sieci ethernet więc nie musi mapować żadnych urządzeń w Dokerze (nie mam nic wpiętego do USB).

Dokładnie - chcę aby kolega @toahawk5000 zrozumiał co wpisuje, a nie bezmyślnie próbował różnych kombinacji. Wpisy dla docker run są konkretne dla różnych składowych uruchomienia kontenera w środowisku hosta. Polecam na początek próbę zrozumienia jak działa docker, a następnie użycie komendy docker run --help

nie chce sie spierać i się wybielać wiem że jeszcze duzo nie umiem.
To jest swiat w którym nawiet wielkość liter ma znaczenie wcześniej pisałeś "angel’ ze ta czesc z device moze zostac.
ok dalem tak:

sudo docker run -itd --name="Zigbee2MQTT" --net=host -p 8080:8080 -e TZ=Europe/Warsaw --restart=always -v /volume1/docker/zigbee2mqtt/data:/app/data koenkk/zigbee2mqtt:latest

kontener wystartowal i zaczal oczywiscie walić błędami
podmieniłem mu plik configuration.yaml na taki:

# Home Assistant integration (MQTT discovery)
homeassistant: false

# allow new devices to join
permit_join: true

# MQTT settings
mqtt:
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://192.168.50.201:1883'
  # MQTT server authentication, uncomment if required:

# Serial settings
serial:
  # Location of SLZB-06
  port: tcp://192.168.50.200:6638
  baudrate: 115200

frontend:
  # Optional, default 8080 or you can use your own as well.
  port: 8080
  # IP address of the device running Zigbee2MQTT
  host: 192.168.50.201
  
advanced:
  network_key: GENERATE
  pan_id: GENERATE
  transmit_power: 20

coś zaskoczyło bo po ponownym uruchomieniu zmienił się na taki:

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.50.201:1883
serial:
  port: tcp://192.168.50.200:6638
  baudrate: 115200
frontend:
  port: 8080
  host: 192.168.50.201
advanced:
  network_key:
    - 109
    - 252
    - 24
    - 4
    - 117
    - 139
    - 44
    - 24
    - 133
    - 100
    - 133
    - 140
    - 198
    - 50
    - 166
    - 28
  pan_id: 60466
  transmit_power: 20

ale i tak non stop sie restartuje
ponizej LOG

info  2023-06-14 13:42:26: Logging to console and directory: '/app/data/log/2023-06-14.13-42-26' filename: log.txt
info  2023-06-14 13:42:26: Starting Zigbee2MQTT version 1.31.2 (commit #21f5125)
info  2023-06-14 13:42:26: Starting zigbee-herdsman (0.14.117)
error 2023-06-14 13:42:59: Error while starting zigbee-herdsman
error 2023-06-14 13:42:59: Failed to start zigbee
error 2023-06-14 13:42:59: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
error 2023-06-14 13:42:59: Exiting...
error 2023-06-14 13:42:59: Error: AREQ - SYS - resetInd after 30000ms
    at Timeout._onTimeout (/app/node_modules/zigbee-herdsman/src/utils/waitress.ts:64:35)
    at listOnTimeout (node:internal/timers:569:17)
    at processTimers (node:internal/timers:512:7)


info  2023-06-14 13:43:21: Logging to console and directory: '/app/data/log/2023-06-14.13-43-21' filename: log.txt
info  2023-06-14 13:43:21: Starting Zigbee2MQTT version 1.31.2 (commit #21f5125)
info  2023-06-14 13:43:21: Starting zigbee-herdsman (0.14.117)
error 2023-06-14 13:43:26: Not connected to MQTT server!

aha moze jeszcze ten komunikat sie przyda:

EDIT
wywalilem linijke z net=host bo wczesniej krzyczalo ze na hoscie cos jest nie tak z mapowaniem portow
logi mam nastepujace:

info  2023-06-14 14:08:03: Logging to console and directory: '/app/data/log/2023-06-14.14-08-02' filename: log.txt
info  2023-06-14 14:08:03: Starting Zigbee2MQTT version 1.31.2 (commit #21f5125)
info  2023-06-14 14:08:03: Starting zigbee-herdsman (0.14.117)
error 2023-06-14 14:10:11: Error while starting zigbee-herdsman
error 2023-06-14 14:10:11: Failed to start zigbee
error 2023-06-14 14:10:11: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
error 2023-06-14 14:10:11: Exiting...
error 2023-06-14 14:10:11: Error: Error while opening socket
    at Socket.<anonymous> (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/znp/znp.ts:198:24)
    at Socket.emit (node:events:525:35)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)

Czyli jesteś w tym samym miejscu. Brak połączenia z serwerem (brokerem) MQTT.

Musisz sprawdzić czy ten fragment konfiguracji Z2M jest właściwy:

mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.50.201:1883

Spróbuj tak:

mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost:1883

Ewentualnie jak to nie za działa, to może wpisać sztywny adres kontenera podejrzany np z Portainer:

dzieki za odpowiedz
jestem caly czas w tym samym miejscu
po Twoich sugestiach Z2M zaczal jak by dluzej myslec zanim wywalil jakis blad i juz myslalem ze sie uda ale ostatecznie wywalil.

to sa moje ustawienia brokera:

a tu kolejna czesc:

a tak wyglada moj Z2M configuration.yaml plik:

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://172.17.0.2:1883
serial:
  port: tcp://192.168.50.200:6638
  baudrate: 115200
frontend:
  port: 8080
  host: 192.168.50.201
advanced:
  network_key:
    - 226
    - 62
    - 4
    - 21
    - 4
    - 60
    - 123
    - 154
    - 232
    - 54
    - 40
    - 221
    - 232
    - 20
    - 32
    - 76
  pan_id: 1079
  transmit_power: 20