Solarwatt Vision steuern via Modbus

Seit 8 Tagen habe ich nun Solarwatt Vision Komponenten, den SOLARWATT Inverter vision three und SOLARWATT Battery vision three (7,8kWh), da meine Solarwatt Matrix (7,2kWh) nach 4,5 Jahren durch Solarwatt getauscht wurden. Danke an Solarwatt an dieser Stelle :kissing_face:

Die neuen Komponenten können nun auch Netzladen und Notstrom, und auch deutlich mehr Leistung abgeben.

Ich lasse eigentlich immer via EVCC laden, dazu kommen dann ein paar “Puzzlestücke” für Octopus Intelligent Go von cschlipf :+1:

Der neue Speicher entlädt teilweise mit 8,4kW, was ich gerade in der Nacht, wenn der Strom besonders günstig ist, suboptimal finde. Darum möchte ich in irgendeiner Form das Entladen aus dem Speicher verhindern oder einschränken können. Nach einer langen Nacht habe ich ein wenig dazulernen können … Zum Einen dass die Solarwatt Vision Komponenten gelabelte Fox-Ess Geräte sind, und zum Anderen dass Fox-Ess im Gegensatz zu Solarwatt die ModBus Schnittstelle offenlegt und gut beschreibt, siehe FoxESS Modbus Protocol–20240320 (V1.04.00.00) H3pro.pdf

Und hier nun das Ergebnis. In der configuration.yaml von HomeAssistant habe ich Folgendes hinzugefügt:

modbus:
  - name: solarwatt_vision
    type: tcp
    host: 192.168.178.101
    port: 502
    sensors:
      - name: "Solarwatt Batterie SoH"
        unique_id: "solarwatt_battery_soh"
        slave: 247
        address: 37624
        input_type: holding
        data_type: int16
        scan_interval: 3600
        unit_of_measurement: "%"
      - name: "Solarwatt MaxDisCharge"
        unique_id: "solarwatt_maxdischarge_sensor"
        slave: 247
        address: 46608
        input_type: holding
        data_type: int16
        scan_interval: 30
        scale: 0.1
        unit_of_measurement: "A"
      - name: "Solarwatt Batterie Ladestrom aktuell"
        unique_id: "solarwatt_battery_ladestrom_aktuell"
        slave: 247
        address: 37610
        input_type: holding
        data_type: int16
        scan_interval: 30
        scale: 0.1
        unit_of_measurement: "A"

switch:
  - platform: template
    switches:
      solarwatt_maxdischarge_60:
        friendly_name: "Solarwatt MaxDisCharge 6A"
        unique_id: "solarwatt_switch_maxdischarge_6A"
        value_template: >
          {{ states('sensor.solarwatt_maxdischarge') | int == 6 }}
        turn_on:
          service: modbus.write_register
          data:
            hub: solarwatt_vision
            unit: 247
            address: 46608
            value: 60
        turn_off:
          service: modbus.write_register
          data:
            hub: solarwatt_vision
            unit: 247
            address: 46608
            value: 500
        icon_template: >
          {% if states('sensor.solarwatt_maxdischarge') | int == 6 %}
            mdi:toggle-switch
          {% else %}
            mdi:toggle-switch-off-outline
          {% endif %}

Ich lese den SoH, den aktuellen Ladestrom und den maximal, zulässigen Entladestrom aus. Zusätzlich habe ich ein Switch angelegt der den maximalen Entladestrom auf 6A begrenzt, wenn er an ist. Ist er aus schaltet er wieder auf den Standardwert der “H3 Pro“ zurück.
Mit 6A entlädt der Speicher mit etwas über 1kW. Man könnte den Wert noch weiter senken, so dass der Akku kaum noch Entladen wird, aber 1kW ist für mich okay (bei den ersten Sonnenstrahlen ist der SoC oft über 50%).

