Koexistenz HA und evcc

Inzwischen habe ich an anderer Stelle gelesen, das als upstreamhost die IP des Wechselrichters eingetragen werden muss. Dennoch bekomme ich im Protokoll kein positives Ergebnis, aber es wird auch kein Fehler ausgegeben.

hey
ich hoffe, du liest noch mit.
Ich benötige genau diese Lösung. Doch bekomme ich den ModbusProxy nicht dazu, sich mit dem WR zu verbinden. (Ich habe noch eine 2. Modbus-Verbindunf tzr WP) Leider haben die verschiedenen Foren und Versuche nicht geholfen.
Wie bist du genau vorgegangen, um diese Verbindug zu bekommen? Was has dz wie und wann für wie lange runtergefahren?
Danke
Jürgen

Hey,

das war bei mir relativ simpel.
Wenn du sagst, dass du noch eine 2. ModBus Verbindung zur WP hast - dann hier gleich die Frage: die WP greift auf den WR per ModBus zu? Falls dem so ist, dann musst du das abstellen. Denn die meisten Wechselrichter lassen nur nur ein Gerät per ModBus auf den WR zu. EVCC sollte auch als Add-On deaktiviert sein, damit NIEMAND auf den WR per ModBus zugreift.

Dann richtest Du ModBus Proxy ein.
Bei Upstream-Host gibst du die IP-Adresse deines Wechselrichters ein. Bei upstreamport den ModBus Port des Wechselrichters (bei meinem SolarEdge ist das 1502).

Bei Listen-Port steht bei mir 502 und unten bei Netzwerk den Port 502, der vom Add-On verfügbar gemacht werden muss. Mehr ist es hier gar nicht.

Dann musst du es folgendermaßen konfigurieren:
In EVCC (und auch bei Deiner Wärmepumpe) musst Du dann nicht mehr auf IPdesWechselrichters:1502 connecten, sondern auf IPvonHomeAssistant:502.

Also Beispiel:
Wechselrichter hat IP 192.168.178.42
Home Assistant läuft auf einem NAS auf 192.168.178.10

Dann würde ModBus Proxy auf 192.168.178.42:1502 als Upstream benutzen. Und alle anderen Anwendungen - Home Assistant selbst, EVCC, deine Wärmepumpe und was sonst noch alles auf den Wechselrichter zugreifen soll, verbindet sich auf ModBus Proxy - also 192.168.178.10:502.

Danach startest du das ModBus Proxy Addon, anschließend kannst du EVCC und die Wärmepumpen-Verbindung wieder starten. Dann sollte alles laufen. Hat bei mir keine 10min gedauert.

Hallo
vielen Dank für die ausführliche Antwort, habe aber dennoch ein paar nachfragen. Zuerstnochmals meine Konfig:
HA - WP: Modbus mit Port 502
HA - WR: Modbus mit Port 502
AddOn EVCC - WP : macht die Probleme

  • Wie hast du die Kommunikation HA zum WR lahm gelegt: Aussternen des Links auf die Yaml-Dateien?
  • EVCC stoppen ist klar
  • Vielfach habe ich gelesen, dass der WR (und die WP) vom Strom getrennt werden müssen. Wie ist deine Erfahrung?
  • HA Neustarten notwendig, scheinbar nein?

Ich werde heute abend mit deiner Beschreibung den xten Versuch unternehmen.

Du sprichst von einer Kommunikation von HA zum WR. Hast du hier auch eine ModBus Verbindung? Dann wären es ja neben der WP schon zwei ModBus Zugriffe. Wie du das stoppen kannst? Indem du die Integration deaktivierst. Oder - wie du vorgeschlagen hast - die Config vorrübergehend änderst. Danach immer einmal neustarten, dass das auch wirklich greift.

Vom Strom nehmen musste ich nichts. Aber im Zweifel könnte das auch helfen, ja.

ja, HA und EVCC greifen auf den WR zu, darum der Proxy.
Dieser lässt mich aber verzweifen. Ich konnte nicht bis heute abend warten. Im Prinzip hat sich en meinen vorherigen Einstellungen nichts geändert, ausser das ich den Listen Port und zweiten Port auf 503 geändert habe.
Zuerst habe ich alle Modbus-Verbindungen auf HA und EVCC gekappt. HA neu gestartet. Den Proxy auf 503 geändert und gestartet.

reparing to run modbus-proxy
Upstream: 192.168.178.84:502
Listen: 503
Timeout: 10
Connection Time: 1
Loglevel: DEBUG
Generated Config
devices:

  • modbus:
    url: 192.168.178.84:502 # device url (mandatory)
    timeout: 10 # communication timeout (s) (optional, default: 10)
    connection_time: 1 # delay after connection (s) (optional, default: 0)
    listen:
    bind: 0:503 # listening address (mandatory)
    logging:
    version: 1
    formatters:
    standard:
    format: “%(asctime)s %(levelname)8s %(name)s: %(message)s”
    handlers:
    console:
    class: logging.StreamHandler
    formatter: standard
    root:
    handlers: [‘console’]
    level: DEBUG
    2023-06-28 17:12:38,640 INFO modbus-proxy: Starting…
    2023-06-28 17:12:38,644 INFO modbus-proxy.ModBus(192.168.178.84:502): Ready to accept requests on 0:503

Zeitstempel stammt von einem Restart mit DEBUG

Nach über einen halben Stunde habe ich dann in EVCC alle Port auf 503 geändert, da

INFO modbus-proxy.ModBus(192.168.178.84:502): Ready to accept requests on 0:503

In der Annahme, es muss ein Requst aus einer Anwendung kommen, aber nichts passiert!?

pv 1 power: read failed: dial tcp 192.168.178.84:503: connect: connection refused

Jetzt bleibt mir nur der Versuch, den WR komplett runterfahren, obwohl auch schon mal versucht.

Auf der 192.168.178.84 läuft bei dir Home Assistant, richtig?
Wie lautet die IP des Wechselrichters? Und wo hast du die eingetragen?

Mit deiner Frage werde ich jetzt ganz konfus:
192.168.178.56 Home Assistant
192.168.178.67 Solvis Wärmepumpe
192.168.178.84 Sungrow WR Lan für Modbus
(192.168.178.83 Sungrow WR Dongel für Cloud)

So wie du das oben beschrieben hast, wäre die 84 die Upstream-IP, oder?
In:
EVCC.yaml 84:503
Sungrow.yaml 84:503, wenn scharf
Modbus.yaml 67.502, wenn scharf

56 für HA würde hier ja niergends auftauchen.

Wo ist jetzt mein Denkfehler?

Der Denkfehler ist, dass du auf das falsche Gerät zugreifst. Das hatte ich bei deinem Log oben schon vermutet.

Der ModBus Proxy läuft doch als AddOn in Home Assistant. Also hat der Proxy auch die IP von Home Assistant. Also 192.168.178.56:503.

ALLE Geräte müssen auf diese IP zugreifen:

  • Home Assistant selbst (um die Daten auf dem Dashboard einzubinden)
  • EVCC (für die Wallbox-Steuerung)
  • deine Solvis Wärmepumpe (wenn die wirklich Daten vom Wechselrichter direkt abgreifen soll. Ich lese das bei Dir eher so, dass du die Wärmepumpe per ModBus in HA einbinden willst… oder? Dann wäre die Wärmepumpe hier völlig irrelevant, weil HA die Daten auch direkt von der WP holen könnte)

Nur der ModBus Proxy selbst greift auf den Wechselrichter zu. Also auf die 192.168.178.84:502.

Heureka

Deine Erläuterung hat es gebracht! Danke für deine Geduld.

Ich habe zig Forenbeiträge gelesen und auch einige Fragen gestellt, so habe ich das nie verstanden.

Zum Schluss habe ich mir selbst ein Bein gestellt. IP und Port habe ich als Secret definiert. Das mag EVCC nicht,

Ich bin übrigens dadurch auch der Empfehlung des Modul-Autors gefolgt und habe die Ports wieder auf den Standard-Port 502 gestellt.

Also nochmals 1000 Dank
Jürgen

1 Like

Super! Freut mich, dass es klappt.

Ja - das wollte ich dir auch noch sagen. Es gibt keine Notwendigkeit den Port zu ändern. Bei mir ist der 1502 halt vom Wechselrichter vorgegeben - aber bei ModBusProxy nutze ich auch den Standardport.

Habe exakt die gleiche Problematik wie du @jove01

Evcc läuft als Pugin in HA (Docker).
modbus-proxy plugin ist in HA installiert.

WR: 192.168.188.95 Port 8899 (Modbus Port von Deye)
HA auf Raspi: 192.168.188.46

config modbus proxy plugin

log modbus proxy plugin

2023-08-22 18:53:23,682     INFO modbus-proxy.Client(192.168.188.46:33200): new client connection
2023-08-22 18:53:23,683    DEBUG modbus-proxy.Client(192.168.188.46:33200): received b'\x00\t\x00\x00\x00\x06\x01\x03\x02q\x00\x01'
2023-08-22 18:53:26,081    ERROR modbus-proxy.ModBus(192.168.188.95:8899): write_read error [2/2]: TimeoutError()
2023-08-22 18:53:26,082     INFO modbus-proxy.ModBus(192.168.188.95:8899): closing connection...
2023-08-22 18:53:26,083     INFO modbus-proxy.ModBus(192.168.188.95:8899): connection closed
2023-08-22 18:53:26,084     INFO modbus-proxy.Client(192.168.188.46:48896): closing connection...
2023-08-22 18:53:26,085     INFO modbus-proxy.ModBus(192.168.188.95:8899): connecting to modbus...
2023-08-22 18:53:26,087     INFO modbus-proxy.Client(192.168.188.46:48896): connection closed
2023-08-22 18:53:26,091     INFO modbus-proxy.ModBus(192.168.188.95:8899): connected!
2023-08-22 18:53:26,091     INFO modbus-proxy.ModBus(192.168.188.95:8899): delay after connect: 0.1
2023-08-22 18:53:26,193    DEBUG modbus-proxy.ModBus(192.168.188.95:8899): sending b'\x00\x0e\x00\x00\x00\x06\x01\x03\x02N\x00\x01'

Log von evcc (

[site  ] ERROR 2023/08/22 18:49:32 pv 1 power: add[0]: read failed: read tcp 192.168.188.46:49702->192.168.188.46:502: i/o timeout
[site  ] DEBUG 2023/08/22 18:49:32 pv power: 0W
[site  ] ERROR 2023/08/22 18:50:02 battery 1 power: read failed: read tcp 192.168.188.46:46760->192.168.188.46:502: i/o timeout

Ich würde Dir raten mal ALLES zu stoppen, dass definitiv nichts auf den Wechselrichter zugreift. Also EVCC, Home Assistant und auch eventuelle sonstige Anwendungen die per ModBus zugreifen. Dann startest du als erstes den ModBus Proxy und checkst im Log, ob der Zugriff auf den Wechselrichter per ModBus funktioniert.

Wenn der funktioniert, lässt du mal testweise eine Anwendung (z.B. evcc) auf den ModBus Proxy zugreifen um die Daten abzugreifen. Wenn das auch geht, können auch mehrere Anwendungen auf den ModBus Proxy zugreifen und bekommen dieselben Daten.

Wichtig ist, dass NIEMAND sonst direkt auf den Wechselrichter zugreift außer ModBus-Proxy.

1 Like

Ergänzend noch meine Config:

Upstream-Host: hier muss die IP des Wechselrichters stehen
Upstream-Port: hier der Port, über den man am Wechselrichter per ModBus connecten kann
Listen-Port: hier lässt du am Besten 502 stehen
Connection Time steht bei mir auf 0,1
Timeout auf 10
Loglevel: INFO

Netzwerk:
Port auf deinem Host, die vom Add-On verfügbar gemacht werden:
502/tcp

Letzterer muss identisch sein mit dem Listen-Port

evcc muss dann auf die IP von Home Assistant mit dem Port 502 zugreifen.

1 Like

Danke @Schlichi83

habe ich alles so gemacht.

EVCC config

meters:

  - name: my_pv
    type: template
    template: deye-hybrid
    usage: pv
    modbus: tcpip
    id: 1
    host: 192.168.188.46 # Hostname
    port: 502 # Port  
    
  - name: my_grid
    type: template
    template: deye-hybrid
    usage: grid
    modbus: tcpip
    id: 1
    host: 192.168.188.46 # Hostname
    port: 502 # Port  
    
  - name: my_battery
    type: template
    template: deye-hybrid
    usage: battery
    modbus: tcpip
    id: 1
    host: 192.168.188.46 # Hostname
    port: 502 # Port

Wechselrichter ist 192.168.188.10 (was auch der Upstream Host + Port in modbusproxy ist)

Habe auch HA mal 2h nicht angelangt nach dem Neustart. Danach erst modbus proxy und dann evcc. Aber es klappt leider nicht.

Der ModBus-Zugriff auf den Wechselrichter funktioniert aber auf direktem Weg, oder?
Es greift sonst niemand auf den Wechselrichter zu?
Poste mal noch die Config von modbus proxy.

Hi @Schlichi83 ,

Ich habe meinen solis inverter bereits über modbus in Home Assistant und möchte gerne evcc als addon nutzen. Wie funktioniert das genau mit dem Proxy ? Hast du ein Tutorial oder so? Welches addon nutzt du und wie wird das genau eingerichtet?

Danke für deine Hilfe.

Grüße Philipp

@a13xde wo trägst du die mqtt publish genau an? configuration.yaml? ich habe leider keine ahnung wie ich den mqtt broker nutzen kann. Aktuell bekomme ich über modbus die Daten meines Inverters in Home Assistant und möchte diese über mqtt in evcc nutzen…

Hi Phil2204,

es steht eigentlich alles im Thread hier. Lade dir das Add-On ModBus Proxy. Die Verbindung zwischen Wechselrichter und Home Assistant wird dann dahingehend geändert, dass nur noch der ModBus Proxy auf den Wechselrichter zugreift. Und HA und EVCC dann beide auf den ModBus Proxy.

Vorher solltest du aber testen, ob es bei deinem Wechselrichter überhaupt so ist, dass nur ein Gerät per ModBus zugreifen kann. Sonst bräuchtest du den Proxy gar nicht.

EVCC lädst du ebenfalls als Add-On. Dazu gibts auch Guides bei YouTube.

Viele Grüße
Schlichi83

@Phil2204 Das ist eine Automatisierung

Einfach in Home Assistant eine neue Automatisierung anlegen, dann rechts oben auf die 3 Punkte gehen und “Als YAML bearbeiten” wählen. Du kannst dann die Automatisierung 1:1 aus meinem Post oben rein kopieren, dann wieder über die 3 Punkte rechts oben in den visuellen Editor wechseln und die states und topics auf deine Werte anpassen.