1 of my automation condition is this line {{ states('sensor.vindriktning_sht3x_temperature') | int(0) >= 25 }}
, and it currently works, i.e. once the temperature is 25 or above
I changed it to {{ states('sensor.vindriktning_sht3x_temperature') | float(0) >= 25.5 }}
, but it no longer works, i.e. action does not run even when temperature is 25.8
Any idea what might be the issue?
Results are:
29.2
29.2
True
These results indicate my automation should work… right? Strange
alias: When to set aircon fan speed to high
description: >-
make aircon use high fan speed if between 2 temperatures
trigger:
- platform: state
entity_id:
- sensor.vindriktning_sht3x_temperature
condition:
- condition: and
conditions:
- condition: template
alias: temp >= 25.5
value_template: "{{ states('sensor.vindriktning_sht3x_temperature') | float(0) >= 25.5 }}"
- condition: template
alias: temp < 26
value_template: "{{ states('sensor.vindriktning_sht3x_temperature') | int(0) < 26 }}"
- condition: state
entity_id: climate.mitubishi_ac
state: cool
- condition: not
conditions:
- condition: state
entity_id: climate.mitubishi_ac
attribute: fan_mode
state: high
action:
- service: climate.set_fan_mode
data:
fan_mode: high
target:
entity_id: climate.mitubishi_ac
There are 3 of these automations currently, this is the one that needs to use float
- If AC is turned on (cool) and measured temp is >=26C: max fan speed
- If AC is turned on (cool) and measured temp is >=25.5 + <26C: high fan speed
- If AC is turned on (cool) and measured temp is <25: auto fan speed (after a while, temp will rise to 25.6, triggering max fan speed again)
This automation was created because there is something wrong with the AC’s temp sensor and I can’t seem find a solution
thanks! let me give it a shot
Thanks, there were 1 issue,
-
temp < 25.5: 'auto' } %}
should be temp < 25
alias: AC example
description: When AC is `cool`, set `fan_mode` depending on current measured temperature
trigger:
- platform: state
entity_id:
- sensor.vindriktning_sht3x_temperature
to: null
- platform: state
entity_id:
- climate.mitubishi_ac
to: cool
condition:
- condition: template
value_template: "{{ is_state('climate.mitubishi_ac', 'cool') }}"
action:
- variables:
wanted_fan: |
{% set temp = states.sensor.vindriktning_sht3x_temperature | float(0) %}
{% set fan_modes = {
temp >= 25.6: 'max',
25.5 <= temp < 25.6: 'medium',
temp < 25: 'auto'
} %}
{{ fan_modes.get(true) }}
- condition: template
value_template: "{{ not is_state_attr('climate.mitubishi_ac', 'fan_mode', wanted_fan) }}"
- service: climate.set_fan_mode
data:
fan_mode: "{{ wanted_fan }}"
target:
entity_id: climate.mitubishi_ac
I added another trigger so that the temperature will be checked once AC is cool
, but the line value_template: "{{ not is_state_attr('climate.mitubishi_ac', 'fan_mode', wanted_fan) }}"
keeps returning false
, blocking the fan_mode
change.
I even added a 5 second delay before the line, but still being blocked.
Any idea why?
for the temp, I did not want the fan speed to keep oscillating between auto
and medium
, so idea was if it goes below 25, set to auto
and stay there until temperature hits 25.5, then set to medium
I could not determine the value of wanted_fan
, it just did not show in the trace. Let me try to get a screenshot.
The trigger was because the AC turned cool
.
wanted_fan
was auto
, even though current temp is 30C.
This line fixed the issue {% set temp = states('sensor.vindriktning_sht3x_temperature') | float(0) %}
states.sensor.vindriktning_sht3x_temperature
kept returning 0
{% if (temp > 25.6) %}
max
{% elif (temp >= 25.5 and temp <= 25.6) %}
medium
{% elif (temp < 25.0) %}
auto
{% endif %}
Thanks, I used the above eventually for readability. The idea is to take no action from 25 to 25.4 so that the fan speed doesn’t keep oscillating between auto
and medium