NEWS
[Vorlage] Geräte mit RS485 (Modbus) zum IOBroker einrichten
-
Das Einrichten funktionierender Lese- und Schreibverbindungen vom IOBroker zu Geräten mit einer RS485-Modbus-Schnittstelle hat mitunter seine Tücken, die mich aufgrund der meist fehlenden, durchgängigen Dokumentation einige Zeit beanspruchten. Die Erfahrungen möchte ich hiermit zur Verfügung stellen.
Meine Hardware:
- Raspberry PI5
- Waveshare Modbus RS485-to-ETH
-> IOB-Instanz 0 an Deye WR SUN-10K (2x) - Waveshare Modbus Relay 8 Channels
-> IOB-Instanz 1 an Belimo Klappenstellantrieb LM230a 220V (3x), Pelletsschnecke 12V DC, Pelletsofen Hauptstrom 220 V, Pelletsofen Standby potenzialfrei - Waveshare Modbus RS485-to-ETH
-> IOB-Instanz 2 an Smartmeter ET340 und Smartmeter Finder 7M.38.8.400.0312.
Meine Software:
- Linux Debian 13 (Trixie)
- IoBroker v7.7.2
- IoB-Modbus Adapter (3 Instanzen)
Montage und Verdrahtung des Modbus-Konverters:
Eine Modbus-Netzverbindung besteht bekanntlich aus 3 Drähten: A (-), B (+) und GND. Es empfiehlt sich ein CAT 6 Kabel zu verwenden. Die Abschirmung darf wegen möglicher Störungen keinesfalls mit dem GND verbunden sein! Bei Kabellängen über etwa 3 m oder bei Störungen muss an den Enden je ein 120 Ohm Widerstand zur Terminierung platziert werden. Bei mir war das nicht notwendig. Eine andere Herausforderung ist jedoch, die richtige Anschlussbuchse am Endgerät zu finden. Im besten Fall existiert eine RS485 oder CAN-Buchse, an die man das eine Ende eines CAT6-Kabels steckt. Das andere Ende des CAT6-Kabels muss jedoch vom Stecker befreit und frei mit dem Konverter verdrahtet werden. Ich verwende immer die Drahtfarben: orange/weiß = A (Pin1), orange = B (Pin2), blau/ weiß = GND (Pin3). Die Abschirmung eines Kabelende wird mit einem gelb-grünen Erdungsdraht des Stromnetzes verbunden. Wegen möglicher Störungen lässt man das 2. Abschirmungsende offen (kurz abkneifen).

Sofern mehrere Endgeräte an dem selben Modbus-Konverter hängen, wird es etwas umfangreicher. Mein Weg dazu war ein längeres CAT6-Kabels, welches ich an den erforderlichen Stellen auftrennte und die 3 Drähte an CAT6-Modulbuchsen crimpte.

Konfiguration:
Für die Smart-Home-Devices wird aus Sicherheitsgründen zumindest ein separates Subnetz empfohlen. Der Modbus-Konverter – bevorzugt mit LAN-Anschluss - muss zuerst mit einer IP-Adresse ans interne Netzwerk gekoppelt werden. Bei den Waveshare-Geräten gibt es die voreingestellte IP-Adresse 192.168.1.254, die man z.B. auf 192.168.0.xxx ändert. Sodann kann man sich mit dem Gerät im Internet-Browser verbinden via http:// 192.168.0.xxx .
Bild Modbus 10Wichtig sind die Einstellungen
- IP-Adresse aus dem internen Netzwerk, möglichst fix, z.B. 192.168.0.xxx
- IP-Gateway und Subnet Mask
- Baud-Rate = 9600
- Modbus-Adress-Nr. (1, 2, …) aus der Modbus-Konfiguration des angekoppelten Gerätes
- Protokoll: Modbus TCP
- Arbeitsmodus: TCP-Server
- Device-Port: meist 502.
Die IP-mäßige Kommunikation sollte dann mit einem PING auf die IP-Adresse und einer grünen LED auf dem Konverter angezeigt werden.
Nun wird im IOBroker der Modbus-Adapter installiert und wie folgt eingerichtet:

Zum Testen eines Registers gibt man zunächst nur eine Nummer im entsprechenden Tab ein:
- diskrete Eingänge: 10001 bis 20000
- diskrete Ausgänge: 1 bis 1000
- Eingangsregister: 30001 und 40000
- Holdingregister: 40001 bis 60000
Diese Nummernbereiche können jedoch erheblich von den Komponentenherstellern abweichen. Am Besten verwendet man eine Liste des Herstellers. Sobald eine Registernummer einen plausiblen Wert im Datenpunkt unter „Objekte“ zurückgibt, kann man die - oft zahlreichen - Registernummern auch als TSV-Datei in den Adapter importieren. Der Dateikopf hängt von der Registerart ab:
Eingänge: _address deviceId name description formula role room cw isScale Ausgänge: _address deviceId name description formula role room poll wp cw isScale Eingangsregister: _address deviceId name description unit type len factor offset formula role room cw isScale Holdingregister: _address deviceId name description unit type len factor offset formula role room poll wp cw isScaleEs kann aber vorkommen, dass man etwas mit den Registernummern jonglieren muss, etwa Registernummer + 1 oder Registernummer -1. Hier ist etwas Ausdauer gefragt – oder das Befragen der fleißigen Helfer im Forum.
[EDIT]
Wenn man damit auch keinen Erfolg hat, kann man noch diverse Modbus-Tools zum Lokalisieren von Registernummern einsetzen, etwa GModbus. Damit werden die verfügbaren Registernummern samt Werten aufgelistet. Das Abfragen geht leider etwas mühsam. Man muss die Adressnummern etappenweise eingeben und kann den Count auf max. 120 stellen.

Ich hoffe, dass mit dieser Information vielen User/innen im Forum die Arbeit etwas erleichtert wird!
Viel Erfolg zu diesem Thema wünscht,
Fuzzy1955