Read DaheimLaden Wallbox via Modbus-(proxy) and EVCC

Thank you so much!!! :slight_smile:

@ Bischoff

Sorry für das späte Bedanken. Hatte aber jetzt erst wieder Zeit danach zu schauen.
Die configuration.yaml und daheimlader.yaml habe ich so übernommen und es hat funktioniert.
Für was ist die automations.yaml da?
Kannst du mir das auch noch erklären?

Automation helfen Dir gewisse Dinge zu erledigen dann automatisch, Siehe Bild rechter Teil
Eine automation checkt Ziel-Ladestand vs Auto und schaltet dann entsprechend ab
Eine andere starte die Box bei Click auf den Start/stop Button

1 Like

Danke.
Das werde ich bei mir auch mal ausprobieren.

1 Like

Hallo Ihr.

Ich habe genau alles befolgt, was hier geschrieben wurde. Ich habe in der configuration.yaml den entsprechenden Code eingetragen:

modbus: !include modbus.yaml

homeassistant:
  customize:
    sensor.daheimlader_energy_meter_scaled:
      state_class: total_increasing
      unit_of_measurement: kWh

Dann habe ich in der modbis.yaml das hier eingetragen:

# Modbus TCP
modbus:
  - name: "DaheimLader"
    type: tcp
    host: 192.168.179.13
    port: 502
    timeout: 60
    sensors:
      - name: "DaheimLader Status"
        address: 0000
        scan_interval: 30
        data_type: uint16
        unique_id: daheimLader_charging_station_state
      - name: "DaheimLader Status Ladekabel"
        address: 0002
        scan_interval: 30
        data_type: uint16
        unique_id: daheimLader_cable_state
      - name: "DaheimLader Fehlercode"
        address: 0004
        scan_interval: 30
        data_type: uint16
        unique_id: daheimlader_fault_code
      - name: "DaheimLader Ladeleistung"
        unit_of_measurement: W
        address: 0012
        scan_interval: 30
        data_type: uint32
        unique_id: daheimlader_active_power
        device_class: energy
        state_class: measurement
      - name: "DaheimLader Zählerstand"
        address: 0028
        scan_interval: 30
        data_type: uint32
        unique_id: daheimLader_energy_meter
        device_class: energy
        state_class: total_increasing
        unit_of_measurement: kWh
      - name: "DaheimLader geladene Energie"
        unit_of_measurement: kWh
        address: 0072
        scan_interval: 30
        data_type: uint16
        unique_id: daheimLader_charged_energy
        device_class: energy
        state_class: total
      - name: "DaheimLader Ladedauer"
        unit_of_measurement: s
        address: 0078
        scan_interval: 30
        data_type: uint32
        unique_id: daheimlader_charging_time
        device_class: duration
        state_class: measurement
      - name: "DaheimLader Modus"
        address: 0093
        scan_interval: 30
        data_type: uint16
        unique_id: daheimlader_charge_control
      - name: "DaheimLader Ladeleistung L1"
        unit_of_measurement: W
        address: 0016
        scan_interval: 30
        data_type: uint32
        unique_id: daheimLader_l1_charging_power
        device_class: power
        state_class: measurement
      - name: "DaheimLader Ladeleistung L2"
        unit_of_measurement: W
        address: 0020
        scan_interval: 30
        data_type: uint32
        unique_id: daheimLader_l2_active_power
        device_class: power
        state_class: measurement
      - name: "DaheimLader Ladeleistung L3"
        unit_of_measurement: W
        address: 0024
        scan_interval: 30
        data_type: uint32
        unique_id: daheimlader_l3_active_power
        device_class: power

sensor: !include daheimladen.yaml

und in der daheimladen.yaml habe ich folgendes stehen:

- platform: template
  sensors:
      daheimlader_charging_station_state:
        friendly_name: "DaheimLader Status"
        unique_id: daheimlader_charging_station_state_text
        value_template: >-
          {% if states('sensor.daheimlader_status') == '1' %}
            Bereit
          {% elif states('sensor.daheimlader_status') == '2' %}
            Verbunden
          {% elif states('sensor.daheimlader_status') == '3' %}
            Laden startet
          {% elif states('sensor.daheimlader_status') == '4' %}
            Lädt
          {% elif states('sensor.daheimlader_status') == '5' %}
            Start fehlgeschlagen
          {% elif states('sensor.daheimlader_status') == '6' %}
            Laden beendet
          {% elif states('sensor.daheimlader_status') == '7' %}
            Systemfehler
          {% elif states('sensor.daheimlader_status') == '8' %}
            Ladetimer
          {% elif states('sensor.daheimlader_status') == '9' %}
            Firmware Upgrade
          {% elif states('sensor.daheimlader_status') == '10' %}
            Eingeschaltet
          {% elif states('sensor.daheimlader_status') == '31' %}
            Blockiert
          {% else %}
            Unbekannt
          {% endif %}
          
      daheimlader_cable_state:
        friendly_name: "DaheimLader Status Ladekabel"
        unique_id: daheimlader_cable_state_text
        value_template: >-
          {% if states('sensor.daheimlader_status_ladekabel') == '0' %}
            Nicht verbunden
          {% elif states('sensor.daheimlader_status_ladekabel') == '1' %}
            Verbunden
          {% else %}
            Unbekannt
          {% endif %}

      daheimlader_fault_code:
        friendly_name: "DaheimLader Fehlercode"
        unique_id: daheimlader_fault_code_text
        value_template: >-
          {% if states('sensor.daheimlader_fehlercode') == '0' %}
            kein Fehler
          {% elif states('sensor.daheimlader_fehlercode') == '11' %}
            CP-Kontroll Wert
          {% elif states('sensor.daheimlader_fehlercode') == '13' %}
            Unterspannung
          {% elif states('sensor.daheimlader_fehlercode') == '14' %}
            Überspannung
          {% elif states('sensor.daheimlader_fehlercode') == '15' %}
            Temperatur zu hoch
          {% elif states('sensor.daheimlader_fehlercode') == '16' %}
            Zählerwert
          {% elif states('sensor.daheimlader_fehlercode') == '17' %}
            Leckage
          {% elif states('sensor.daheimlader_fehlercode') == '18' %}
            Output Short
          {% elif states('sensor.daheimlader_fehlercode') == '19' %}
            Überstrom
          {% elif states('sensor.daheimlader_fehlercode') == '21' %}
            Fahrzeug
          {% elif states('sensor.daheimlader_fehlercode') == '22' %}
            Fahrzeug nicht erkannt
          {% elif states('sensor.daheimlader_fehlercode') == '23' %}
            Relais
          {% elif states('sensor.daheimlader_fehlercode') == '24' %}
            Leckage, Gerät prüfen
          {% elif states('sensor.daheimlader_fehlercode') == '25' %}
            PE-Fehler
          {% elif states('sensor.daheimlader_fehlercode') == '26' %}
            Start / Stopp Ladefehler
          {% else %}
            Unbekannt
          {% endif %}

      daheimlader_charge_control:
        friendly_name: "DaheimLader Modus"
        unique_id: daheimlader_charge_control_text
        value_template: >-
          {% if states('sensor.daheimlader_modus') == '0' %}
            Plug % Charge
          {% elif states('sensor.daheimlader_modus') == '1' %}
            RFID / OCPP Start+Stopp
          {% elif states('sensor.daheimlader_modus') == '2' %}
            Ladestation gesperrt
          {% else %}
            Unbekannt
          {% endif %}
          
          
      daheimlader_charged_energy_scaled:
        friendly_name: "DaheimLader geladene Energie scaled"
        value_template: "{{ states('sensor.daheimlader_geladene_energie') | float }}"
        unit_of_measurement: kWh
        device_class: energy
        unique_id: daheimlader_charged_energy_scaled
        


      daheimlader_ladedauer_scaled:
        friendly_name: "DaheimLader Ladedauer scaled"
        value_template: "{{ states('sensor.daheimlader_ladedauer') | int(0) | timestamp_custom('%-Hh %-Mmin %-Ssec', false) | regex_replace('(^0h| 0min| 0sec$)', '') | regex_replace('(^ )', '') }}"

Nur jetzt kommt die Frage der Fragen:

Warum erkennt Home Assistant nicht die Wallbox? Er hat noch nicht mal ein neues Gerät eingerichtet bzw. eine neue Entität eingebunden.

Was muss ich denn noch tun, damit ich überhaupt irgendwie eine Verbindung zu der Wallbox herstellen kann?

Mit Modbus.yaml kenne ich nicht den Ansatz

Probiere mal wie hier im thread diesen&Deinen Teil in der configuration.yaml zu haben

Bsp

Reboot wichtig

Danach solltest du in den Einstellungen/ Geräte & Dienste /Integrationen Modbus sehen und Deine entities dazu

@MDCommander
@Bischoff
Bei mir wird die Wallbox auch nicht immer in HA angezeigt. Keine Ahnung woran das liegt.
Hab HA und MQTT auf Proxmox installiert.
Wenn ich Proxmox neu starte, oder ein andermal HA selber neu starte, die Wallbox vom Strom trenne und wieder anschalte, funktioniert es manchmal. Aber nicht immer.
Dadurch habe ich dann leider auch nicht immer eine Verbrauchsanzeige der Wallbox in der Power Flow Card Plus-Karte.
Weiß da auch keinen Rat mehr.

Wie ist die Wallbox verbunden, wifi oder LAN?
Probier mal LAN - hab das bei mir mit nen repeater gemacht und dann die letzten Meter Funk-repeater auf LAN. Direkte Kal-Verbindung war nicht möglich.
Extrem stabil - zuvor trotz wlan-repeater aber die Wallbox verbunden über WLAN war auch nicht sehr stabil obwohl daheimladen meinte mit neuester Firmware würde Modbus und wlan gehen….was auch geht, hab’s nur nie stabil hinbekommen und Wallbox musste über aus/ein als gesetzt werden.
Seit halbem Jahr repeater wlan auf LAN null Ausfälle.

Die Wallbox ist per Wlan angeschlossen. Geht auch schlecht mit Lan, weil die Garage nicht ans Haus angebaut ist.
Dann werde ich das was du gemacht hast auch mal ausprobieren. Ich muss nur schauen wie ich die Wallbox von der Wand bekomme um an den Ethernet Anschluss zu kommen.
Die Wallbox ist zwischen zwei Garagentoren und ich komme nicht mehr gut an die Schraube ran die verhindert das man sie hochschieben kann.
Es sind nachträglich Sektionaltore eingebaut worden und es nicht darauf geachtet worden. Bei den alten Toren kam man gut dran.

Welche Version hast, vermute Pro dann?
Bei meiner Touch, nicht die Pro, ist der Anschluss frei zugänglich links unten.
Laut Video bei den Pro, Box runter, Deckel runter und Kabel rein, aber ja verstehe, bei Dir schwer zugänglich, evtl. abgekröpfter Schlüssel.
Versuch über repeater ist es mal Wert, denke an fixed IP am Router, macht es einfacher und dass diese LAN-ip dann auch verwendest in Deinem setup. Bei mir top stabil über LAN, wlan-Modbus war shaky

Moin,

vielen vielen Dank

Liebe Grüße
Markus

Hallo,

es gibt jetzt für den DaheimLader eine Integration. :heart_eyes:
Hier ist die Beschreibung von der offiziellen Seite:

Gruß Volker

Na ja, das ist eher ne Integration für EVCC. Das ging auch vorher im Prinzip schon. Anfänglich fand ich evcc auch ganz gut. Aber zuletzt hatte ich nur Stress mit Tibber und evcc. Die Hilfe der evcc war eher ein “Wegdiskutieren” des Problems und die plumpe Behauptung es liege an Tibber - obgleich das Problem ohne evcc nicht auftritt.

Im Grunde bräuchte es ne Integration die evcc überflüssig macht.

Hallo Jürgen,
vielen lieben Dank für deine Arbeit. Ich bin auch gerade dabei meinen Daheim-Lader in Home-Assistent reinzu schieben. Der Weg über evcc ist mir irgendwie unnötig kompliziert. Das kann man doch über Modbus wesentlich ressourcenschonender hinbekommen, da bin ich wirklich dankbar über deine Arbeit.
Wäre es noch möglich, dass du uns auch dein Dashboard zur Verfügung stellst?
Ich finde das ziemlich hübsch :slight_smile:
Liebe Grüße

Moin und kurze Frage.
Wie bist du an die Modbus-Werte gekommen?
Für mich wäre interessant, ob man per Modbus auch die Verriegelung des Ladekabels steuern kann, bzw. ob du dazu ggf. das Register dazu kennst?

Du findest die Beschreibung der Modbus API unter:
https://www.daheimladen.de/post/modbus-api

So wie ich das sehe, gibt es keinen Zustand der Kabelverriegelung.

@Bischoff
Ich bin der User aus dem GoingElectric-Forum.
Wir wollten ja hier weiter machen bei Fragen zur DaheimLaden Wallbox mit Home Assistant.

Ich habe zur configuration.yaml den YAML-Code aus #22 hinzugefügt.
Außerdem habe ich die daheimlader.yaml (mit “r” am Ende) erstellt und den YAML-Code aus #21 eingefügt.

