I’m struggling to work out how to trigger an automation that depends on the change of state of one entitiy but only if another entitiy is in a certain state when the first changes. Specifically I’ve got entities monitoring the state of 2 pumps in my ecodan ASHP set-up. Pump1 circulates the heating fluid from the HP, pump2 is for the UFH. When pump 1 is on but 2 is off, the system is in hot water mode. I want to trigger an automation when hot water mode ends, ie pump2 must be off when pump1 changes from on to off. As both are updated simultaneously I can’t use ‘condition’ as both go off together at the end of a heating cycle.
The attempt below uses another sensor that is set by the pump1/pump2 status but I don’t like its specific reference to a number that I happen to know, rather than being an enitity.
So my automation is:
alias: HW cycle end
description: Update HW energy estimate at and of hot water cycle
trigger:
- platform: state
entity_id:
- sensor.hp_waterpump1status
from: "1"
to: "0"
action:
- service: input_number.set_value
data:
value: >-
{{ states('input_number.hw_test') | float +
states('sensor.shellyem_244cab419108_channel_2_energy') | float }}
target:
entity_id: input_number.hw_test
- service: input_number.set_value
data:
value: >-
{{ states('input_number.hw_out') | float +
states('sensor.hp_output_by_flowdT') | float }}
target:
entity_id: input_number.hw_out
mode: single
condition:
- condition: numeric_state
entity_id: sensor.hp_flow_rate_now
value_template: ""
below: 17
which depends on the template sensor:
- name: HP flow rate now
state: "{{ states('sensor.HP_WaterPump1Status')|float * states('input_number.flow_rate_hw')|float + states('sensor.HP_WaterPump2Status')|float * (states('input_number.flow_rate_htg')|float - states('input_number.flow_rate_hw')|float) }}"
unit_of_measurement: l/min
unique_id: HP_flow_rate_now
which is all very inelegant and I doubt it will work (I haven’t tested it in anger yet as it only triggers once a day).