Skip to content

Instantly share code, notes, and snippets.

@leinich
Last active July 6, 2024 17:57
Show Gist options
  • Save leinich/38b15ad7b60c699b85395533ed208f56 to your computer and use it in GitHub Desktop.
Save leinich/38b15ad7b60c699b85395533ed208f56 to your computer and use it in GitHub Desktop.
e3dc Configuration Modbus for Homeassistant via YAML
modbus:
name: e3dc
type: tcp
host: 192.168.1.68
port: 502
sensor:
- platform: template
sensors:
e3dc_netzeinspeisung:
friendly_name: e3dc Netzeinspeisung
unique_id: e3dc_netzeinspeisung
unit_of_measurement: 'W'
value_template: >
{% if states("sensor.e3dc_net_power") | int < 0 -%}
{{ states("sensor.e3dc_net_power") | int}}
{%- else -%}
0
{%- endif %}
e3dc_netzbezug:
friendly_name: e3dc Netzbezug
unique_id: e3dc_netzbezug
unit_of_measurement: 'W'
value_template: >
{% if states("sensor.e3dc_net_power") | int > 0 -%}
{{ states("sensor.e3dc_net_power") | int}}
{%- else -%}
0
{%- endif %}
e3dc_emergency_power:
unique_id: e3dc_emergency_power
value_template: >
{% set eep = states('sensor.e3dc_emergency_power_modb') %}
{% if eep == '0' %}
nicht unterstützt
{% elif eep == '1' %}
aktiv
{% elif eep == '2' %}
inaktiv
{% elif eep == '3' %}
nicht verfügbar
{% elif eep == '4' %}
falsche Position 1K04
{% else %}
unbekannt
{% endif %}
- platform: modbus
scan_interval: 60
registers:
- name: E3DC EMS State
register: 40084
data_type: uint
hub: e3dc
- name: E3DC S10 ModBus ID
register: 40000
data_type: uint
hub: e3dc
- name: E3DC PV1 Power
unit_of_measurement: 'W'
register: 40067
count: 2
reverse_order: true
hub: e3dc
#data_type: custom
#structure: ">l"
- name: E3DC PV2 Power
unit_of_measurement: 'W'
register: 40075
count: 2
reverse_order: true
scale: -1
hub: e3dc
#data_type: custom
#structure: ">l"
- name: E3DC House Power
unit_of_measurement: 'W'
register: 40071
count: 2
reverse_order: true
hub: e3dc
#data_type: custom
#structure: ">l"
- name: E3DC Net Power
unit_of_measurement: 'W'
register: 40073
count: 2
reverse_order: true
hub: e3dc
#data_type: custom
#structure: ">l"
- name: E3DC Battery Power
unit_of_measurement: 'W'
register: 40069
count: 2
reverse_order: true
hub: e3dc
#data_type: custom
#structure: ">l"
- name: E3DC Battery Percent
unit_of_measurement: '%'
register: 40082
data_type: uint
hub: e3dc
- name: E3DC Selfpower
unit_of_measurement: '%'
register: 40081
data_type: custom
structure: "xB"
hub: e3dc
- name: E3DC Autarki
unit_of_measurement: '%'
register: 40081
data_type: custom
structure: "Bx"
hub: e3dc
- name: E3DC Emergency Power MODB
register: 40083
data_type: uint
hub: e3dc
@Jo-Highness
Copy link

Hi, Zeile 21 müsste Netzbezug heißen und nicht einspeisung, würd ich sagen.

@leinich
Copy link
Author

leinich commented Oct 10, 2022

@Jo-Highness
Danke für den Hinweis. Ist korrigiert.

@Snowby117
Copy link

Hey, Funktioniert dieser Code noch immer mit dem Energiedashboard?

@venyosdh
Copy link

venyosdh commented Apr 18, 2023

Bei mir wird für "e3dc Netzbezug" und "e3dc Netzeinspeisung" jeweils "Nicht verfügbar" angezeigt und für "e3dc_emergency_power" der Wert "unbekannt".
Ich habe mir die Registernummern mal näher angeschaut und in dieser txt sind alle Nummern um 1 nach vorne verschoben; ich hatte schonmal mit dem E3DC Modbus gearbeitet und da war es bei mir stattdessen um 2 nach vorne verschoben, aber auch das funktioniert nicht. Inzwischen habe ich 40082 bis 40086 durch mit Neuladen der YAML-Konfiguration, es hat aber leider nichts funktioniert. Modbus ist bei E3DC aktiviert und wenn ich "Modbus Poll" benutze, um mal probehalber auf die IP zu lauschen über Port 502 bekomme ich auch Werte angezeigt (ich weiß da nur leider nicht, wie ich mir ein bestimmtes Register anzeigen lassen kann).
Edit: ich nutze jetzt https://github.com/vchrisb/e3dc-rest , da bekomme ich zumindest Werte, aber die Anzeige im Energy Dashboard ist da nicht richtig (anderes Problem): https://community.home-assistant.io/t/energy-dashboard-sensor-not-showing-up/438537/9?u=venyo

@Jakob24h
Copy link

Bei mir das gleiche Problem. Mit "Modbus Poll" funktioniert das ganze (unter Setup>Read/WriteDefinition oder alternativ "F8" lassen sich auch bestimmte Register anzeigen lassen). In HomeAssistant werden die ganzen Werte leider auch nur als "unknown" angegeben. Hat jemand eine Lösung für das Problem?

@clfberlin
Copy link

Ich hatte Home Assistant vor einigen Monaten am Start. Nutze normalerweise iobroker, Habe jetzt nochmal die HA-Installation ausgepackt. Zunächst fiel mir auf (wie auch @venyosdh), dass die Registernummern im Gegensatz zur Dokumentation (S10) und meiner iobroker-Installation um eins verschoben sind. Nach einer Anpassung bekam ich dann Werte. Habe allerdings wieder runtergefahren, da ich die Hausautomation meiner iobroker-Installation brauchte. Nach dem Hochfahren am nächsten Tag (und einem Update) bekomme ich keinerlei Werte mehr.

@ersteinmal
Copy link

Hallo Ihr Guten.
Dank eines Krankenaufenthaltes hatte ich die ELV Homeassistandsserie gelesen, da ich es viele Male Versucht habe IO Broker auf meinem MS Rechner zum Laufen geschweige denn mit E2DC zu verbinden. Daher dachte ich nun an Home Assistant und gelang hierher.

Daher meine Frage an All: habt Ihr nun aufgegeben?

und an clfberlin: Ich würde "alles" tun wenn ich endlich meine Verbraucher nach Sonnenstand ansteuern könnte....... :(
Versucht hatte ich es auch auf dem MS Rechner mit einer virtuellen Maschine, und ich hätte noch einen Zotac, auf dem ich Linux installieren könnte, und einen Synologie.
Und ich würde es wohl auch gerne mit Himbeeren versuchen, aber die Schritte zur E3DC kommunikation über IOBroker sind so lang, daß ich dann noch nach Stunden irgendwo liegen bleibe, und für dessen Forum bin ich scheinbar zu Anhnungslos.

Kennst Du einen Gangbaren Weg?
Vielen Dank im Voraus.

Carsten

@clfberlin
Copy link

Hallo Carsten. Ja, inzwischen habe ich mich etwas mehr mit Home Assistant angefreundet und die E3DC-Komponenten sehe ich auch im System. Man muss dazu sagen, dass bei Home Assistant die ModBus Registernummern jeweils eins kleiner sind als in der Dokumentation (und bei iobroker). Beispiel: In der Dokumentation steht "40068 - Photovoltaik-Leistung in Watt". In Home Assistant ist aber (bei mir) die richtige Registernummer die 40067. Warum das so ist, weiß ich nicht - ich habe es nur gelesen, übernommen und freue mich, dass es klappt.

@ersteinmal - was Deine Plattform angeht: Ich nutze eine Synology. iobroker lief im Docker. Über Portainer eingerichtet, weil ich den Zigbee USB-Stick als Device an iobroker übergeben habe. Home Assistant läuft bei mir auch auf der Synology, aber als Virtual Machine. Denn es gibt bei Home Assistant verschiedene Versionen. Die Docker-Version ist eingeschränkt. Man kann keine add ons installieren und schlecht/nicht konfigurieren. Daher als Komplettversion in einer VM. Auch hier ist der USB-Stick an die VM übergeben.

@clfberlin
Copy link

PS: @ersteinmal
In iobroker musst Du den ModBus Adapter nehmen. Folge dieser Anleitung: André ist auch im Forum megaaktiv und ein wichtiger Entwickler.
https://smarthome.buanet.de/2018/02/integration-eines-s10-hauskraftwerks-von-e3dc/

@ersteinmal
Copy link

Hallo
@clfberlin
Für den Home Assistant habe ich zwar immer noch kein Ergebnis, da scheinbar einen letzten kleinen Fehler in der modbus.ymal hat -
Gedenfalls habe ich das Programm unter Virtual Box zum laufen gebracht. Jetzt hoffe ich noch auf den letzten Kick, Danach versuche ich dann Deinen Weg.
Step by Step Danke Carsten

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment