Das mySensors gateway ist bei mir als serielles gateway fest mit einem seriellen Port eines Orange Pi Zero verdrahtet. Früher lief Home Assistant selber auch auf diesem Rechner, so dass der Zugriff auf das gateway direkt erfolgen konnte.
Mit dem Umzug von Home Assistant auf einen performanteren NUC Server hätte ich eigentlich auch ein neues mySensors-gateway bauen müssen, entweder als USB-Variante oder als Ethernet- bzw Wifi-gateway.
Den Aufwand habe ich mir vorerst erspart, indem ich den seriellen Port des Orange Pi auf einen TCP-Port mappe.
Dazu erstellte ich eine Datei /usr/local/bin/mysensors-eth.sh mit folgendem Inhalt:
#!/bin/bash
port=5003
serial=/dev/ttyS1
baudrate=b38400
#stty $baudrate -F $serial
#ncat --listen --broker --keep-open 0.0.0.0 $port &
#socat $serial TCP:127.0.0.1:$port
socat TCP4-LISTEN:$port,reuseaddr,fork $serial,$baudrate,raw,echo=0
Diese Datei wird jetzt ausführbar gemacht mit sudo chmod +x mysensors-eth.sh
Damit die „Umleitung“ bei jedem Systemstart neu gesetzt wird muss noch eine systemd-unit erstellt werden. Dazu wird eine neue Datei /etc/systemd/system/mysensors-eth.service mit folgendem Inhalt angelegt:
[Unit]
Description=mysensors-gateway serial to ethernet bridge
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mysensors-eth.sh
[Install]
WantedBy=multi-user.target
Diese unit muss jetzt nur noch aktiviert und erstmalig gestartet werden.
sudo systemctl daemon-reload
sudo systemctl enable mysensors-eth.service
sudo systemctl start mysensors-eth.service
Fertig! Ab jetzt kann das serielle gateway auch von anderen Rechnern als ethernet-gateway genutzt werden.
In Home Assistant zB lautet der entsprechende Eintrag in der configuration.yaml in meinem Fall:
mysensors:
gateways:
- device: "192.168.2.30"
tcp_port: 5003
optimistic: false
persistence: true
version: "3.2"