Wie einen Wert per Modbus bei Lambda-Wärmepumpe setzen

Hallo,

ich habe meine Lambda-Wärmepumpe eingebunden wir hier beschrieben: GitHub - RalfWinter/lambda-heatpump-modbus-tcp-HA: Home Assistant configuration.yaml additions to integrate Lambda heatpump

Das Auslesen der Daten funktioniert, aber ich bekomme es einfach nicht hin, Werte zu setzen. Ich möchte z.B. meinen Heizkreis über homeassistant ausschalten. Dafür müsste ich, wenn ich richtig verstanden habe, das Register 5006 auf 0 setzen.

Könnte mir bitte jemand damit oder mit einem anderen Beispiel behilflich sein?

danke!

Das geht über eine Action in einer Automation oder Script oder in den Entwicklungstools

actions:
  - action: modbus.write_register
    data:
      hub: EU13L
      address: 5006
      value: 0
mode: single

Hallo,

danke für die schnelle Antwort.

Ich habe es probiert und ein grüner Haken erschein in den Entwicklertools bei Actions. Allerdings Schaltet der Heizkreis nicht ab.

Auch die Temperatur des Boilers verändert sich nicht mit folgenden Code:

action: modbus.write_register
data:
  address: 2050
  value: 30
  hub: EU13L

Was mache ich falsch?

Kann es etwas mit der Konfiguration zu tun haben oder muss ich sonst etwas in den Einstellungen ändern?

action: modbus.write_register
data:
  hub: EU13L
  address: 2050
  value:
    - >-
      {{ ((( 30.0 | float) * 10) | round(0)
      | int) | bitwise_and(65535) }}
2 „Gefällt mir“

danke, so klappt es!

Edit:

Register 2050 (Boiler-Temperatur) lässt sich schreiben.

5006 (Heizkreis-Status) aber leider noch immer nicht. Meine Config dafür ist wie folgt:

        - name: EU13L_Hc1_Operating_mode
          address: 5006
          input_type: holding
          state_class: total
          scale: 1
          precision: 0
          data_type: int16

Der Status wird in den Entwicklertools mit -1 angezeigt.

Die Heizung ist in Betrieb, der Status müsste eigentlich 3 sein. Er lässt sich über Actions nicht ändern. Habt Ihr weitere Vorschläge?

Edit2:
Könnte nochmal jemand weiterhelfen? Egal ob ich bei Value “0” reinschreibe oder

