Datenabfrage via Modbus - Modbus-Proxy
Verfasst: Fr Okt 28, 2022 10:39 am
Ich möchte hier als Allgemeine Hilfe einen kleinen Beitrag teilen, welchen ich schon mal in einem anderen Beitrag als Anmerkung zu einer sehr spezifischen Konstellation geschrieben hatte.
Dennoch halte ich das Thema generell für nicht uninteressant, kann es doch in mehreren Konstellationen relevanz haben.
Die OpenWB greift Daten der Wechselrichter - oder ggf. auch andere Daten u.a. über Modbus ab.
Hierbei besteht das Problem, dass viele Geräte nur eine aktive Verbindung zulassen - selbst über ModbusTCP besteht das Problem z.B. bei SolarEdge Wechselrichtern.
In vielen Fällen wird die OpenWB sicherlich das Gerät sein, welches Primär die Daten abgreift - immerhin kann man die Daten dann ggf. über MQTT "weiterverwerten".
Eine andere Möglichkeit wäre allerdings ein so genannter Modbus-Proxy.
Hierbei handelt es sich um eine Software, welche sich primär mit dem Modbus-Master verbindet und die Daten dann an alle "angeschlossenen" Modbus-Clients weitergibt.
Ein solches Projekt ist z.B.
https://github.com/tiagocoutinho/modbus-proxy
hierbei handelt es sich um ein Python Tool, welches z.B. auf einem RaspberryPy - oder einer anderen Plattform installiert werden kann.
das Setup ist ziemlich simpel - und die Konfiguration selbsterklärend...
Der Modbus-Proxy kann dabei auch Verbindungen zu mehreren Modbus-mastern herstellen...
Ich habe diese Software bei mir inzwischen in Proxmox in einem Container laufen - um sowohl die OpenWB wie auch mein Monitoring direkt mit den Daten des Wechselrichters zu versorgen.
Dazu habe ich die Software als Dienst eingerichtet.
Für die Einrichtung als Dienst gillt:
Danach wird der neu angelegte Dienst "enabled"
Und zu guter letzt wird der Dienst gestartet:
Damit wird der Proxy auch nach einem Neustart des Containers automatisch gestartet und greift auf die hinterlegte Konfiguration zu.
Andernfalls wäre nach einem Neustart der Maschine immer ein manuelles starten der Software nötig gewesen.
Dennoch halte ich das Thema generell für nicht uninteressant, kann es doch in mehreren Konstellationen relevanz haben.
Die OpenWB greift Daten der Wechselrichter - oder ggf. auch andere Daten u.a. über Modbus ab.
Hierbei besteht das Problem, dass viele Geräte nur eine aktive Verbindung zulassen - selbst über ModbusTCP besteht das Problem z.B. bei SolarEdge Wechselrichtern.
In vielen Fällen wird die OpenWB sicherlich das Gerät sein, welches Primär die Daten abgreift - immerhin kann man die Daten dann ggf. über MQTT "weiterverwerten".
Eine andere Möglichkeit wäre allerdings ein so genannter Modbus-Proxy.
Hierbei handelt es sich um eine Software, welche sich primär mit dem Modbus-Master verbindet und die Daten dann an alle "angeschlossenen" Modbus-Clients weitergibt.
Ein solches Projekt ist z.B.
https://github.com/tiagocoutinho/modbus-proxy
hierbei handelt es sich um ein Python Tool, welches z.B. auf einem RaspberryPy - oder einer anderen Plattform installiert werden kann.
das Setup ist ziemlich simpel - und die Konfiguration selbsterklärend...
Der Modbus-Proxy kann dabei auch Verbindungen zu mehreren Modbus-mastern herstellen...
Ich habe diese Software bei mir inzwischen in Proxmox in einem Container laufen - um sowohl die OpenWB wie auch mein Monitoring direkt mit den Daten des Wechselrichters zu versorgen.
Dazu habe ich die Software als Dienst eingerichtet.
Für die Einrichtung als Dienst gillt:
- Ich habe die Konfigurationsdatei nach verschoben.
Code: Alles auswählen
/usr/lib/mproxy-conf.yaml
- im Verzeichnis habe ich mit einem Editor meiner Wahl die Datei
Code: Alles auswählen
/etc/systemd/system/
angelegt.Code: Alles auswählen
mproxy.service
- Die Datei hat folgenden Inhalt:
Code: Alles auswählen
[Unit] Description=Modbus-Proxy After=network.target [Service] Type=simple Restart=always ExecStart = modbus-proxy -c ./usr/lib/mproxy-conf.yaml [Install] WantedBy=multi-user.target
Code: Alles auswählen
run systemctl daemon-reload
Code: Alles auswählen
systemctl enable mproxy.service
Code: Alles auswählen
systemctl start mproxy.service
Andernfalls wäre nach einem Neustart der Maschine immer ein manuelles starten der Software nötig gewesen.