Wie Modbus-Geräte (lambda Wärmepumpe) hinzufügen

Hallo,
ich habe eine Lambda-Wärmepumpe bekommen und will sie in HA einbinden.
Ich habe die configuration-Datei von hier an meine configuration.yaml angehängt und die IP meiner Wärmepumpe eingetragen.
Trotzdem erscheinen alle Entitäten unter States in den Entwicklerwerkzeugen als “unavailable”.

Ich weiß nicht was ich falsch mache, gehe aber von einem sehr einfachen Fehler aus.

Kann jemand helfen oder beim schrittweisen Troubleshooting helfen?

Ich habe das gleiche Problem.

Hallo,
hab Ihr es in der Zwischenzeit geschafft?
Ich habe es mit dem oben genannten Link eingebunden, allerdings nicht in einem eigenen File, sondern direkt im configuration.yaml hinzugefügt.
Danach war alles vorhanden und auch gefüllt.

lg

Bei mir klappt es, nachdem ich den Zusatz slave: 1 bei jedem Sensor hinzugefügt habe.

Allerdings bekomme ich teilweise unlogische Werte. Beispielsweise erhalte ich als Energieverbrauch hohe Werte.
grafik
Was mache falsch?

Servus,
ich komme gar nicht soweit das Entitäten ausgelesen werden. Es klappt der Header schon nicht. Bekomme auf diese Zeiten im yaml code

folgende Fehlermeldungen.

Die Hardware habe ich m.M. nach richtig verdrahtet (RS485/TTL Umsetzer eingebaut) Das RS485 Signal habe ich vom zweiten Anschluß des Lambda Displayrechners geholt.

Ich möchte Daten nur auslesen und nicht in die Lambda Steuerung eingreifen.

Wär echt froh, wenn ich Hilfe bekomme.
Danke

Viele Grüße
Heiner

Hallo,
sieht nach Formatierungsfehlern aus. Bei YAML muss der Abstand der Zeichen genau passen, bin mir nicht ischer, ob ich den FEhler nicht auch hatte. Habe das umgangen indem ich den Inhalt des YAMl Files für die Lambda Wärmepumpe in das configuration.yaml angehängt habe.

Der Teil im Bereich modbus beschreibt eigentlich die Anbindung über tcp, also LAN Kabel. An dieser Stelle müssen eventuell andere Einstellungen rein.

lg

Moin Heiner,
bist du mittlerweile weiter gekommen? Ich kämpfe mich ebenfalls grade mit HA durch. Es stimmt, die Formatierung ist total wichtig. Zum Einrücken immer zwei Leerzeichen. Kannst du dir aber auch in HA Editor einstellen. Warum machst du das über einen Umsetzer. Die Steuerung ist doch über das Netzwerk eingebunden. Da reicht ein LAN Anschluss.
Das Problem mit den unlogischen Werten habe ich auch noch. Habe aber leider keine Lösung dazu. Hast du das Problem schon gelöst? Denn eine Netzspannung von 42 Millionen Volt (aus dem Wechselrichter ausgelesen) halte ich für ein kleines bisschen unsinnig :rofl:
Wenn du einen Tipp hast, wäre echt klasse.
Gruß Lothar

Habt Ihr hier mal reingeschaut?

Gruß
Bernt

Servus Lothar,
nein, ich hatte aktuel überhaupt keine Zeit an der Sache weiter zu forschen. Eine Verbindung Lambdasteuerung via LAN zum HA ist ungeeignet,weil diese immer in Ruhezustand geht. Da ist die Schnittstelle Modbus schon besser.

Servus Dbernt
das von Dir gezeigte Beisbiel hilft mir leider nicht. In dem Augenblick wenn ich die Zeile:
modbus:
** - name: “EU13L”**
einbaue, bekomme ich schon Fehlermeldungen.
Ich bräuchte ein Beispiel wie das Programm vor der Programmzeile modbus: aufgebaut ist. Denn da muss mein Fehler sein!

Gruß
Heiner

Hallo @Dbernt
Die yaml von Ralf Winter habe ich schon in Nutzung, aber dennoch Danke für deinen Hinweis. Um Fehlerquellen auszuschließen und weil ich auch nicht alles davon benötige, habe ich vorerst nur 3 Variablen davon in Nutzung.

Mein Problem ist, dass ich beim Auslesen von Werten aus dem Wechselrichter teilweise völlig unrealistische Werte erhalte. Eine Netzspannung von 42 Mega Volt ist ein kleinen bisschen zu viel. :woozy_face: Auch habe ich noch das Problem, dass der Wechselrichter nachts in den Standby geht und dann keine Werte mehr liefert. Dies muss ich noch in HA irgendwie abfangen. Also keinen Wert bedeutet in der Anzeige einen hohen negativen Wert. z.B. - 2.147.484.648 W Solarertrag zu haben. Ich denke, ich werde das über eine Automation machen. Wenn Wert “x” < “0” dann “y” = “0” bzw. wenn “x” >= “0” dann “x” = “y” und “y” Wert zur WP schicken. Oder hast du evtl. eine einfachere Lösung?
Gruß Lothar

@Heiner_7
Moin Heiner!
In Zeile 40 deiner Yaml steht richtigerweise, dass die nachfolgenden Parameter ab Zeile 42 in der Config(!).yaml ergänzt werden müssen. Du hast sie aber in der esp.yaml stehen. Dies ist m.E. Ursache für die Fehlermeldung, die du erhältst.

Hier ist ein modbus Beispiel von mir, das funktioniert. Es ist ein Smartmeter aber egal, es geht zunächst um die Syntax… Ich habs in einer modbus.yaml, da ich mehrere Geräte und deren Sensoren hierüber ergänzte.

# SDM72D-M WP
  sensors:
    - name: "Zählerstand SM WP"
      device_class: energy
      unit_of_measurement: "kWh"
      slave: 2
      address: 72
      input_type: input
      state_class: total_increasing    
      precision: 2
      data_type: float32
      unique_id: "sdm_energie_wp_import"
      scan_interval: 5
    - name: "SM Aktuelle Gesamtleistung Wärmepumpe "
      unit_of_measurement: "W"
      slave: 2
      address: 52
      input_type: input
      precision: 2
      data_type: float32
      unique_id: "sdm_aktuelle_leistung_wp"
      scan_interval: 5
    - name: "SM Aktuelle Leistung Wärmepumpe (L1)"
      unit_of_measurement: "W"
      slave: 2
      address: 12
      input_type: input
      precision: 2
      data_type: float32
      unique_id: "sdm_aktuelle_leistung_wp_l1"
      scan_interval: 5
    - name: "SM Aktuelle Leistung Wärmepumpe (L2)"
      unit_of_measurement: "W"
      slave: 2
      address: 14
      input_type: input
      precision: 2
      data_type: float32
      unique_id: "sdm_aktuelle_leistung_wp_l2"
      scan_interval: 10
    - name: "SM Aktuelle Leistung Wärmepumpe (L3)"
      unit_of_measurement: "W"
      slave: 2
      address: 16
      input_type: input
      precision: 2
      data_type: float32
      unique_id: "sdm_aktuelle_leistung_wp_l3"
      scan_interval: 5

Wichtig ist:

  1. entweder in eine modbus.yaml mit Ergänzung „modbus: !include modbus.yaml“ in der config.yaml oder den modbus-Teil in die config.yaml unmittelbar ergänzen.
  2. alle Namen mit Anführungszeichen versehen, du hast dies nur teilweise gemacht (siehe Zeile 43 versus Zeile 49).
  3. Bei jedem einzelnen Sensor, den du ergänzt, muss die „slave“ Nummer ergänzt werden.
  4. Der Parameter „scale“ wurde gestrichen. Mit ihm funktioniert es m.W. seit ca. einem 3/4 Jahr nicht mehr. Hintergründe per google nachlesbar…
  5. Die Modbus-Adresse (bei dir „0000“ in Zeile 50) ist je nach Gerät und Modbus-Parametern dafür unterschiedlich. Sicherlich hast du eine Liste, aus der du die richtigen Parameter ziehst.

Ich hoffe, du kommst damit weiter!
Gruß
Bernt

Nachtrag: Sicherlich greift nur immer ein Gerät/Programm o.ä. auf die modbus-Daten zu. Sollten dies zwei oder mehr Instanzen sein, muss du einen modbus-proxy einrichten…

@lothar
Moin Lothar!
Ich hab gelesen, dass du damit Probleme hast und den Verweis ganz oben (Post 1) zu github und damit Ralf Wagners Arbeit übersehen… sonst hätte ich meinen Beitrag gelassen. Sorry!