Den Schalter habe ich dann noch in eine Automation gepackt, so dass beim Beginn des Ladens der max. Entladestrom auf 6A gestellt und beim Beenden wieder auf den Wert “500” (Gain 10) gesetzt wird.

Generell könnten noch deutlich mehr Daten via ModBus ausgelesen werden, aber die Home Assistant Integration: evcc​:sun::oncoming_automobile:- Solar Charging stellt Vieles schon bereit.

Viel Spaß damit. :victory_hand:

Hallo

Versuche meine Solarwatt Anlage in Home Assistent einzupflegen. Mit der HACS Integration komme ich nicht rein. Ich weiß nicht mehr weiter. bitte um Hilfe.

Anlage seit Juni Installiert.

SOLARWATT Battery vision three

SOLARWATT Inverter vision three

CHINT vision meter

EHC01-200005276 Solarwatt Manager

Wie kann ich die Anlage auslesen? Anleitung wäre nicht schlecht.

Gruß Karlheinz

Ich hoffe, dass die HACS Integration foxess_modbus in Kürze auch ohne Anpassungen kompatibel sein werden. Mit 2 kleinere Anpassungen läuft sie bereits jetzt: Add support for inverter Solarwatt Vision: SVN THREE 10KW (H3 Smart) · nathanmarlor/foxess_modbus · Discussion #956 · GitHub

1 „Gefällt mir“

Hallo @thokaro - das ist eine super gute Vorlage von dir - besten Dank! :melting_face: :+1:

Ich versuche gerade meine im August installierte Solarwatt Vision three Inverter 15kW und Battery Vision 11,5kW mühsam über Rest-API in den Home Assistant zu bringen. Das ist mir stückweise auch geglückt, so dass ich Batterie SoC und diverse andere Größen auslesen und anzeigen lassen kann.

Bisher erfolglos war ich aber mit dem Modbus - umso erfreulicher, dass da nun doch was geht mit der entdeckten Fox-ESS Analogie und den daraus nutzbaren Registern.

Ich möchte meinen Solarwatt Vision Inverter über Modbus direkt an Home Assistant anbinden. Aktuell nutze ich einen RS485‑zu‑Ethernet‑Konverter (Typ “DR134”), der bisher am zweiten RS485‑Port meines Chint DTSU666 Zählers hängt. Nun ist mir unklar, ob dieser Port wirklich den kompletten Modbus‑Datenverkehr des Inverters durchschleift oder - sehr wahrscheinlich - nur eingeschränkt nutzbar ist.

Kannst du bitte teilen, welchen Adapter du nutzt und wie und wo genau du diesen Adapter angeschlossen habt (direkt am Inverter‑RS485 - wo dann da? oder an dem (Chint-)Zähler?)

Mein Ziel ist es, die Batterie gezielt aus dem Netz laden zu können, z. B. bei günstigen nächtlichen Preisen (bei mir mit Tibber als Versorger).

Danke für deine bzw. eure Erfahrungen! :folded_hands:

CB

Hi CeeBee,

ich würde dir empfehlen direkt die foxess_modbus HACS Integration zu verwenden. Wie mein Chint DTSU666 genau angebunden ist kann ich dir gar nicht genau sagen, ich meine aber es sind 2 Datenkabel verbunden.

Hast du die Integration bereits mit den Anpassungen wie hier beschrieben getestet?

Damit kann ich auf jeden Fall auch das Netzladen starten.

1 „Gefällt mir“

Ok, danke dir für die Auskunft.

Bei dem Chint DTSU666 ist es so, dass die zwei “Meter” genannten Verbindungsadern also die beiden RS485 Adern original direkt vom Chint Klemme 24(A) und 25(B) zum Inverter-Stecker “Meter” gehen. Dort am Inverter ist dann ein RJ-45 Stecker/Buchse. Also nichts wo man einfach mal zwei zusätzliche Adern am Inverter anschließen könnte. Daher kam meine Frage, welchen RS485 zu Ethermet Adapter du verwendet hast und wie du die beiden input Adern dieses Adapters dann an deinen Inverter oder am Chint angeschlossen hast.
Vielleicht kannst du mir das noch genauer beschreiben?

