excess pv boiler stuff

This commit is contained in:
Constantin Pascal
2026-02-07 14:15:20 +02:00
commit 6f69cc1421
5 changed files with 178 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
- binary_sensor:
- name: "DHW: Use Boiler Aux Heater"
unique_id: "dhw_config_use_boiler_aux_heater"
state: >
{% set manual_on = states('input_boolean.dhw_aux_heater_manual_override') == 'on' %}
{% set hp_aux_off = states('sensor.heat_pump_auxiliary_heater') != 'on' %}
{% set boiler_aux_allowed = states('input_boolean.dhw_allow_aux_heater_usage') == 'on' %}
{% set boiler_temp_ok = states('sensor.boiler_temp')|float < states('input_number.dhw_aux_heater_cut_off_temperature_threshold')|float %}
{# allowed checks if the resistance is permitted to run, mostly to check we're not running both boiler and HP resistance at the same time #}
{% set allowed = hp_aux_off and boiler_aux_allowed and boiler_temp_ok %}
{# here go various other conditions that influence the decision to run the boiler auxiliary heater #}
{# PV Excess to boiler - now using shadow thermostat #}
{% set pv_excess = states('input_boolean.dhw_use_excess_pv_for_aux_heater') == 'on' and
state_attr('climate.dhw_pv_excess_heating', 'hvac_action') == 'heating' %}
{% set thermostat_activity_boost = state_attr('climate.boiler_temperature','preset_mode') == 'activity' and
state_attr('climate.boiler_temperature','hvac_action') == 'heating'%}
{% set thermostat_normal_boost = states('input_boolean.dhw_allow_aux_heater_in_all_modes') == 'on' and
state_attr('climate.boiler_temperature','hvac_action') == 'heating'%}
{{ manual_on or
(allowed and (
pv_excess or
thermostat_activity_boost or
thermostat_normal_boost
)) }}
- name: "DHW: PV Power Enough for Aux Heater "
unique_id: "dhw_pv_power_enough_for_aux_heater"
state: >
{% set phase_buffer = states('input_number.dhw_pv_excess_usage_buffer')|float / 3 %}
{% set phase_heater_power= states('input_number.dhw_aux_heater_power')|float /3 %}
{% set turn_on_threshold = -1*(phase_buffer+phase_heater_power) %}
{% if is_state('switch.boiler_heater_relay_switch_0', 'on') %}
{{ states('sensor.deye_12_external_ct1_power')|float <= 0
and states('sensor.deye_12_external_ct2_power')|float <= 0
and states('sensor.deye_12_external_ct3_power')|float <= 0 }}
{% else %}
{{ states('sensor.deye_12_external_ct1_power')|float < turn_on_threshold
and states('sensor.deye_12_external_ct2_power')|float < turn_on_threshold
and states('sensor.deye_12_external_ct3_power')|float < turn_on_threshold }}
{% endif %}
device_class: power