Seite 1 von 2

Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 15. Feb 2024 20:00
von Optimus#1978#
Hallo,

ich möchte die Stromverbrauchswerte meiner beiden Wärmepumpen (Heizung und Warmwasser) sowie die Stromproduktion meiner Solaranlage auslesen und in OpenHAB weiterverarbeiten. Zu diesem Zweck habe ich mir von meinem Elektroinstallateur drei (interne) Stromzähler installieren lassen. Die Stromzähler sind über eine Busleitung an einen Modbus-Adapter angeschlossen. Der Modbus-Adapter wiederum ist über ein LAN-Kabel mit meinem Computer-Netzwerk und damit an mein CMatic-Automatierungssystem (Raspberry Pi4) angeschlossen.

Bislang kommen jedoch noch keine Daten in OpenHAB an.

In OpenHAB werden in meiner "Thing"-Liste drei Einträge mit der Bezeichnung „Modbus TCP Slave“ (modbus:tcp:meter 1 , 2, 3) angezeigt. Hier wird der Status „ONLINE“ in grün angezeigt. Nach meinem Verständnis betreffen diese Einträge den Modbus-Adapter.
Des Weiteren gibt es sechs Einträge „Modbus Data“ mit dem Status „Error:Bridge“ in rot (= Fehler) und weitere sechs Einträge „Regular Poll“, die ebenfalls einen roten Status: „Error:Comm“ haben.

Wie kann ich die Fehlerursache eingrenzen?

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 16. Feb 2024 16:40
von oh73
Hallo,
da ich die letzten 14 Tage gerade etwas mit dem Modbus von meinem Goodwe Wechselrichter beschäftigt war,
meine Erfahrung dazu.

drei Geräte sollte kein Problem sein, aber um überhaupt eine Chance auf Erfolg zu bekommen,
muss erst mal klar gestellt werden,

hat jeder Zähler eine eigene Ip-Adresse oder zumindest eine eigene Garäte ID?

dann ist die Modbus Abfrage ja so aufgebaut,

erst brauchst du in Thing welches als Bridge eingereichtet wird mit Ip, Id, usw.
dieses Thing geht meisten sof0rt auf Online, egal ob die Parameter stimmen oder nicht!

dann brauchst du einen Poller der sich mit der Bridge verbindet, hier müssen allerdings alle Parameter passen sonst geht der nicht online!

hier mal ein Beispiel aus meiner Things Datei ( ich richte fast immer alles über Text Dateien ein)

Code: Alles auswählen

Bridge modbus:tcp:inverter "Goodwe Inverter 1 Bridge" [ host="192.168.178.78", id=2, timeBetweenReconnectMillis=10000, connectMaxTries=3 ] {

	Bridge poller Vpv1_2 "G-Poll-Vpv" 	[ refresh=6000,  start=35103, length=14, type="holding" ] {
        
		 Thing data	vpv1_35103 	"U16-10_Inverter1_Volt"		[ readStart="35103", readValueType="int16", readTransform="JS(smalimit10_undef.js)" ]
		 Thing data	ipv1_35104	"U16-10_Inverter1_Ampere"	[ readStart="35104", readValueType="int16", readTransform="JS(smalimit10_undef.js)" ]
		 Thing data	Wpv1_35105	"U32-10_Inverter1_Watt"		[ readStart="35105", readValueType="int32" ]
	}
}
die Bridge dürfe dabei noch einfach sein,
schwieriger wird es bei dem Poller,
refresh, muss man versuchen was man da am besten nimmt,
start, ist wichtig und muss passen, aus deiner Zähler Dokumation, falls du sowas hast! ist die erste von mehreren Adressen aus dem Modbus Register.
lenght, ist die Anzahl der Register die du auslesen willst!
dann kommt noch type ! hier unbedingt nachschauen was du brauchst sonst geht gar nichts!

vom stöbern im Internet weiß ich das viele Geräte mit dem type="input" arbeiten,
mein Wechselrichter wollte da aber Type="holding" haben!

wenn das alles stimmt geht auch der Poller auf online!

darunter kommt jetzt noch ein oder mehrer Things vom Typ data .

readStart ist das Register welches du lesen willst,
readValueType sollte in der Dokumation zu finden sein,
readTransform muss nicht sein, bei mir habe ich das allerdings um die Werte gleich durch 10 zu teilen.

das ganze musst du dann für 3 Zähler auch 3 mal haben.

