Varta Storage in HA integrieren

hallo zusammen,

ich würde gerne meine Varta Batterie in HA Integrieren. Es gibt wohl auch schon eine Lösung über Github https://github.com/Vip0r/vartastorage dort ist beschrieben das es über ein Python Modul läuft. Allerdings hab ich gar keine Ahnung was ich da genau zu tun habe.

Würde sich jemand die Mühe machen mir es zu erklären was ich da genau zu tun habe?

vielen Grüßen

Zahnpasta

Gibt es da eine Weboberfläche?

Die Integration von HA ist aktuell in Entwicklung: https://community.home-assistant.io/t/varta-battery-storage-data-portal-integration/365868/2

Die Weboberfläche ist erreichbar über die IP Adresse der element backup.
Ich bin neu hier und hab leider keine Ahnung wie man das integrieren kann.
Würde aber gerne an der Problemlösung mitarbeiten.
Kann man den Screenshot sehen?

Hallo und herzlich Willkommen Telemanni,

ja deinen Screenshot kann man sehen. Wenn du das ganze über eine Weboberfläche erreichen kannst, dann kannst du dir mal das Video von Simon anschauen. Das ist aber eher etwas für Advanced User:

VG

Moin,
Ich habe meinen Varta Pulse Neo per Modbus integriert.
Der Input (laden) wird mir auch angezeigt. Das Entladen wird nicht angezeigt.
Anbei meine configuration.yaml

Kann mir jemand weiter helfen?

Und ein Bilder Entitäten.
Varta_Output wird nicht übermittelt. Status „unbekannt“

Bsp. Enladen

sensor.yaml

# Varta Batterie entladen
  - platform: integration
    source: sensor.battery_out
    name: varta_energy_out
    unit_prefix: k
    method: trapezoidal
    round: 2

template.yaml

- sensor:
  - name: battery_out
    state: |
      {% set gridin = (states('sensor.mb_varta_active_power') | int(0)) %}
      {% if gridin < 0 %}
        {{ gridin | abs }}
      {% else %}
        0
      {% endif %}
    unique_id: c2266480-93fxxxxxxxxxxxxxxxx
    unit_of_measurement: 'W'
    state_class: measurement
    device_class: power
  

Hallo Arbny86, da bist Du schon wesentlich weiter als ich. Mir will es nicht gelingen die Daten der pulse neo über den modbus auszulesen. Kannst Du mir vielleicht Deinen Ausschnitt aus der configuration.yaml zusenden? Muss man sich denn gernicht mit Benutzernamen und Passwort am pulse neo anmelden?

Hallo zusammen,
ich habe meinen Speicher Varta Neo Pulse 6 bereits seit über einem Jahr erfolgreich über Modbus in HomeAssistant integriert.
Ich habe hierfür eine eigene modbus.yaml geschrieben. Diese möchte ich Euch zur Verfügung stellen und hoffe Ihr könnt damit etwas anfangen. Ich hole mir aus dem Varta nur die Register, welche ich auch verwende.
Der Varta ist per LAN-Kabel im Heimnetz. Bitte Euren Host entsprechend Eurer IP vom Speicher ändern. Weiterhin die modbus.yaml per include! Befehl in die configuration.yaml einbinden.

# Varta PV Speicher Sensoren

  - name: Varta
    delay: 0
    message_wait_milliseconds: 30
    timeout: 5
    type: tcp
    host: 192.168.2.78
    port: 502  
    sensors:
      - name: Varta Batterie Ladezustand
        unique_id: "VartaLadezustand"
        unit_of_measurement: Prozent
        slave: 1
        address: 1068
        input_type: holding
        scan_interval: 6

      - name: Varta Active Power
        unique_id: "VartaActivePower"
        unit_of_measurement: W
        slave: 1
        address: 1066
        input_type: holding
        scan_interval: 6

      - name: Varta Status
        unique_id: "VartaStatus"
        slave: 1
        address: 1065
        input_type: holding
        scan_interval: 6

      - name: Varta Verfügbare Energie
        unique_id: "VartaAvailablePower"
        unit_of_measurement: Wh
        slave: 1
        address: 1086
        input_type: holding
        scan_interval: 6

Moin Marko,
ich habe im Protokoll haufenweise Fehler zur Modbus Abfrage des Varta Pulse. Hast du diese Probleme auch?
Vielen Dank, Martin.

Hy,
nein ich bekomme so einen Fehler nicht.
Trotzdem bekomme ich einmal täglich einen Fehler, da der Varta nachts neu startet.
Die Uhrzeit vom Neustart kann man aber im Web-UI einstellen.

Ist Dein Fehler das Register 1000?
Das wäre die SW-Version.
Das rufe ich nicht ab.

Hier mal ein Link zur Register Übersicht von Varta.

Grüße Marko

Danke für die schnelle Antwort!

Ich habe mal die Abfrage Register 1000 rausgenommen, dann wandert der Fehler auf Register 1017. Es muss einen Fehler am Anfang der Kette geben…