Sind am Inverter im Menü dort auch Änderungen in den Einstellungen notwendig?

Die HACS Integration habe ich noch nicht installiert und auch noch keine Anpassungen dazu mir angeschaut. Ich muss erstmal die physische Verbindung hinbekommen…

Danke nochmal für eine Rückmeldung dazu.

CB

Ich gehe davon aus dass die beiden Kabel auf den RS485 des SOLARWATT Manager rail gehen, und die Integration wird direkt via LAN per ModBus TCP/IP kommunizieren.

Weder am Chint Meter, noch am Inverter habe ich weitere Einstellungen getroffen

1 „Gefällt mir“

Hm, ok…. ich hab irgendwo gelesen, dass beim Inverter in den Kommunikationseinstellungen ein Slave-Code mit “247” anstelle default 000 einzugeben wäre.

Und welchen Modbus zu TCP/IP Adapter hast du nun im Einsatz? Danke.

Noch Ergänzung:
Übrigens am Energy Manager Rail gibt es zwar RS485 Anschlüsse - diese sind aber seitens Solarwatt totgelegt, also liefern kein Signal (bisher zumindest). Somit kann ich mir nicht vorstellen wo du da die zwei Bus Adern am Manager Rail angeschlossen haben willst. Kannst mal nachschauen? Danke.

Ich habe dort gar keinen Adapter angeschlossen, wenn überhaupt, dann mein Solateur. mir ist aber auch nicht bekannt dass zusätzlich ein ModBus-Adapter verbaut ist. Kommuniziert der Wechselrichter nicht via Ethernet (TCP/IP)?

Probiere doch einfach mal die Integration, wenn diese meldet dass dein „VSN THREE …“ nicht kompatibel ist, muss nur noch die Integration angepasst werden.

Was muss ich hier machen für 15KW inverter?

  1. HACS-Integration installieren.
  2. Integration via Editor (ich nutze Studio Code Server) wie hier beschrieben anpassen.
  3. HA neustarten
  4. Integration in Geräte & Dienste installieren (ich glaube ich musste die IP des Inverters angeben)
2 „Gefällt mir“

Super!!! :star_struck:

Bei mir hat es nun gekappt.

Ohne RS485-auf-Ethernet Adapter, also direkt über die LAN Anbindung vom Inverter.
Und natürlich mit den Ergänzungen bei der HACS Integration, wie beschrieben.

Die einzig größere Stolperfalle war es die benötigte Datei “types.py“ zu finden. Weil die nämlich im Unterverzeichnis /common/ etwas versteckt ist. Da konnte ich es dann nach Zeile 57 ergänzen.

Vielen Dank für die Hilfen!! :folded_hands: :+1: :+1:

Nachtrag:
Hast du eine Idee oder vielleicht schon umgesetzt, wie ich den sogenannten “PV-Überschuss” definieren kann, mit Hilfe der neuen HACS Integration?

Hintergrund meiner Frage ist, dass ich - vor allem in Übergangszeiten und im Sommer - einen Heizstab (3x 2 kW) für meinen Warmwasser Boiler betreiben möchte. Aber natürlich immer nur, wenn die Batterie voll ist und genügend überschüssige PV Leistung vorhanden ist.

Um die Einstrahlungsstärke (Lichtintensität) festzustellen, habe ich mir inzwischen einen ESP32 mit BT1750 als Lichtsensor erfolgreich gebaut und in HA eingebunden.

Ich wüsste aber gern, ob mit den neuen HACS Integrations-Entities auch was möglich ist in diese Richtung ??

Danke vorab für Hinweise!

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Für den PV-Überschuss nutze ich ausschließlich evcc zum Laden meines Autos. Hier minimiere ich aber per Automation den Max Discharge Current Wert, sonst wäre mein Akku in der Nacht innerhalb 1-2 Stunde leer. evcc unterstützt übrigens auch Heizstäbe, oder aber HA-Sensoren.