um den Modbus zu testen gibt es aber auch für den Raspi ein gutes Testprogramm "modbus" kann man einfach installieren!

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 16. Aug 2024 20:55
von mad-mike
Moin,

Gibt es hier Erfolg?

hast du mit einem (1x) gateway (485 -> tcp) 3x zähler am auslesen??

sozusagen den 485 Bus geschliffen von Zähler zu Zähler?

Wenn ja, kannst du deine -Thing datei einstellen??

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 17. Aug 2024 08:07
von udo1toni
Ich habe zufällig gestern ein Video auf youtube gesehen, eine Produktvorstellung eines RS485-zu-MQTT Gateways von Eltako, mit dem sich beliebige ELTAKO RS-485 Zähler per MQTT einbinden lassen. Das Gateway wird in der nächsten Firmware Version bis zu 16 Zähler gleichzeitig unterstützen.
Es gibt wohl auch Pläne, auch Fremdgeräte zu unterstützen, wobei man da dann wieder mit den Registern kämpfen darf, was mit den ELTAKO Zählern natürlich entfällt.

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 17. Aug 2024 14:06
von mad-mike
Danke für den Tipp. :!: hab's gleich Mal gespeichert...

Dennoch mal die Frage zu dem Bus an sich.

Also ich habe Test halber einen rs485 zu USB mit einem sdm 630 verbunden.

Erstmal über die ui. Dann kam auch das Symbol der Verbindung auf dem Zähler.

Nach dem ich aber versucht habe eine Thing Text datei zu erstellen, bekomme ich den USB Stick nicht mehr zum laufen. Auch nicht über die ui...

Dann Frage ich mich weiter, wie ich dann auch Differenzieren kann zwischen Zähler 1 und 2.

Sprechen ich denn direkt eine Id an? Ich weiss leider nicht wie.

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 17. Aug 2024 21:23
von udo1toni
RS485 ist ein Bus, das heißt, die Geräte werden alle über die selben Drähte miteinander verbunden. Der Bus ist als Kette auszulegen, das erste und das letzte Gerät in der Kette benötigt einen Abschlusswiderstand über die Datenleitung.
Und weil es ein Bus ist, muss jedes Gerät eine eindeutige Adresse bekommen, das ist die ID.
Und da liegt auch schon der Hase im Pfeffer (oder so ähnlich), denn openHAB kann in Modbus nur eine ID verwenden.
Vielleicht liege ich da aber auch komplett falsch :) ich kenne Modbus nicht aus der Praxis.

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 17. Aug 2024 22:49
von violine21
udo1toni hat geschrieben: 17. Aug 2024 21:23 Und da liegt auch schon der Hase im Pfeffer (oder so ähnlich), denn openHAB kann in Modbus nur eine ID verwenden.
Du kannst doch mehrere Modbus TCP Slaves/Modbus Serial Slaves mit jeweils anderen ID's anlegen. Die dienen als Bridge
für die verschiedenen Geräte. Aktuell habe ich nur ein Modbus-Gerät aber ich hatte das auch schon mit zwei Geräten laufen.

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 18. Aug 2024 00:59
von udo1toni
Mein Verständnis von Modbus ist allerdings, dass ich eine Schnittstelle nutze und alle Geräte über diese eine Schnittstelle angebunden sind. Die ID ist aber Bestandteil der Schnittstelle...

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 18. Aug 2024 10:24
von violine21
udo1toni hat geschrieben: 18. Aug 2024 00:59 Mein Verständnis von Modbus ist allerdings, dass ich eine Schnittstelle nutze und alle Geräte über diese eine Schnittstelle angebunden sind. Die ID ist aber Bestandteil der Schnittstelle...
Bei der Konfiguration des Geräts (nicht in OH), in diesem Fall Stromzähler legt man die ID fest. Dann hängen die Geräte am Bus und jedes hat eine andere ID (Busadresse). Jedes Gerät hat in OH dann seine eigene Modbus-Bridge.

Re: Verbindng eines Modbus-Adapters mit drei Stromzählern

Verfasst: 18. Aug 2024 12:51
von mad-mike
Danke jetzt hat's klick gemacht.

Bis jetzt habe ich immer nur 1zu1 Verbindung mit modbus.

Sprich:

TCP Gateway 485 zu Wechselrichter....
Oder
USB 485 zu smart Meter....

Aber mehrere Thing datein zu erstellen ist ja absolut logisch damit ich die ID entsprechend setzen kann....

Nur irgendwie zickt der USB immer Rum.