Rechnen & automatisieren von Sensoren beim Steuern einer Wärmepumpe

Hallo,

ich habe eine Wärmepumpe, die im Wärmepumpenmodus die Warmwasserzubereitung bei erreichen der Vorlauftempertur=Solltemperatur beendet und bei Nutzung eines externen Heizers die Rücklauftemperatur=Solltemperatur nutzt.
Rücklauf und Vorlauf unterscheiden sich ~2,5°C. D.h. nun in der kalten Jahreszeit mit Zuheizer wird das Wasser wärmer als im normalen WP Betrieb. Das möchte ich nicht.
Die Solltemperatur Warmwasser ist eine Entität vom Typ “Number” und steuert direkt die WP. Nun möchte ich eine Automatisierung schreiben, die bei WP Betrieb den regulären Wert dort nutzt und im Fall des Zuheizers so lange einen um 2,5°C reduzierten Wert, bis der Zuheizer wieder ausgeschaltet ist. Leider finde ich unter den Automatisierungen keine Möglichkeit, einfache Berechnungen zu starten: (Wenn Zuheizer, dann neue Solltemperatur=Solltemperatur-2,5°C; Wenn WP, dann Solltemperatur= Solltemperatur).
Ich finde hier leider keine Möglichkeit, dieses in eine Automatisierung umzusetzen - habt Ihr eine Idee?

Grüße

Das müsste über einen Helfer gehen. Wenn Zuheizer, dann Helfer.

Was mich aber eher Interessiert, wie gibst du der WP den neuen Sollwert zurück?

bau dir einen Template Sensor der in etwa das hier macht:

Beispiel für den Entwicklerwerkzeuge>Template Editor

{% set t = states('sensor.temperatur') | float %}
{{ t }}
{% if (is_state('switch.zuheizer','on')) %}
  {% set t = t - 2.5 %}
{% endif %}
{{ t }}

Also den originaltemperaturwert nehmen damit den template sensor füttern, dort abfragen ob der zuheizer an ist, und falls ja den sensorwert um 2,5 reduzieren.
Und dann in der Regelung mit dem template sensor arbeiten.

Hi,

ich habe eine WPLS.2 von Buderus und ein EMS-ESP Modul. Dadurch kann ich alle Werte der Anlage auslesen und sehr viele Werte direkt aus dem HA einstellen. So auch den max. Sollwert.
Grüße

Hallo justone,

danke für die Idee! Wo soll ich den Template Sensor platzieren? in der configuration.yml als Sensor unter state: > oder kann das auch als template in einer Automatisierung laufen?

Dann könnte ich vor Start der WW-Aufbereitung durch den externen Zuheizer den Wert auf diese Weise um 2.5°C reduzieren, die WW-Aufbereitung laufen lassen und danach automatisch wieder den Ursprungswert einstellen.

Grüße

So wie du es beschrieben hast hätte ich vermutet es ist eine ziemlich statische Sache sprich es gibt nur Zuheizer an oder aus und die benötigte Wertänderung ist immer 2,5

Dafür würde ich halt keine Automation bemühen sondern einfach mit einem Template Sensor arbeiten.

Aber das geht natürlich auch.

Die Frage wird am Ende sein ob du noch mehr Dinge im Zusammenhang mit Wärmepumpe oder Zuheizer benötigen wirst / könntest. Dann hätte ich gesagt mach es in YAML und nutze so etwas wie

homeassistant:
  !include_dir_named ordnername

wobei ordnername ein name für einen Ordner ist den du dir ausdenken kannst und den du im Ordner /config/ erstellen musst.
Dort kannst du dann x-beliebige YAML Dateien reinschmeissen die alle beim Start von HA mitgeladen werden. z.B. könntest du dir eine Datei “zuheizer_offset.yaml” machen und da drin den template sensor definieren.
Oder du machst eine “waermepumpe.yaml” und definiest da alles mögliche was mit der Wärmepumpe zu tun hat.
In jedem Fall am Ende wenn es mal komplexer wird besser als alles in der configuaration.yaml zu definieren.
Und weiterer Vorteil, in den YAMLs kannst du wunderbar Kommentarzeilen einfügen was das Teil tut und warum und was es ersetzt oder an welchen Stellen du dafür was umbiegen musstest.
Das klappt bei den Automationen meines Wissens immer noch nicht, selbst im YAML Mode werden Kommentarzeilen wieder gelöscht wenn du damit wieder in der GUI anfängst du ändern/editieren.

Hi justone,

das ist eine sehr gute Idee → dadurch kann nich meine configuration.yaml verschlanken. Aktuell hat sie >500 Zeilen und wird langsam recht zäh beim Suchen.
Dann kann ich die PV-Anlage, Gartenbewässerung, ect. und WP trennen.
Danke für den Tip :slight_smile:

Bei der aktuellen WP Thematik habe ich akutell folgende Automatisierungslösung gebaut (recht statisch):

action:
  - service: switch.turn_off
    target:
      entity_id: switch.boiler_disable_auxilliary_heater
    data: {}
   - service: switch.turn_on
    target:
      entity_id: switch.boiler_auxilliary_heater_only
    data: {}
   - service: number.set_value
    target:
      entity_id: number.boiler_dhw_eco_switch_off
    data:
      value: 49
   - service: switch.turn_on
    target:
      entity_id: switch.thermostat_dhw_charge
    data: {}
  - wait_for_trigger:
      - platform: state
        entity_id:
          - binary_sensor.boiler_dhw_charging
        from: "on"
        to: "off"
  - service: number.set_value
    target:
      entity_id: number.boiler_dhw_eco_switch_off
    data:
      value: 51
  - service: switch.turn_on
    target:
      entity_id:
        - switch.boiler_disable_auxilliary_heater
    data: {}
  - service: switch.turn_off
    target:
      entity_id:
        - switch.boiler_auxilliary_heater_only
    data: {}

Durch “number.set_value” kann ich die Schalttemperatur direkt überschreiben. Das setzt leider voraus, dass die Ausgangsgröße immer gleich ist.

Eigentlich war mein Ziel diese über zwei zusätzlich generierte Variablen zu steuern:

      - name: "reduzierte_Temperatur_WW_ECO_bei_Zuheizung"
        unique_id: "reduzierte_Temperatur_WW_ECO_bei_Zuheizung"
        state: >-
            {{ (float(states('number.boiler_dhw_eco_switch_off')))-2.0 | round(2) }}
            
      - name: "Ausgangstemperatur_WW_ECO_nach_Zuheizung"
        unique_id: "Ausgangstemperatur_WW_ECO_nach_Zuheizung"
        state: >-
            {{ (float(states('sensor.reduzierte_Temperatur_WW_ECO_bei_Zuheizung')))+4.0 | round(2) }}

leider darf ich anstelle der Zahlenwerte für die Temperaturen in der Automatisierung keine sensoren übergeben. Volgendes wird nicht akzeptiert:

 - service: number.set_value
    target:
      entity_id: number.boiler_dhw_eco_switch_off
    data:
      value: sensor.reduzierte_Temperatur_WW_ECO_bei_Zuheizung

Er will als “value” zwingend einen Zahlenwert und keine Variable.

Kennst Du eine Möglichkeit, dies Umzusetzen?

Grüße

Also in scripten geht das wie folgt:

- service: xxxx
  data_template: '{{ variable }}'

habs in ner Automation aber noch nie probiert.

EDIT:
im help zu automations steht.

data: '{{ variable }}'

damit würde ich an deiner Stelle mal anfangen zu probieren