Ich habe keine Ahnung, woher diese absurden Zahlen stammen oder wie sie generiert werden. Bei meinem WR entstehen solche Werte auch, aber immer nur, wenn er selbst Fehler hatte. Dann überträgt er die Tages- und Gesamtwerte nochmals….
Die Infos von dir lassen darauf schließen, dass du auch noch einen WR per modbus angebunden hast. Kannst du deine yaml mal posten und erklären, woher die Daten genau stammen, wie sie kommuniziert werden usw…

Gruß
Bernt

@Dbernt
Moin Bernt,

Schreibe mal hier meine komplette yaml Struktur hin.
In der “cinfiguration.yaml” habe ich folgenden Eintrag:
modbus: !include modbus.yaml
Damit beziehe ich eine meine “modbus.yaml” Datei mit ein. Eigentlich wollte ich Wechselrichter (WR) und Wärmepumpe (WP) getrennt in eigene yaml - Dateien schreiben. Gerne würde ich eine modbus_xxx und eine modbus_yyy in der “configuration.yaml” inkludieren, hat aber leider nicht funktioniert. Mache das jetzt in einer modbus.yaml. Vielleicht weiß ja einer wie das geht und postet das hier einmal.

Meine modbus.yaml sieht wie folgt aus:

- name: "Wechselrichter"
  type: tcp
  host: 192.168.178.26
  port: 502
  sensors:
    - name: pv_leistung_gesamt
      unique_id: pv_leistung_gesamt
      slave: 2
      address: 30775
      input_type: input
      unit_of_measurement: W
      state_class: measurement
      device_class: power         # https://www.home-assistant.io/integrations/sensor#device-class
      scale: 1                    # Skalieren wie Vorgabe Gerätehersteller
      data_type: int32
      scan_interval: 10           # Der Scaninterwall wird in sekunden angegeben
    - name: pv_netz_eingespeiste_leistung       # Leistung String B > Wert OK
      unique_id: pv_netz_eingespeiste_leistung
      slave: 2
      address: 31249
      input_type: input
      unit_of_measurement: W
      state_class: measurement
      device_class: power
      scale: 1
      data_type: int32
      scan_interval: 10
    - name: pv_str_a_strom        # Strom String A > Wert OK
      unique_id: pv_str_a_strom
      slave: 2
      address: 30769
      input_type: input
      unit_of_measurement: A
      state_class: measurement
      device_class: power
      scale: 0.001
      data_type: int32
      scan_interval: 10
    - name: pv_str_a_spannung       # Spannung String A
      unique_id: pv_str_a_spannung
      slave: 2
      address: 30771
      input_type: input
      unit_of_measurement: V
      state_class: measurement
      device_class: power
      scale: 0.01
      data_type: int32
      scan_interval: 10
    - name: pv_str_b_strom        # Strom String B > Wert OK
      unique_id: pv_str_b_strom
      slave: 2
      address: 30957
      input_type: input
      unit_of_measurement: A
      state_class: measurement
      device_class: power
      scale: 0.001
      data_type: int32
      scan_interval: 10
    - name: pv_str_b_spannung       # Spannung String B > Wert OK
      unique_id: pv_str_b_spannung
      slave: 2
      address: 30959
      input_type: input
      unit_of_measurement: V
      state_class: measurement
      device_class: power
      scale: 0.01
      data_type: int32
      scan_interval: 10
    - name: pv_str_a_leistung       # Leisung String A > Wert OK
      unique_id: pv_str_a_leistung
      slave: 2
      address: 30773
      input_type: input
      unit_of_measurement: W
      state_class: measurement
      device_class: power
      scale: 1
      data_type: int32
      scan_interval: 10
    - name: pv_str_b_leistung       # Leistung String B > Wert OK
      unique_id: pv_str_b_leistung
      slave: 2
      address: 30961
      input_type: input
      unit_of_measurement: W
      state_class: measurement
      device_class: power
      scale: 1
      data_type: int32
      scan_interval: 10
    - name: pv_netzspannung_l1      # Netzspannung L1 > !! Wert nicht OK !!
      unique_id: pv_netzspannung_l1
      slave: 2
      address: 31529
      input_type: input
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage
      scale: 0.01
      data_type: uint32
      scan_interval: 10
    - name: pv_netzstrom_l1      # Netzstrom L1 > Wert ok wenn WR nicht im Standby
      unique_id: pv_netzstrom_l1
      slave: 2
      address: 30977
      input_type: input
      unit_of_measurement: A
      state_class: measurement
      device_class: current
      scale: 0.001
      data_type: int32
      scan_interval: 10
      
- name: "Heizung"
  type: tcp
  host: 192.168.178.33
  port: 502
  sensors:
#General Ambient
#   - name: EU15L_Ambient_Error_Number
#     unique_id: 0000
#     address: 0000
#     slave: 1
#     input_type: holding
#     state_class: total
#     scale: 1
#     precision: 0
#     data_type: int16
#   - name: EU15L_Ambient_Operating_State
#     unique_id: EU15L_Ambient_Operating_State
#     address: 0001
#     slave: 1
#     input_type: holding
#     unit_of_measurement: ""
#     state_class: total
#     scale: 1
#     precision: 0
#     data_type: uint16
  - name: EU15L_Ambient_Temperature
    unique_id: EU15L_Ambient_Temperature
    address: 0002
    slave: 1
    input_type: holding
    unit_of_measurement: "°C"          
    state_class: measurement
    device_class: temperature
    scale: 0.1
    precision: 1
    data_type: int16
#   - name: EU15L_Ambient_Temperature_1h
#     unique_id: EU15L_Ambient_Temperature_1h
#     address: 0003
#     input_type: holding
#     unit_of_measurement: "°C"
#     state_class: measurement
#     device_class: temperature
#     scale: 0.1
#     precision: 1
#     data_type: int16
#   - name: EU15L_Ambient_Temperature_calculated
#     unique_id: EU15L_Ambient_Temperature_calculated
#     address: 0004
#     input_type: holding
#     unit_of_measurement: "°C"
#     state_class: measurement
#     device_class: temperature
#     scale: 0.1
#     precision: 1
#     data_type: int16 
  - name: EU15L_EMgr_Actual_Power    # Hier soll der Überschuss des WRs geschrieben werden
    unique_id: EU15L_EMgr_Actual_Power
    address: 0102
    input_type: holding
    unit_of_measurement: "W"
    state_class: total
    scale: 1
    precision: 0
    data_type: int16
  - name: EU15L_EMgr_Actual_Power_Consumption
    unique_id: EU15L_EMgr_Actual_Power_Consumption
    address: 0103
    input_type: holding
    unit_of_measurement: "W"
    state_class: total
    scale: 1
    precision: 0
    data_type: int16


Ich habe einen WR von SMA und habe, so weit ich das sehe auch die Datenformate eingehalten und dennoch bekomme ich teilweise keine sinnhaften Werte geliefert. Es wäre schon echt klasse, wenn jemand eine Lösung kennt und diese hier einmal postet. Habe leider dazu noch nichts im Netz gefunden, was mir weiter geholfen hat.

Gruß Lothar

@lothar
Hallo Lothar,
ich verstehe dich richtig, dass du keinen SHM nutzt, sondern lediglich den WR von SMA verwendest und diesen per modbus ausliest.
Das Video von jarnsen auf yt https://www.youtube.com/watch?v=B2ZcbxABGBM
hast du dir angeschaut? Falls nicht, vielleicht hilft es.
Bezgl. der Ausreisser-Werte: hast du die state-class bei den WP-Sensoren mal von „total“ auf „power“ geändert? Beim WR nutzt du diese, bei der WP aber nicht, obwohl es sich dort auch um „W“ -Werte handelt.
Ferner nutze ich überall, wo es möglich ist, keine „interpolierten“ Daten des WR sondern „harte“ vom Stromzähler, die ich per Hichi-Lesekopf abgreife. Damit greife ich auch den PV-Überschuß ab, ist schlicht die aktuelle Einspeisung…
Vor ca. einem Jahr wurde auf Fehler durch die modbus-Parameter „scale“ und „precision“ hingewiesen. Ich hab sie folglich weggelassen, wo sie entbehrlich sind… google das mal…

Gruß
Bernt

Mein Wechselrichter geht nachts auch offline. Ich habe das über einen Helfer gelöst, der immer den letzten Wert vorhält (nachts entsprechend immer “0 W” liefert).

1 „Gefällt mir“

Hallo zusammen, ich habe hier eine HACS Lambda Integration für Home Assistent zur einfach Installation bereitgestellt:
Link Github

1 „Gefällt mir“