Akulatraxas / ha-modbusproxy

Hassio Addon packaging modus-proxy
Apache License 2.0
37 stars 5 forks source link

Modbus-Proxy with 2 Slave #16

Open jove01 opened 1 year ago

jove01 commented 1 year ago

Hello I have 2 Slave (Homeassistant 192.168.178.56) Solvis WP 192.168.178.67 Sungrow WR 192.168.178.84

Both connected to tcp-port 502.

Both works in HA, but the connection is sometime a day broken.

First: What is the way to define 2 upstreamhost (so another user told)?

Second, i have general Problems to connect the slave to modbus proxy. What is the way (best in steps) for existing modbus-connection, that it works?

Thanks

ChristophCaina commented 1 year ago

Hi, it appears, that the Modbus-Proxy itself can handle multiple devices / upstream hosts - but the Addon itself might not due to the UI design.

devices:
- modbus:
    url: plc1.acme.org:502
  listen:
    bind: 0:9000
- modbus:
    url: plc2.acme.org:502
  listen:
    bind: 0:9001

Maybe, it would be possible to implement this at least for the YAML configuration to allow additional devices to be configured? I am not sure, if this is really required within the UI settings - since most users would 'probably' use only one upstream host.

jove01 commented 1 year ago

Hello Christoph Thank you for the answer. Can i edit direct in the Yaml-file and where ist the file located? Jürgen

horstvogel commented 1 year ago

Moin, gibt es schon hierzu eine Lösung? Bzw. wo könnte man die weiterführende Dokumentation finden, wenn man 2x Geräte über den Modbus-proxy einbinden möchte. Danke!

gsgxnet commented 1 year ago

Same here, would be great if we could config several upstream hosts for this add-on

icke-pp commented 11 months ago

Ich wäre auch daran interessiert 3 Slaves (Batterie, Wallbox, Wechselrichter) anzubinden. Ich würde auch die Konfig selbst händisch anpassen, finde diese aber nicht in HA. Laut dem original Modbusproxy kann man die Konfig in eine extra YAML einpacken aber mir gelingt es nicht den Modbus Proxy mit dieser eigenen YAML zu starten.

https://github.com/tiagocoutinho/modbus-proxy

devices:

Assuming you saved this file as modbus-config.yml, start the server with:

$ modbus-proxy -c ./modbus-config.yml

Hat da jemand eine Idee wie man das im HA macht? Es sind also 2 Wege denkbar als Lösung. Anpassen der Add-On Konfiguration oder starten des Modbus-Proxy mit der eigenen YAML Datei. Ich bin bei HA noch neu.

ChristophCaina commented 11 months ago

hm... ich nutze den Modbus-Proxy selber inzwischen nicht mehr als Addon, sondern innerhalb eines eigenen Containers in meiner Proxmox-Installation... aber wäre es ggf. möglich, mehrere Instanzen des Addons parallel zu betreiben?

Stony111 commented 3 months ago

Hallo, gibt es hier schon neuere Infos oder Dokus? Hab nämlich genau das gleiche Problem. Aktuell benutze ich den Modbus-Proxy um meinen SE WR mit solaranzeige.de auszulesen und im HA mit evcc die Daten des WR zum Überschussladen zu verwenden. Demnächst wird ein weitere Wechselrichter dazukommen und ich würde gerne beide IP-Adressen über den Proxy laufen lassen! Die YAML-Datei für die Einstellungen kann man ja direkt über die UI von HA erreichen (3 Punkte rechts direkt in der Konfiguration vom modbus-proxy-AddOn) - aber die Form sieht etwas anders aus, als in vielen Dokumentationen zu finden. Momentan sieht das bei mir so aus: grafik

Aber wie müsste ich denn diese YAML-Konfiguration anpassen, damit man hier eine zweite IP-Adresse anbinden kann? Hat da jemand einen Tipp für mich/uns? Der "Listenport" wäre dann natürlich 503 (oder ein beliebiger anderer), aber ich bräuchte eben einen zweiten Upstreamhost mit dem zugehörigen Upstreamport!

Wenn "alle Stricke reißen" und das leider über das HA-AddOn nicht geht (wäre sehr schade), würde ich auch mal versuchen in meinem Proxmox-System eine neue VM aufzusetzen, mit nur dem modbus-proxy, aber schöne wäre eben alles direkt in HA zu haben!

Danke schon mal für jede kleine Unterstützung.

gsgxnet commented 2 months ago

Ich habe das Thema inhaltlich nicht mehr auf dem Schirm. Meine SE WRs etc werden direkt über die Modbus Funktionalität im Home Assistant ausgelesen (HACS Modul SE Multi oder so). Alle SE Devices sind intern so weit möglich über seriellen (485) ModBus verbunden. Ein WR ist als Leader (Master) konfiguriert, die anderen als Follower (Slave).
Das HA Modul spricht nur den Leader über TCP/IP ModBus an, die angehängten Follower werden dabei erkannt und mit ihrer ID abgefragt. Da ist m.W. kein Proxy für nötig.

Mein Kommentar hilft vermutlich nicht bei dem vorhandenen Problem. Thinking out of the Box?

Stony111 commented 2 months ago

... ja genau - Kommentar hilft leider nicht ;-) Wenn man nur einen Client hat, der den WR auslesen muss, dann braucht man keinen Proxy ;-) Spannend wird es eben, wenn 2 Clients einen WR auslesen sollen/müssen!

ChristophCaina commented 2 months ago

Das Setup scheint mir hier gerade etwas unklar ;) Ziel des Proxy ist es, mehrere clients mit einem modbus Interface zu verbinden.

Selbst wenn ein zweites Interface nun dazu kommt, bleiben können die clients sich nur auf das eine Gerät verbinden - für das zweite Interface würde man auch beim Client eine weitere Verbindung anlegen.

Man hätte also ein Setup wie dieses:

                             Client 1.1
Interface 1 ------
                             Client 2.1

                             Client 1.2
Interface 2 -------
                             Client 2.2

Das macht also nur dann Sinn, wenn auch am Client mehr modbus Verbindungen angelegt werden können.

Ich würde - sofern technisch machbar - auch dazu tendieren, die Wechselrichter ggf. untereinander zu verbinden. Dann sollte dies auch mit nur einem Interface im proxi funktionieren.

Also:

                            Client 1
WR1 -- WR2 ----
                            Client 2

Oder sehe ich das jetzt etwas falsch?

Stony111 commented 2 months ago

... ja - stimmt schon alles. Aber häufig hat man mehrere Modbus-Interfaces. In meinem Fall bei 2 SE-WR ist das evtl. nicht ganz so klar. Aber folgendes Beispiel:

SE WR mit IP-Adresse 1 / Port 502 und Wärmepumpe mit IP-Adresse 2 und Port 502 - das wären die modbus-Interfaces. Auf beide Geräte würde ich nun gerne 1x mit evcc und mit weiteren anderen externen Tools (z.B. solaranzeige.de) zugreifen. Von daher müsste der Proxy 2 Modbus-Interfaces hosten: 1x den SE WR an IP-Adresse 1 Port 502 z.B. auf dem Port 1502 von HA und 1x die Wärmepumpe an IP-Adresse 2 Port 502 auf dem Port 1503 von HA

evcc, solaranzeige.de und auch noch andere Tools würden sich ALLE je nach Zielgerät auf die HA-IP-Adresse mit Port 1502 (für den SE WR) oder Port 1503 (für die Wärmepumpe) verbinden.

ChristophCaina commented 2 months ago

OK, ja - so habe ich mir das gedacht. Ich fürchte allerdings, dass das addon dafür nicht ausgelegt ist - und ich bin mit noch noch nichteinmal sicher, ob die darunter liegende Software dies so abbilden kann (müsste ich jetzt aber nochmal schauen).

Im Zweifel würde ich, auch der Redundanz wegen aber einen zweiten Proxy einrichten. Fällt einer aus, bleibt der zweite davon unberührt.

Das ist letztendlich auch der Grund, warum ich von ha addon weg bin... (Klar, fällt der Host aus, ist alles nicht erreichbar, aber das ließe sich mit einem Cluster umgehen)

Stony111 commented 2 months ago

... die "darunter liegende Software" könnte das aus meiner Sicht ;-) - zumindest ist das so in dessen Doku beschrieben:

image

Von daher wäre es vermutlich wirklich "nur" eine Erweiterung der Konfigoberfläche im HA-AddOn bzw. die Anpassung der "Konverterfunktion" von der HA-AddOn-Config in die modbus-proxy-config. Da hab ich leider keine Ahnung was und wie das genau abläuft, aber irgendwie muss das HA-AddOn die config-YAML ein bisschen "umbauen", da die YAML im HA-AddOn und die Config-YAML direkt in der modubus-proxy-Software unterschiedliche Struktur bzw. anderes Aussehen haben! Aber eigentlich liegt's nur an der fehlenden Möglichkeit die Config entsprechend zu befüllen ;-)

TCzerny commented 2 months ago

So ist es. Ich habe eine angepasste Version mit zwei Modbus Hosts am laufen. Wenn ich Zeit finde erstelle ich mal einen Fork.

gsgxnet commented 2 months ago

... ja genau - Kommentar hilft leider nicht ;-) Wenn man nur einen Client hat, der den WR auslesen muss, dann braucht man keinen Proxy ;-) Spannend wird es eben, wenn 2 Clients einen WR auslesen sollen/müssen!

Richtig, dein Problem hatte ich schon verstanden. Mein vorheriger Ansatz war auch so, dass ich meinte mit mehreren Clients (im ModBus Sinne eigentlich Master/Leader) auf den einen WR per ModBus TCP zugreifen zu müssen. Dafür hatte ich mich mit dem Proxy innerhalb HA rumgeschlagen. Nach reichlich Frust -> "Thinking out of the Box". Also lieber nur einen auf den WR zugreifen lassen und dann die Daten für die anderen Datenclients aus dem HA ziehen. KISS. Geht leider nur manchmal.

Nun haben wir die Hoffnung auf einen PR der den Proxyärger erledigt. Freut mich.

Stony111 commented 2 months ago

... hab durch Zufall heute mal meinen Modbus-Proxy im HA neu gestartet ;-) und dabei dieses Protokoll gesehen:

image

Wie vermutet wird wirklich einfach nur die Config für den eigentlichen modbus-proxy generiert :-))) - wäre wahrscheinlich daher auch nur eine "kleine" Anpassung in der Konfig-Oberfläche im HA-AddOn und im "Konverter" ;-)

Von daher macht es vermutlich schon Sinn, die Hoffnung noch nicht aufzugeben ;-) ...

TCzerny commented 2 months ago

Habe mal schnell einen Fork erstellt, mit dem man insgesamt drei Modbus Hosts anbinden kann... Eventuell will ja jemand testen ? https://github.com/TCzerny/ha-modbusproxy

horstvogel commented 2 months ago

Ich habe direkt einen Modbus Stick am Server sitzen. Würde das auch damit funktionieren? Wenn ja, wie würde eine Config dafür aussehen?

typxxi commented 2 months ago

Habe mal schnell einen Fork erstellt, mit dem man insgesamt drei Modbus Hosts anbinden kann... Eventuell will ja jemand testen ? https://github.com/TCzerny/ha-modbusproxy

Ich denke, dass ich das hier brauchen werden, obschon ich keinen blassen Schimmer hatte, was SE bedeuten soll. Irgendwo in Deinen Zeilen stand dann was von Solar Edge.

Meine Modbuswelt ist aktuell noch klein und sollte laut Hersteller nicht funktionieren, weil der Wechselrichter mehr als 15 m Kabellänge weg vom Smartmeter steht.

SETUP

Die weiteren 2 Eastron Smartmeter Typ SDM72DM und die SDM72D S0 Version haben folgende "Randaufgaben"

  1. misst den reinen Haus Stromverbrauch also ohne Überschuss PV und ohne Wallbox und WP
  2. misst Wallbox Stromverbrauch (3 Phasen)
  3. misst Wärmepumpen Stromverbrauch (3 Phasen)

Vor all denen bzw. über diesen Teilmengen Zählern thront der Eastron SDM 720 V3 Modbus Zähler, der neben 3 o.g. Verbrauchern auch den Strom aus den Growatt Wechselrichtern abdeckt.

Meine Herausforderungen:

Growatt SPH und das Smartmeter Eastron SMD630 V3 modubs sprechen Modbus miteinander. Ich bekomme via "Grott" HA Addon (Growatt Spezialität bzw. Proxy, der die Kommunikation aller Growatt Wechselrichter und deren WiFi Sticks abfängt, um sie per HA mqtt weiter zu kommunizieren und dann u.a. auch an Growatt weiterzuleiten, als sei nix gewesen.

Growatt SPH ist "modbus" Master 001 SDM630 V3 modbus ist Slave Adresse 002

So weit ich weiß, kann ich die Adresse des Growatt SPH nicht ändern und der wäre immer Master.

1. Herausforderung: Wie richte ich nun besagtes Smartmeter und SPH Hybrid Wechselrichter das in Verbindung mit der Pulsar Plus Wallbox ein?

  1. Herausforderung: Was mache ich mit den weiteren Smartmetern, die bisher nur im Zählerschrank installiert wurden und wo jeweils 2 RJ45 Kabel herausgeführt worden sind?

Diesen Punkt erwähne ich aber nur am Rande (damit alle gleich wissen, dass da noch mehr modbus Kisten im Hause sind), denn mein Hauptanliegen ist die 1. Herausforderung, den Überschussstrom mit EVCC nutzen zu können

Letzter Punkt: Das Haus ist grob 25 m lang und inkl. Garage 10 m tief, nur damit man eine Größenvorstellung hat, denn am Übergang vom rechten Drittel zum mittleren des "Schuhkartons Haus" sitzt der Zählerkasten und ganz links unten dann 17 m weg der Hybridwechselrichter, was 30 Kabelmetern entspricht. Links oben von dem Schuhkarton sitzt dann die Wallbox auch wieder 25 Kabelmeter entfernt vom Zählerkasten und gut 20 m vom Hybrid WR.

Hier mal ein Bild des Schuhkarton mit einem "L Anbau" image

Und beim Zeichnen fiel dann auch noch auf, dass es möglicher weise 2 weitere Modbusgeräte mit der Brauchwasserwärmepumpe und der Wärmepumpe gibt, die beide SG Ready sind und über 230V Leitung geschaltet werden im Überschussverbrauch. Beide stehen schon da, werden jetzt im Herbst eingebaut.

Das ist also meine Modbus Challenge (im kleinen, denn im großen wären es dann wohl auch noch am Ende 5 weitere kabelgebundene Growatt Netz Wechselrichter).

Wie muss ich mir nun die Verkabelung und Kommunikation wie Adressierung vorstellen, wenn nach dem Master Hybrid WR und dessen Slave Smartmeter nun auch noch ein weiterer "slave" (Master ginge ja wohl nicht) namens Pulsar Plus Wallbox hinzu käme ?

Für den Notfall hab ich mir 868 Mhz 4 Modbus Transceiver gekauft , von denen 1 Master sein kann und 3 als Slave konfiguriert würden, dann bin ich das Thema Kabel im Zweifel los.

Aber ich würde lieber Deinen Ansatz verfolgen und probieren, war auch schon auf Deiner Repository site , hab dort aber keine discussions gefunden oder übersehen.

marcel-k-1980 commented 2 months ago

Habe mal schnell einen Fork erstellt, mit dem man insgesamt drei Modbus Hosts anbinden kann... Eventuell will ja jemand testen ? https://github.com/TCzerny/ha-modbusproxy

installiert + 1x Sungrow SH + 1x Sungrow SG Wechselrichter via Modbus eingebunden ... (dritte Instanz auf Enabled) .. ist zumindest ohne Error gestartet .. mehr kann ich noch nicht sagen . bin aktuell am Aufbau

Danke schonmal dafür !

Matze5593 commented 2 months ago

Habe mal schnell einen Fork erstellt, mit dem man insgesamt drei Modbus Hosts anbinden kann... Eventuell will ja jemand testen ? https://github.com/TCzerny/ha-modbusproxy

Habe es zwar nur mit 2 Geräten gleichzeitig getestet, aber funktioniert einwandfrei. Herzlichen Dank!

Kugelfang666 commented 1 month ago

the fork of @TCzerny which accepts up to three client works fantastic! would be great to see this merged into the main repo @Akulatraxas