Tiffy86

WP Sublogik Aufheizen

Jul 15th, 2026 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 3.17 KB | Source Code | 0 0
  1. alias: "WP: Sub-Logik Aufheizen (Universell mit Landebahn)"
  2. description: >-
  3.   Fährt die WP kontrolliert an jedes Ziel. Nutzt die historische
  4.   Defrost-Ziel-Landebahn für alle regulären Heizstarts.
  5. triggers:
  6.   - seconds: /30
  7.     trigger: time_pattern
  8. conditions:
  9.   - condition: state
  10.     entity_id: input_boolean.wp_modus_aufheizen
  11.     state: "on"
  12. actions:
  13.   - variables:
  14.       current_f: "{{ states('sensor.frequenz_vd') | int(25) }}"
  15.       current_soll_f: "{{ states('input_number.sollfrequenz') | int(40) }}"
  16.       is_boost: "{{ is_state('input_boolean.wp_pv_boost', 'on') }}"
  17.       ist: "{{ states('sensor.vorlauf_stabil') | float(0) }}"
  18.       boost_temp: "{{ states('input_number.wp_pv_boost_temp') | float(45) }}"
  19.       heizkurve_temp: "{{ states('number.heizkurve') | float(35) }}"
  20.       at_max_f: "{{ states('sensor.wp_maximale_frequenz_nach_at') | int(30) }}"
  21.       is_rampe: "{{ is_state('timer.wp_start_rampe', 'active') }}"
  22.       target_f_base: "{{ states('input_number.frequenz_target_after_defrost') | int(30) }}"
  23.   - action: input_number.set_value
  24.     target:
  25.       entity_id: input_number.sollfrequenz
  26.     data:
  27.       value: >
  28.        {% set soll = boost_temp if is_boost else heizkurve_temp %}  {% set
  29.         delta = soll - ist %}  {% set effective_max_f = 60 if is_boost else
  30.         at_max_f %}
  31.  
  32.         {% if is_rampe and not is_boost %}
  33.           50
  34.         {% else %}
  35.           {% set new_f = current_f %}
  36.          
  37.           {% if ist < (soll - 0.2) %}
  38.             {% if delta > 2.5 %}
  39.               {% set new_f = current_f + 7 %}
  40.             {% elif delta > 1.2 %}
  41.               {% set new_f = current_f + 3 %}
  42.             {% elif delta > 0.4 %}
  43.               {% if is_boost %}
  44.                 {% if current_f < effective_max_f %}
  45.                   {% set new_f = current_f + 1 %}
  46.                 {% endif %}
  47.               {% else %}
  48.                 {% set landebahn = target_f_base + 5 %}
  49.                 {% if current_f > landebahn %}
  50.                   {% set new_f = current_f - 3 %}
  51.                 {% elif current_f < landebahn %}
  52.                   {% set new_f = current_f + 1 %}
  53.                 {% endif %}
  54.               {% endif %}
  55.             {% else %}
  56.               {% if is_boost %}
  57.                 {% if current_f < effective_max_f %}
  58.                   {% set new_f = current_f + 1 %}
  59.                 {% endif %}
  60.               {% else %}
  61.                 {% set punktlandung = target_f_base + 3 %}
  62.                 {% if current_f > punktlandung %}
  63.                   {% set new_f = current_f - 2 %}
  64.                 {% elif current_f < punktlandung %}
  65.                   {% set new_f = current_f + 1 %}
  66.                 {% else %}
  67.                   {% set new_f = punktlandung %}
  68.                 {% endif %}
  69.               {% endif %}
  70.             {% endif %}
  71.           {% else %}
  72.             {% set brake_step = 3 %}
  73.             {% set new_f = current_soll_f - brake_step %}
  74.           {% endif %}
  75.  
  76.           {% if new_f > effective_max_f %}
  77.             {{ effective_max_f }}
  78.           {% elif new_f < 20 %}
  79.             20
  80.           {% else %}
  81.             {{ new_f }}
  82.           {% endif %}
  83.         {% endif %}
  84. mode: restart
  85.  
Advertisement
Add Comment
Please, Sign In to add comment