Danach kommt aber in Home Assistant unter “Einstellungen” 6x folgender Hinweis:
“Veraltete sensor-Template wird eingestellt”
Hast Du dafür schon eine neue Syntax?

Probiere mal dies in der daheimlader.yaml

#template:

  • sensor:
    • unique_id: daheimlader_charging_station_state_text
      default_entity_id: sensor.daheimlader_charging_station_state
      name: DaheimLader Status
      state: “{% if states(‘sensor.daheimlader_status’) == ‘1’ %}\n Bereit\n{% elif
      states(‘sensor.daheimlader_status’) == ‘2’ %}\n Verbunden\n{% elif states(‘sensor.daheimlader_status’)
      == ‘3’ %}\n Laden startet\n{% elif states(‘sensor.daheimlader_status’) == ‘4’
      %}\n Lädt\n{% elif states(‘sensor.daheimlader_status’) == ‘5’ %}\n Start fehlgeschlagen\n{%
      elif states(‘sensor.daheimlader_status’) == ‘6’ %}\n Laden beendet\n{% elif
      states(‘sensor.daheimlader_status’) == ‘7’ %}\n Systemfehler\n{% elif states(‘sensor.daheimlader_status’)
      == ‘8’ %}\n Ladetimer\n{% elif states(‘sensor.daheimlader_status’) == ‘9’ %}\n
      \ Firmware Upgrade\n{% elif states(‘sensor.daheimlader_status’) == ‘10’ %}\n
      \ Eingeschaltet\n{% elif states(‘sensor.daheimlader_status’) == ‘31’ %}\n Blockiert\n{%
      else %}\n Unbekannt\n{% endif %}”

#template:

  • sensor:
    • unique_id: daheimlader_cable_state_text
      default_entity_id: sensor.daheimlader_cable_state
      name: DaheimLader Status Ladekabel
      state: “{% if states(‘sensor.daheimlader_status_ladekabel’) == ‘0’ %}\n Nicht
      verbunden\n{% elif states(‘sensor.daheimlader_status_ladekabel’) == ‘1’ %}\n
      \ Verbunden\n{% else %}\n Unbekannt\n{% endif %}”