Ich habe keine Idee wozu du die Einstrahlungsstärke benötigen könntest. Ich würde eher den Grid CT Wert abfragen (Minus-Werte = Netzbezug / Plus-Werte: Einspeisung)… also wenn dieser Wert länger als 2Minuten größer als 6kW ist schalte die Heizstäbe ein.

Automatisiert lade ich meine Akku in der Nacht bisher noch nicht. Hier ist aber sicherlich die HACS Integration Solcast PV Forecast interessant. Die Vorhersagen sind recht vernünftig. Mein Stromtarif ist der Intelligent Octopus Go, wodurch der Preis von 00 - 05Uhr immer recht günstig ist und das konstant. Denkbar wäre für mich also zB um 02:00Uhr zu checken wie der Akkustand ist. Ist er niedrig und auch der zu erwartende Ertrag am nächsten Tag gering lade den Akku. Hat der Akkustand wieder einen gewissen Wert erreicht schalte den Work Mode wieder aud “Self Use”.

1 „Gefällt mir“

Kommt immer die Meldung nicht für 15kv

Ich bin mir recht sicher, dass die Fehlermeldung nicht „nicht für 15kv“ lautet.

@thokaro Danke für die Hinweise zu evcc.

Ich versuche es gerade zu installieren, es zickt aber gewaltig rum…
Welches add-on “evcc” hast du verwendet und wie hast du es konfiguriert in der evcc.yaml bzw. überhaupt zum Laufen gebracht, damit es den technischen “foxess-h3 smart” auch erkennt?

Zur Info: ich nutze HA als HAOS auf Raspi-5. Versuche dies hier zum Laufen zu bringen: https://github.com/evcc-io/evcc/releases, Version 0.200.1 - 2025-02-28

Danke vorab!

Ich nutze in evcc Daten die ich via Proxy vom Rail Manager abhole: siehe Solarwatt Manager FLEX (!) auslesen via Rest (was allerdings schon ziemlich Offtopic ist)

Ok danke, das hab ich auch probiert. Habe genügend Rest api Daten in HA schon verfügbar.

Aber: ich bekomme das add-on “evcc” in der o.g. Version überhaupt nicht zum laufen mit “foxess” oder “foxess-h3” oder ??? was auch immer für “Solarwatt Inverter Vision” als type oder template. Habe stundenlang erfolglos herum probiert…

Magst du mir diese entscheidenden Stellen deiner evcc.yaml hier mal posten? Danke

Ich hole mir die Daten über den Proxy als Sensoren (in einer eigener yaml für Sensoren):

- platform: rest
  name: "Solarwatt PowerOut"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_out"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_out')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Eigenverbrauch"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_selfconsumed"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_self_consumed')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Eigenverbrauch (PV & Speicher)"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_selfsupplied"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_self_supplied')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Einspeisung"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_out"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_out')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Bezug"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_in"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_in')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Gesamtverbrauch"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_consumed"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_consumed')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Batterie"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_battery"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_battery_2RHD123456AB123_battery_bms_power')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Verbrauch aus Netz"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_consumed_grid"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_consumed_from_grid')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung PV"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_power_produced"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_power_produced')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Phase 1"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_meter_active_power_r"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_meter_2RHD123456AB123_meter_active_power_r')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Phase 2"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_meter_active_power_s"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_meter_2RHD123456AB123_meter_active_power_s')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Leistung Phase 3"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_meter_active_power_t"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_meter_2RHD123456AB123_meter_active_power_t')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ val | round(1) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "W"
  device_class: power