{{ ((( 30.0 | float) * 10) | round

nichts funktioniert

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Naja, wenn bei dir -1 anstatt 3 in dem Register steht ist es wohl das falsche Register. Was sagt denn die Doku von Lambda? Ich selbst habe keine, daher kann ich dazu leider auch nichts sagen

Was willst du denn wohin schreiben, Warmwasser Soll Temp kannst du ja mit dem was ich dir oben reingesetzt habe schreiben.

Das Register 5006 wäre mir neu das sich das schreiben lässt (ja ich weiß in der Doku steht RW).

EDIT: Mittlereile gibs einige Integrationen, die dir wohl eher entgegen kommen, zBsp diese: GitHub - GuidoJeuken-6512/lambda_heat_pumps: Lambda Wärmepumpe Integration für Home Assistant / Lambda Heat Pump Integration for Home Assistant

Hallo alle,

laut LambdaDokumentation stimmt das Register.

@Yanee der Lambda-Support konnte bestätigen, dass das Register beschreibbar ist

Ein- und Ausschalten von Heizkreisen geht über das Register 06 des jeweiligen Heizkreises.

Magst du dies bei dir ausprobieren? Mein Ziel ist es häufiges Takten in der Übergangszeit zu verhindern. Das habe ich über dsa Zeitprogramm erfolgreich umgesetzt (direkt in der Lambda Software). Laut Support ist nicht geplant, dass man das Zeitprogramm per Modbus änfern kann. Daher will ich den Heizkreis über HomeAssistant in Abhängigkeit von der Temperatur ein- und ausschalten (bzw. auf Frostschutz setzen), um so das Zeitprogramm nachzustellen.

Ich dachte mir schon das es dir um die Takte gehen könnte. Ob es so ratsam ist den Heizkreis einfach auszuschalten, ich denke eher nicht.

Die Kompressoren die Lambda und Zewotherm verbauen sind schon in Punkto Haltbarkeit Top.

Alles unter 10 Takte am Tag ist schon optimal Betrieb, da mag der eine jaulen der andere staunen, diese Geilheit die Takte so weit runter zu drücken, das die WP den ganzen Tag vor sich hinleiert muss irgendwie zum Wettbewerb geworden sein. Wenn das nächste mal den Support nach irgendwas fragst, dann frag doch mal was als erstes nach 20 Jahren kaputt gehen würde, der Kompressor wirds nicht sein. Vieles beeinflusst das Takten, Übergangszeit, Puffer ja / Nein wenn ja wie groß und in Reihe ja / nein. Heizverhalten, Lüften, Radiatoren oder FB. Wenn Radiatoren dann smarte Thermostate die spätestens dann komplett öffnen wenn die WP beginnt zu heizen.

Takte runter bekommst du mit:

Leistung der WP nach unten anpassen

Hysterese vergrößern

HA zählt die Register ab 0, viele andere jedoch ab 1. Daher könnte es sein, dass es sich bei dem Register 5006 in HA um 5005 handelt. Lese dieses (5005) Mal aus, ob dort der richtige Wert drin steht

Habe ich gerade ausprobiert @metallmanu , die anderen Register ergeben plausible Werte.

@Yanee

Hysterese und Leistungsbegrenzung habe ich schon probiert. Es geht mir auch nicht darum Takten generell zu verhindern. Wieso ist es deiner MEinung nach nicht ratsam den Heizkreis auszuschalten?

Hattest du Gelegenheit auszuprobieren, ob du Register 06 deines Heizkreises setzen kannst?

das Register gibt -1 zurück, über andere Integrationen gar nichts, muss erstmal schauen was da falsch läuft

Edit: Nun gehts:

sensor.eu13l_hc1_operating_mode
EU13L_Hc1_Operating_mode
3
state_class: total friendly_name: EU13L_Hc1_Operating_mode

konnte auch den Status setzen und an die WP senden

danke fürs Ausprobieren!

wie hast du es hinbekommen?

bei mir sieht es so aus:

grafik

config:

        - name: EU13L_Hc1_Operating_mode
          address: 5006
          input_type: holding
          state_class: total
          scale: 1
          precision: 0
          data_type: int16

baue es dir gerne zusammen, wir brauchen einen shadow State, da das Register 5006 nach einer Zeit wieder auf -1 zurück springt. Dabei bleibt der letzte gesetzte Modus aber in der WP erhalten.

Ich vermute die WP Steuerung nutzt das Register selbst aktiv, dadurch wird nach einer Zeit wieder ein Unknown zurück geworfen.

Ich kann nur noch mal ausdrücklich darauf hinweisen, das solche Modus Änderungen im laufenden Betrieb (quasi Heizbetrieb unterbrechen) sicher nicht geplant sind und ob das so gut ist für die WP und Steuerung, ich weiß es nicht.

service: modbus.write_register
data:
hub: EU13L
unit: 1
address: 5006
value: “{{ (2 | int) | bitwise_and(65535) }}”

Status kannst du damit setzen, die “2” mit dem Mode ersetzen den du möchtest, dann siehst du es auch in der Lambda und auch in HA als Status unter den Zuständen, nach einer Weile wird der in HA wieder -1 gelesen, weil halt nix zurück kommt von der WP, ist dann eher ein Write Only

So in etwa dann?

Hab es mal noch etwas aufgehübscht in einer Mushroom Karte und ein paar selbst Erklärende Icons dazu gehangen:

Hi,

sieht gut aus!

Danke dass du dir die Arbeit gemacht hast, dem auf den Grund zu gehen.

Bei mir läuft es leider noch immer nicht.

Ich habe exakt deinen code benutzt, aber weder in HA, noch in der Lambda Steuerung verändert sich der Status. Dieser bleibt immer unverändert auf Automatik-Heizen

Am besten wir Rollen das alles nochmal von vorne auf.

Dein Ziel ist weniger Taktungen, richtig?

Dann lass uns doch mal deine Ausgangslage anschauen.

Du hast eine EU13L?

FB oder Radiatoren, Heizfläche, Puffer ja/nein wie groß, WW wie groß?

Heizkurve was ist da eingestellt?

Leistungsbegrenzungen was ist da eingestellt?

ja, aber Ziel ist auch, dass das Setzen der Werte über Modbus funktioniert. Bei der Boilertemp funktioniert ja auhc :`(

gerne, vielen ank. Ja eu13L

Heizkörper, kein Puffer.

Boiler: Juratherm JPSM 500 Pufferspeicher, 480 Liter,

Laut HZB ist der nur bis zur Hälfte mit Wasser gefüllt.

Als Leistungsgrenzen hatte ich sowohl für WW als auch für Heizbbetrieb 5kW eingestellt.

Bei den jetzigen Temperaturen läuft die WP durch. Bei wärmeren Temperaturen hat die WP alle 45min bis 1h getaktet. Ich habe das Zietprogramm eingestellt, damit sie längere Zeit aus war. Das führe dazu, dass die WP dann länger lief und nur noch 4x am Tag taktete. Über HA will ich in Abhängigkeit von der AT quasi ein Zeitprogramm simulieren.

Du könntest ja mit dem Heizungsoffset arbeiten, da kannst du die Heizkurve leicht anpassen und ggf. die WP so aus dem Betrieb holen. Die Überlegung hatte ich schonmal eine Automation zu fahren, wo ich über die Wetterdaten quasi bei Tags mit viel Sonne (trotzdem kühl) ja mehr Fremdwärme durch die Sonne bekomme und dann die Heizkurve dementsprechend tagsüber durch die Automation runterfahre.

Ansonsten solltest du vielleicht die Hysterese noch etwas auseinander ziehen

Hysterese habe ich schon probiert, der Offset wäre noch eine Option. Dadurch würde die den Heizkreis dann indirekt ausschalten. Selstsam ist noch immer, dass sich das Register dafür aber nicht beschreiben lässt.

Offset kannst du nicht schreiben?