#template:

  • sensor:

    • unique_id: daheimlader_fault_code_text
      default_entity_id: sensor.daheimlader_fault_code
      name: DaheimLader Fehlercode
      state: “{% if states(‘sensor.daheimlader_fehlercode’) == ‘0’ %}\n kein Fehler\n{%
      elif states(‘sensor.daheimlader_fehlercode’) == ‘11’ %}\n CP-Kontroll Wert\n{%
      elif states(‘sensor.daheimlader_fehlercode’) == ‘13’ %}\n Unterspannung\n{%
      elif states(‘sensor.daheimlader_fehlercode’) == ‘14’ %}\n Überspannung\n{%
      elif states(‘sensor.daheimlader_fehlercode’) == ‘15’ %}\n Temperatur zu hoch\n{%
      elif states(‘sensor.daheimlader_fehlercode’) == ‘16’ %}\n Zählerwert\n{% elif
      states(‘sensor.daheimlader_fehlercode’) == ‘17’ %}\n Leckage\n{% elif states(‘sensor.daheimlader_fehlercode’)
      == ‘18’ %}\n Output Short\n{% elif states(‘sensor.daheimlader_fehlercode’)
      == ‘19’ %}\n Überstrom\n{% elif states(‘sensor.daheimlader_fehlercode’) ==
      ‘21’ %}\n Fahrzeug\n{% elif states(‘sensor.daheimlader_fehlercode’) == ‘22’
      %}\n Fahrzeug nicht erkannt\n{% elif states(‘sensor.daheimlader_fehlercode’)
      == ‘23’ %}\n Relais\n{% elif states(‘sensor.daheimlader_fehlercode’) == ‘24’
      %}\n Leckage, Gerät prüfen\n{% elif states(‘sensor.daheimlader_fehlercode’)
      == ‘25’ %}\n PE-Fehler\n{% elif states(‘sensor.daheimlader_fehlercode’) ==
      ‘26’ %}\n Start / Stopp Ladefehler\n{% else %}\n Unbekannt\n{% endif %}”
  • sensor:

    • unique_id: daheimlader_charge_control_text
      default_entity_id: sensor.daheimlader_charge_control
      name: DaheimLader Modus
      state: “{% if states(‘sensor.daheimlader_modus’) == ‘0’ %}\n Plug % Charge\n{%
      elif states(‘sensor.daheimlader_modus’) == ‘1’ %}\n RFID / OCPP Start+Stopp\n{%
      elif states(‘sensor.daheimlader_modus’) == ‘2’ %}\n Ladestation gesperrt\n{%
      else %}\n Unbekannt\n{% endif %}”
  • sensor:

    • unit_of_measurement: kWh
      device_class: ENERGY
      unique_id: daheimlader_charged_energy_scaled
      default_entity_id: sensor.daheimlader_charged_energy_scaled
      name: DaheimLader geladene Energie scaled
      state: ‘{{ states(’‘sensor.daheimlader_geladene_energie’‘) | float }}’
  • sensor:

    • unit_of_measurement: kWh
      device_class: ENERGY
      unique_id: wallbox_summe_ladeleistung
      default_entity_id: sensor.wallbox_summe_ladeleistung
      name: Wallbox Summe Ladeleistung
      state: ‘{{ (states(’‘sensor.daheimlader_ladeleistung_l1’‘) | float(0) + states(’‘sensor.daheimlader_ladeleistung_l2’‘)
      | float(0) + states(’‘sensor.daheimlader_ladeleistung_l3’‘) | float(0)) / 1000
      }}’
  • sensor:

    • unique_id: wallbox_ladestrom_skaliert
      unit_of_measurement: A
      device_class: CURRENT
      default_entity_id: sensor.wallbox_ladestrom_skaliert
      name: Wallbox Ladestrom skaliert
      state: ‘{{ states(’‘sensor.input_current_limit’‘) | float / 10 }}’
  • sensor:

    • unique_id: wallbox_safe_current_skaliert
      unit_of_measurement: A
      device_class: CURRENT
      default_entity_id: sensor.wallbox_safe_current_skaliert
      name: Wallbox Safe current skaliert
      state: ‘{{ states(’‘sensor.safe_current’‘) | float / 10 }}’
  • sensor:

    • default_entity_id: sensor.daheimlader_ladedauer_scaled
      name: DaheimLader Ladedauer scaled
      state: ‘{{ states(’‘sensor.daheimlader_ladedauer’‘) | int(0) | timestamp_custom(’‘%-Hh
      %-Mmin %-Ssec’‘, false) | regex_replace(’‘(^0h| 0min| 0sec$)’‘, ‘’’‘) | regex_replace(’‘(^
      )’‘, ‘’’‘) }}’
1 Like

@Bischoff

Anbei ist der Screenshot von Deinem HA.
Würdest Du mir bitte sagen, wie man folgende Karten erstellt:

  • Sensors Wallbox (links Mitte)
  • Wallbox Ladestrom skaliert (links unten)
  • Wallbox Status usw. (rechts oben)
  • START/STOP charging (rechts Mitte)
  • Wallbox umgerechnete Werte (rechts unten)

Was bedeuten die Daten in “Wallbox umgerechnete Werte”?
Was wird da umgerechnet?

Bin leider auf Messe bis Freitag, daher auf die schnelle …Google mal, bzw
Einstellungen, Geräte&Dienste, Modbus …21 Entitäten du könntest auch alle in einem Bereich haben

Findest alles Einstellungen, Geräte&Dienste, Entitäten und suchst nach Daheimlader und noch wallbox teils Entitäten, teils Template - sind einige umgerechnete (meinerseits)
Müssten dann etwas über 21 Werte sein

Google etwas zu… am besten erstellst ein neues/leeres Dashboard, Auto (siehe Bild) oder Wallbox und dann schau per Google usw. wie man in dieses Dashboard eine Karte hinzufügt und in diese Karte kannst dann diese 21 oder alles was willst an Entitäten hinzufügen

Ich schau am WE mal ob ich so nen ganzes Dashboard exportieren könnte, jedoch start/stop und einiges erforderte noch einige addons/Apps und automationen damit das alles geht - ist alles über viele Monate erstanden, selber Anfänger und ich habe Auto und wallbox in meinem Dashboard, denke Export wird nicht gehen

Fyi, start/stop und diverses geht nur sauber wenn die Wallbox über modbusproxy angesteuert wird; sonst kommen sich die App und HA in die Quere

Lesen ok, schreiben bitte nur Modbus-Proxy dann, willst du die Wallbox über Home-Assistant steuern und nicht über die App?

1 Like