- platform: rest
  name: "Solarwatt Energieverbrauch Gesamt"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_work_consumed_total"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_work_consumed_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energieverbrauch Netz"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_work_consumed_grid"
  scan_interval: 15
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_work_consumed_from_grid_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energieverbrauch Speicher"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_work_consumed_storage"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_work_consumed_from_storage_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energieverbrauch PV"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_work_consumed_producers"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_work_consumed_from_producers_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energie PV-Erzeugung"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_work_produced"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_work_produced_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energie Einspeisung"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_work_out"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'kiwigrid_location_standard_88d6c390f7f6_harmonized_work_out_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energie Batterie Entladung"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_battery_work_out"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_battery_2RHD123456AB123_battery_work_out_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      .[] | select(.name == "foxesshybrid_battery_2RHD123456AB123_battery_bms_1_soc") | .state | split(" ") | .[0]
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Energie Batterie Speicherung"
  resource: http://192.168.178.5:5000/rest/items
  unique_id: "solarwatt_battery_work_in"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_battery_2RHD123456AB123_battery_work_in_total')
      | first %}
    {% if item %}
      {% set raw = item.state %}
      {% set val = (raw.split('|')[-1].split(' ')[0]) | float %}
      {{ (val / 1000) | round(2) }}
    {% else %}
      unknown
    {% endif %}
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

- platform: rest
  name: "Solarwatt Batterie SoC"
  resource: "http://192.168.178.5:5000/rest/items"
  unique_id: "solarwatt_batterie_soc"
  scan_interval: 30
  value_template: >
    {% set item = value_json
      | selectattr('name', 'equalto', 'foxesshybrid_battery_2RHD123456AB123_battery_bms_1_soc')
      | list
      | first %}
    {{ item.state.split(' ')[0] }}
  unit_of_measurement: "%"
  device_class: battery

Publishe die benötigten Werte dann via MQTT (configuration.yaml):

mqtt_statestream:
  base_topic: vision
  include:
    entities:
      - sensor.solarwatt_leistung_bezug
      - sensor.solarwatt_leistung_einspeisung
      - sensor.solarwatt_energieverbrauch_netz
      - sensor.solarwatt_leistung_batterie
      - sensor.solarwatt_batterie_soc
      - sensor.solarwatt_leistung_pv
      - sensor.solarwatt_energie_produziert

Und meine “meters” in der evcc.yaml sehen dann wie folgt aus:

meters:
  - name: grid
    type: custom
    power:
      source: calc
      add:
        - source: mqtt
          topic: vision/sensor/solarwatt_leistung_bezug/state
          timeout: 43200s
        - source: mqtt
          topic: vision/sensor/solarwatt_leistung_einspeisung/state
          timeout: 43200s
          scale: -1
    energy:
      source: mqtt
      topic: vision/sensor/solarwatt_energieverbrauch_netz/state
      timeout: 43200s
  - name: pv
    type: custom
    power:
      source: mqtt
      topic: vision/sensor/solarwatt_leistung_pv/state
      timeout: 43200s
    energy:
      source: mqtt
      topic: vision/sensor/solarwatt_energie_produziert/state
      timeout: 43200s
  - name: battery
    type: custom
    power:
      source: mqtt
      topic: vision/sensor/solarwatt_leistung_batterie/state
      timeout: 43200s
      scale: -1
    soc:
      source: mqtt
      topic: vision/sensor/solarwatt_batterie_soc/state
      timeout: 43200s
    capacity: 7.78

Also alles ohne die ModBus Integration für FoxEss-Geräte.

1 „Gefällt mir“

Oha !! Danke für die Beispiele bzw. deine yaml copy hier! :folded_hands:

Dann versuche ich das mal nachzubauen. Scheint ja der einzige Weg zu sein, der erfolgreich ist. :+1: :+1:

Mit type: modbus selbst bin ich nicht weitergekommen, weil der foxess-h3-smart offenbar auf dem Port 502 nur eine Modbus-Abfrage Instanz akzeptiert.

Und den type: http oder script versteht evcc scheinbar nicht oder nicht mehr…

Ich werde berichten ob es geklappt hat :wink: