Anker Solix V1 Wallbox per Modbus auslesen

Hallo zusammen,

habe etwas länger dafür gebraucht die Wallbox per Modbus auslesen zu können. Dem nächsten kann ich das hoffentlich ersparen. Hier die Modbus.yaml die bei mir läuft. IP-Adresse ändern. Die Daten kommen per LAN wenn LAN und WLAN läuft. Wenn nur WLAN läuft dann kommen die Daten auch per WLAN.

# Anker Solix V1 Charger
  - name: Wallbox
    type: tcp
    host: 192.168.0.111
    port: 502
    delay: 1
    message_wait_milliseconds: 30
    timeout: 5
    sensors:
      - name: Wallbox_Gesamtladeleistung
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        device_address: 1
        address: 20068
        input_type: input
        data_type: uint32
        scale: 1
      - name: Wallbox_Spannung_L1
        unit_of_measurement: "V"
        device_class: "voltage"
        state_class: "measurement"
        device_address: 1
        address: 20053
        input_type: input
        data_type: uint16
        scale: 0.1   
      - name: Wallbox_Spannung_L2
        unit_of_measurement: "V"
        device_class: "voltage"
        state_class: "measurement"
        device_address: 1
        address: 20054
        input_type: input
        data_type: uint16
        scale: 0.1   
      - name: Wallbox_Spannung_L3
        unit_of_measurement: "V"
        device_class: "voltage"
        state_class: "measurement"
        device_address: 1
        address: 20055
        input_type: input
        data_type: uint16
        scale: 0.1   
      - name: Wallbox_Strom_L1
        unit_of_measurement: "A"
        device_class: "power"
        state_class: "measurement"
        device_address: 1
        address: 20059
        input_type: input
        data_type: uint16
        scale: 0.1
        precision: 2   
      - name: Wallbox_Strom_L2
        unit_of_measurement: "A"
        device_class: "power"
        state_class: "measurement"
        device_address: 1
        address: 20060
        input_type: input
        data_type: uint16
        scale: 0.1
        precision: 2
      - name: Wallbox_Strom_L3
        unit_of_measurement: "A"
        device_class: "power"
        state_class: "measurement"
        device_address: 1
        address: 20061
        input_type: input
        data_type: uint16
        scale: 0.1

Da ich von dem Beitrag profitiert habe und meine Integration mit gemini und der offiziellen Anker-Dokumentation weiterentwickelt habe (eigentlich ging nur der Wert limit nicht), möchte ich das Ergebnis hier teilen, in der Hoffnung, dass es dem nächsten vielleicht auch nützen könnte.

Anker Doku - https://salesforce-knowledge-download.s3.us-west-2.amazonaws.com/000031998/en_US/000031998.pdf

hier die modbus.yaml. einfach aus der configuratino.yaml ausgelagert.

- name: Wallbox
  type: tcp
  host: 192.168.0.118
  port: 502
  delay: 2
  timeout: 5

  sensors:
    # --- LEISTUNG & ENERGIE ---
    - name: "Wallbox Ladeleistung"
      unique_id: wallbox_v1_total_power
      slave: 1
      address: 20068
      input_type: input
      data_type: uint32
      unit_of_measurement: "W"
      device_class: power
      state_class: measurement

    - name: "Wallbox Sitzungsenergie"
      unique_id: wallbox_v1_session_energy
      slave: 1
      address: 20084
      input_type: input
      data_type: uint32
      unit_of_measurement: "kWh"
      scale: 0.001
      precision: 2
      device_class: energy
      state_class: total_increasing

    # --- NETZ-PARAMETER (SPANNUNG L-N) ---
    - name: "Wallbox Spannung L1"
      unique_id: wallbox_v1_v1n
      slave: 1
      address: 20053
      input_type: input
      unit_of_measurement: "V"
      device_class: voltage
      scale: 0.1
      precision: 1

    - name: "Wallbox Spannung L2"
      unique_id: wallbox_v1_v2n
      slave: 1
      address: 20054
      input_type: input
      unit_of_measurement: "V"
      device_class: voltage
      scale: 0.1

    - name: "Wallbox Spannung L3"
      unique_id: wallbox_v1_v3n
      slave: 1
      address: 20055
      input_type: input
      unit_of_measurement: "V"
      device_class: voltage
      scale: 0.1

    # --- NETZ-PARAMETER (SPANNUNG L-L) ---
    - name: "Wallbox Spannung L1-L2"
      unique_id: wallbox_v1_v12
      slave: 1
      address: 20056
      input_type: input
      unit_of_measurement: "V"
      device_class: voltage
      scale: 0.1

    # --- NETZ-PARAMETER (STROM) ---
    - name: "Wallbox Strom L1"
      unique_id: wallbox_v1_i1
      slave: 1
      address: 20059
      input_type: input
      unit_of_measurement: "A"
      device_class: current
      scale: 0.1
      precision: 2

    - name: "Wallbox Strom L2"
      unique_id: wallbox_v1_i2
      slave: 1
      address: 20060
      input_type: input
      unit_of_measurement: "A"
      device_class: current
      scale: 0.1

    - name: "Wallbox Strom L3"
      unique_id: wallbox_v1_i3
      slave: 1
      address: 20061
      input_type: input
      unit_of_measurement: "A"
      device_class: current
      scale: 0.1

    # --- SYSTEM-INFOS & STATUS ---
    - name: "Wallbox Status Code"
      unique_id: wallbox_v1_status_code
      slave: 1
      address: 20097
      input_type: input
      data_type: uint16

    - name: "Wallbox Temperatur Intern 1"
      unique_id: wallbox_v1_temp_1
      slave: 1
      address: 20093
      input_type: input
      unit_of_measurement: "°C"
      device_class: temperature
      scale: 0.1
      precision: 1

    - name: "Wallbox Temperatur Intern 2"
      unique_id: wallbox_v1_temp_2
      slave: 1
      address: 20094
      input_type: input
      unit_of_measurement: "°C"
      device_class: temperature
      scale: 0.1
      precision: 1

    - name: "Wallbox OCPP Status"
      unique_id: wallbox_v1_ocpp_status
      slave: 1
      address: 20099
      input_type: input
      data_type: uint16

  switches:
    - name: "Wallbox Laden Schalter"
      unique_id: wallbox_v1_charge_switch
      slave: 1
      address: 21000
      write_type: holding
      command_on: 1
      command_off: 2
      verify:
        address: 20097
        input_type: input
        state_on: 2
        state_off: 0


und ein Helfer muss erstellt werden.

  1. Gehe zu Einstellungen > Geräte & Dienste > Helfer.
  2. Klicke auf + Helfer erstellen > Nummer.
  3. Name: Wallbox Ladestrom Helfer
  4. Mindestwert: 6
  5. Maximalwert: 32
  6. Schrittgröße: 1
  7. Anzeigemodus: Schieberegler
  8. Klicke auf Erstellen. (Die Entität heißt jetzt input_number.wallbox_ladestrom_helfer).

und die Kachel.

type: vertical-stack
cards:
  - type: entities
    title: Solar-Speicher & Reserve
    entities:
      - entity: input_number.auto_lade_reserve
        name: Nacht-Reserve für Haus
      - entity: sensor.system_gencaslanhome_sb_ladestand
        name: Aktueller Akku
    header:
      type: picture
      image: https://images.unsplash.com/photo-1593941707882-a5bba14938c7?q=80&w=400
  - type: gauge
    entity: sensor.wallbox_ladeleistung
    name: Aktuelle Ladeleistung
    unit: W
    min: 0
    max: 11000
    needle: true
    severity:
      green: 0
      yellow: 7000
      red: 10000
  - type: entities
    title: Wallbox Steuerung
    show_header_toggle: false
    state_color: true
    entities:
      - entity: switch.wallbox_ladung_aktivieren_2
        name: Laden Start/Stopp
      - entity: input_number.wallbox_ladestrom_helfer
        name: Ladestrom Limit setzen
      - entity: sensor.wallbox_status_klartext
        name: Aktueller Zustand
      - entity: sensor.wallbox_ocpp_klartext
        name: Cloud Verbindung (OCPP)
  - type: entities
    title: System-Überwachung
    show_header_toggle: false
    entities:
      - entity: sensor.wallbox_temperatur_intern_1
        name: Innentemperatur 1
      - entity: sensor.wallbox_temperatur_intern_2
        name: Innentemperatur 2
      - entity: sensor.wallbox_spannung_l1_l2
        name: Netz-Spannung (L1-L2)
  - type: grid
    title: Phasen-Details
    columns: 3
    square: false
    cards:
      - type: entity
        entity: sensor.wallbox_spannung_l1_3
        name: L1 Volt
      - type: entity
        entity: sensor.wallbox_spannung_l2_3
        name: L2 Volt
      - type: entity
        entity: sensor.wallbox_spannung_l3_3
        name: L3 Volt
      - type: entity
        entity: sensor.wallbox_strom_l1_3
        name: L1 Ampere
      - type: entity
        entity: sensor.wallbox_strom_l2_3
        name: L2 Ampere
      - type: entity
        entity: sensor.wallbox_strom_l3_3
        name: L3 Ampere
  - type: glance
    entities:
      - entity: sensor.wallbox_sitzungsenergie
        name: Diese Sitzung
        icon: mdi:battery-charging

Guten Abend, das sieht doch gut aus, Problem ist wie steuerst du wallbox_ladestrom_helfer und was soll der bezwecken? Der schaltet doch gar nichts oder übersehe ich da etwas?

Nabend! Ich lasse mal gemini antworten, da ich das zusammen mit ihm gemacht habe:

Du übersiehst überhaupt nichts – dein technischer Riecher ist absolut richtig: Der Helfer input_number.wallbox_ladestrom_helfer schaltet für sich genommen erst einmal gar nichts. Er ist im Grunde nur eine „virtuelle Variable“ in Home Assistant.

​Was bezweckt der Helfer?

​Der Helfer dient als Brücke zwischen deiner Benutzeroberfläche (dem Dashboard) und der eigentlichen Modbus-Automation.

​Normalerweise würde man den Schieberegler direkt auf die Modbus-Entität setzen. Da die Modbus-Integration beim Schreiben von Werten (wie wir oben bei dem Facebook-Post gesehen haben) aber extrem unzuverlässig ist und oft gar nicht erst auftaucht, nutzen wir diesen Trick:

  1. Am Dashboard: Du bewegst den Schieberegler input_number.wallbox_ladestrom_helfer (z. B. auf 16A).

  2. Im Hintergrund: Eine Automation (die wir in Schritt 3 angelegt haben) bemerkt: „Ah, Ahmet hat den Regler bewegt!“

  3. Der Schaltbefehl: Diese Automation nimmt den Wert des Helfers, multipliziert ihn mit 10 (weil die Box 160 für 16,0 A erwartet) und schickt ihn per „Brute Force“ (modbus.write_register) direkt an das Register 21001 der Wallbox.

Dann solltest du die Automation aus Schritt 3 hier vielleicht auch mal erwähnen…das ist das Problem mit KI, die Leute Posten ohne zu wissen was es ist und wofür es gebraucht wird…

Bei dieser Tonlage mache ich gar nichts und werde das sehr nützliche Tool Gemini bestimmt nicht ausdiskutieren. Die Leute denken, wenn sie sich im Recht fühlen, können sie jegliche allgemeinen Umgangsformen ignorieren..

Mahlzeit,
cool bleiben Jungs und Mädels, auch wenn ich diese Art uncool finde, das man nur Stücke Preis gibt. Daher die meine Umsetzung, man muss vorher aber in der App auf Max stellen, sonst kann der Modbus nicht richtig arbeiten.

alias: "Wallbox: Strom Limit anpassen"
description: "Überträgt den UI-Schieberegler direkt an das Modbus-Register 21001"
trigger:
  - platform: state
    entity_id: input_number.wallbox_ladestrom_helfer 
action:
  - action: modbus.write_register
    data:
      hub: anker_ev
      address: 21001
      slave: 1
      value: "{{ (trigger.to_state.state | int) * 10 }}"
mode: restart

auf den eigenen Code anpassen.