Ich habe mich wegen unplausibler Zuordnung Ladung und Entladung im Energy Dashboard auf die suche begeben. Wie sieht es da bei dir aus?
Herzlichen Dank, Martin.



Ich habe jetzt meine modbus.yaml ausgedünnt. Der Parameter “message_wait_milliseconds” musste gem. Varta Doku auf 1000ms. Das scheint jetzt zu laufen. Ich befürchte, dass es noch nicht das Problem mit den Riemann Summen behebt.

  - name: mb_varta
    type: tcp
    host: 192.168.96.5
    port: 502
    delay: 1
    timeout: 3
    message_wait_milliseconds: 1000
    sensors:
### EMS Software Version - not for Varta link
      - name: mb_varta_EMS
        slave: 255
        address: 1000
        count: 17
        data_type: string
### ENS Software Version - not for Varta link
      - name: mb_varta_ENS
        slave: 255
        address: 1017
        count: 17
        data_type: string
### Software Version - not for Varta link
      - name: mb_varta_software
        slave: 255
        address: 1034
        count: 17
        data_type: string
### Table version
      - name: mb_varta_table_version
        slave: 255
        address: 1051
        data_type: uint16
### timestamp
      - name: mb_varta_timestamp_lower
        slave: 255
        address: 1052
        data_type: uint16
### timestamp
      - name: mb_varta_timestamp_higher
        slave: 255
        address: 1053
        data_type: uint16
### Serial Number
      - name: mb_varta_serial
        slave: 255
        address: 1054
        count: 10
        data_type: string
### Number of Battery Modules installed
      - name: mb_varta_installed_batteries
        slave: 255
        address: 1064
        data_type: uint16
### State
      - name: mb_varta_state
        slave: 255
        address: 1065
        data_type: uint16
        unit_of_measurement: "State"
### Active Power - positive:charge / negative: discharge
      - name: mb_varta_active_power
        slave: 255
        address: 1066
        data_type: int16
        device_class: power
        unit_of_measurement: "W"
### Apparent Power - positive:charge / negative: discharge
      - name: mb_varta_apparent_power
        slave: 255
        address: 1067
        data_type: int16
        device_class: apparent_power
        unit_of_measurement: "VA"
### State of Charge
      - name: mb_varta_SOC
        slave: 255
        address: 1068
        data_type: uint16
        device_class: battery
        unit_of_measurement: "%"
### Energy Counter lower word
      - name: mb_varta_energy_low
        slave: 255
        address: 1069
        data_type: uint16
        state_class: total_increasing
        device_class: energy
        unit_of_measurement: "Wh"
### Energy Counter higher word
      - name: mb_varta_energy_high
        slave: 255
        address: 1070
        data_type: uint16
        state_class: total_increasing
        device_class: energy
        unit_of_measurement: "Wh"
### Installed capacity
      - name: mb_varta_capacity
        slave: 255
        address: 1071
        data_type: uint16
        scale: 10
        device_class: energy
        unit_of_measurement: "Wh"
### Grid Power
      - name: mb_varta_grid_power
        slave: 255
        address: 1078
        data_type: int16
        device_class: power
        unit_of_measurement: "W"
### Ladeenergie
      - name: mb_varta_charging_energy
        slave: 255
        address: 1085
        data_type: uint16
        device_class: energy
        unit_of_measurement: "Wh"
### Entladeenergie
      - name: mb_varta_discharging_energy
        slave: 255
        address: 1086
        data_type: uint16
        device_class: energy
        unit_of_measurement: "Wh"
      

…ich logge den Software Stand, weil Varta anfangs Updates gefahren hat ohne das zu kommunizieren.

Hy,
ich rufe tatsächlich nur die vier Register ab, welche in meinem Code weiter oben sind.
Den Lade.-u. Entladestrom vom Varta für das Energiedashboard hole ich mir mit der Integration Solarwatt aus dem Energymanager (Solarwatt) welcher bei mir verbaut ist.

Im Screenshot ist die Ansicht Monat Februar.
Gas ist der Stromverbrauch meiner Wärmepumpe.

Hallo zusammen, leider bringe ich das immer noch nicht zum laufen.
Verstehe ich das richtig, dass eine zusätzliche modbus.yaml geschrieben werden muss? Und wie komme ich dann an die entsprechenden parameter?
Es braucht keine Änderung in der configuration.yaml?

Hy,

um meine configuration.yaml nicht zu groß werden zu lassen, habe ich eine modbus.yaml erstellt.
Diese wird dann per include integriert.

1 „Gefällt mir“

Vielen Dank, die Zeile hab ich eingefügt.
Jetzt habe ich gehofft beim Energie Dashboard mein Varta pulse neo hinzufügen zu können, da häng ich schon wieder fest.
grafik

Achso, meine VARTA pulse hat zwei Satz Sensoren.
Einmal am Netz und einmal an der PV Anlage.
Die habe ich übrigens selbst gebaut, VARTA war mir zu teuer.

die modbus.yaml mit den entsprechenden Registern hast du angelegt? Neu gestartet?
Für die Nutzung im Energy Dashboard benötigst du Energie und nicht Leistung ich füge dir mal was ein. Wenn es nicht verständlich ist, nochmal melden!

Die verfügbaren Register hat Marko oben bereits eingefügt.

  # Varta input/output
template:
  - sensor:
      - name: "Varta Input Power"
        unit_of_measurement: "W"
        state_class: measurement
        device_class: power
        state: >
          {% if states('sensor.mb_varta_active_power') | float(0) >= 0 %}
          {% set varta_in = states('sensor.mb_varta_active_power') | float(0) %}
          {% else %}
          {% set varta_in = 0 %}
          {% endif %}
          {{ varta_in }}

  - sensor:
      - name: "Varta Output Power"
        unit_of_measurement: "W"
        state_class: measurement
        device_class: power
        state: >
          {% if states('sensor.mb_varta_active_power') | float(0) <= 0 %}
          {% set varta_out = states('sensor.mb_varta_active_power') | float(0) *-1 %}
          {% else %}
          {% set varta_out = 0 %}
          {% endif %}
          {{ varta_out }}

  - sensor:
      - name: "Varta Energy"
        unique_id: "mb_varta_energy_total"
        device_class: energy
        state_class: total_increasing
        unit_of_measurement: "KWh"
        state: >
          {{ (((float(states('sensor.mb_varta_energy_high'))) * 65536) +(float(states('sensor.mb_varta_energy_low')))) / 1000 | round (0) }}

     # Varta Discharging Time KWh
  - sensor:
      - name: "Varta Discharging Time"
        unique_id: "mb_varta_discharging_time"
        device_class: duration
        state_class: measurement
        unit_of_measurement: "h"
        state: >
          {{ ((float(states('sensor.mb_varta_discharging_energy'))) / 1000) / ((float(states('sensor.mb_varta_active_power'))) / 1000 * -1) }}

      # Varta Charging Time KWh
      - name: "Varta Charging Time"
        unique_id: "mb_varta_charging_time"
        device_class: duration
        state_class: measurement
        unit_of_measurement: "h"
        state: >
          {{ ((float(states('sensor.mb_varta_charging_energy'))) / 1000) / ((float(states('sensor.mb_varta_active_power'))) / 1000) }}

sensor:
  - platform: template
    sensors:
      mb_varta_status:
        friendly_name: "Varta Status"
        value_template: >-
          {% set mapper =  {
              '0' : 'Busy',
              '1' : 'Run',
              '2' : 'Charge',
              '3' : 'Discharge',
              '4' : 'Standby',
              '5' : 'Error',
              '6' : 'Service',
              '7' : 'Islanding' } %}
          {% set state =  states.sensor.mb_varta_state.state %}
          {{ mapper[state] if state in mapper else 'unknown' }}

  - platform: integration
    source: sensor.varta_input_power
    name: varta_input_kwh
    unit_prefix: k
    round: 2

  - platform: integration
    source: sensor.varta_output_power
    name: varta_output_kwh
    unit_prefix: k
    round: 2
    

Hi, per Zufall auf Euer Forum gestoßen und heute schon weiter als die letzten Jahre. :slight_smile: Jetzt habe ich eine kleine Frage zu Deinen zwei Codeabschnitten. Wo gehören diese rein? Doch nicht auch in die ausgelagerte modbus.yaml?

Gruß
Stefan

manchmal ist der Zufall auf der richtigen Seite! :slight_smile:
Nein, die gehören in die configuration.yaml

Sicherung nicht vergessen und vorher checken unter Entwicklerwerkzeuge - YAML - Konfiguration prüfen!

1 „Gefällt mir“

Danke, aber irgendwie ist mit das alles noch ein Buch mit sieben Siegeln wo was hingehört…

Also den Modbusanteil habe ich ausgelagert und die Sensoren bekommen auch Werte, soweit gut.
So wie ich das jetzt verstanden hab wandelst Du jetzt irgendwas “um” - hier kämpfe ich zum ersten Mal an der Logik.
Und dann ist zwar die eingefügte Konfig soweit gültig das sie den Start nicht verhindert, bekomme aber danach in den Benachrichtigungen ein “Invalid Config” in den templates.

Kannst Du vielleicht das für DAU’s mal erklären was genau passiert?

Ich will es versuchen:
der template Code erzeugt eine Entlade- und ein Ladeentität (Leistung P=W). Aus dem Varta bekommst du “active power” aus dem Register 1066 Vorzeichenbehaftet (negative: discharge , positive: charge). Damit werden im “platform: integration” die beiden Riemann Summen für die KWh berechnet.
Zwei Hinweise:

  • Die Sensoren z.B. sensor.mb_varta_active_power heißen bei dir exakt gleich?
  • Neustart in den Entwicklerwerkzeugen nur “MODBUS” reicht nicht aus. Bitte mindestens “Home Assistant neu starten”.