Sprawdzę to:
“Ten sposób wyjaśnia, jak uruchomić Zigbee2MQTT z adapterem w odległej lokalizacji. Do tego wykorzystamy ser2net, który pozwala na podłączenie do portu szeregowego nad TCP. W ten sposób można np. skonfigurować Raspberry Pi Zero z adapterem podłączonym podczas uruchamiania Zigbee2MQTT na innym systemie. Poniższe instrukcje muszą być wykonane w systemie, do którego adapter jest podłączony.”
Stan zastany:
-
HA (ethernet, IP 192.168.22.12) uruchomiony NUC’u, koordynator Conbee2 wpięty do portu USB na przedłużaczu USB, zainstalowane Zigbee2MQTT (version 1.41.0) jako dodatek o konfiguracji:
serial: port: /dev/ttyACM0 adapter: deconz
-
Obok NUCa - RPi3 (Wi-Fi, IP 192.168.22.6) z Raspbian GNU/Linux 12 (bookworm) 32-bit z monitoringiem UPSa po USB.
Stan oczekiwany:
- RPi3, koordynator Conbee2 wpięty do portu USB na przedłużaczu USB, uruchomione ser2net
- HA, zainstalowane Zigbee2MQTT (version 1.41.0) jako dodatek o konfiguracji:
serial: port: tcp://192.168.22.6:20108 adapter: deconz
Co należy zrobić:
Na RPi3 zainstalować pakiet ser2net:
macek@raspberrypi:~ $sudo apt-get install ser2net
Zainstalowana wersja to:
ser2net/stable,now 4.3.11-1 armhf [installed]
czyli edytować należy plik konfiguracyjny /etc/ser2net.yaml
.
Zatrzymać Z2M, przełożyć Conbee do portu RPi, zweryfikować port pod jakim dostępny jest stick:
macek@raspberrypi:~ $ dmesg
...
[5750258.173835] usb 1-1.4: new full-speed USB device number 12 using dwc_otg
[5750258.308213] usb 1-1.4: New USB device found, idVendor=1cf1, idProduct=0030, bcdDevice= 1.00
[5750258.308228] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[5750258.308237] usb 1-1.4: Product: ConBee II
[5750258.308243] usb 1-1.4: Manufacturer: dresden elektronik ingenieurtechnik GmbH
[5750258.308250] usb 1-1.4: SerialNumber: DE2158357
[5750258.309493] cdc_acm 1-1.4:1.0: ttyACM0: USB ACM device
...
Stick dostępny jest pod /dev/ttyACM0
.
Edytujemy plik /etc/ser2net.yaml
:
macek@raspberrypi:~ $ sudo nano /etc/ser2net.yaml
Nalepiej zakomentować (dodając na początku znak #
) wszystkie wpisy i dodać poniższą konfigurację uwzględniając port /dev/ttyACM0
:
connection: &con01
accepter: tcp,20108
connector: serialdev,/dev/ttyACM0,115200n81,nobreak,local
options:
kickolduser: true
Po każdej edycji pliku konfiguracyjnego należy zrestartować usługę ser2net:
macek@raspberrypi:~ $ sudo service ser2net restart
i sprawdź czy uruchomiła poprawnie:
macek@raspberrypi:~ $ sudo service ser2net status
● ser2net.service - Serial port to network proxy
Loaded: loaded (/lib/systemd/system/ser2net.service; enabled; preset: enabled)
Active: active (running) since Thu 2024-12-05 22:17:57 CET; 37s ago
Docs: man:ser2net(8)
Main PID: 13050 (ser2net)
Tasks: 1 (limit: 1568)
CPU: 30ms
CGroup: /system.slice/ser2net.service
└─13050 /usr/sbin/ser2net -n -c /etc/ser2net.yaml -P /run/ser2net.pid
Dec 05 22:17:57 raspberrypi systemd[1]: Starting ser2net.service - Serial port to network proxy...
Dec 05 22:17:57 raspberrypi systemd[1]: Started ser2net.service - Serial port to network proxy.
Teraz z dowolnego komputera w sieci należy sprawdzić czy można się podłączyć się do ser2net na RPi3:
C:\Users\macek>telnet 192.168.22.6 20108
Po prawidłowym połączeniu powinne pojawić się krzaczki lub pusta strona jak poniżej:
Jednocześnie na RPi3 można zobaczyć to zestawione połączenie:
macek@raspberrypi:~ $ netstat | grep 20108
tcp6 0 0 192.168.2.6:20108 192.168.22.40:55509 ESTABLISHED
Widoczny IP 192.168.22.40 to IP komputera, z którego było wykonywane polecenie telnet
. Połączenie telnet należy zamknąć naciskając ‘CTRL+]’ a potem ‘q’.
Po takiej weryfikacji można dokonać zmiany w konfiguracji Z2M:
serial:
port: tcp://192.168.22.6:20108
adapter: deconz
i ponownie uruchomić Z2M.
Na RPi będzie widoczne tym razem połączenie z HA:
macek@raspberrypi:~ $ netstat | grep 20108
tcp6 0 0 192.168.2.6:20108 homeassistant.loc:43922 ESTABLISHED
macek@raspberrypi:~ $ ping homeassistant.local
PING homeassistant.local (192.168.22.12) 56(84) bytes of data.
64 bytes from homeassistant.local (192.168.22.12): icmp_seq=1 ttl=64 time=2.08 ms
64 bytes from homeassistant.local (192.168.22.12): icmp_seq=2 ttl=64 time=4.52 ms
Wniosek: wszystko działa prawidłowo tak samo jak wcześniej .
Do zrobienia:
- dłuższe testy stabilności rozwiązania
- wykonanie kilku crash testów aby mieć pewność, że rozwiązanie jest odporne na awarie i może być używane produkcyjnie.