Hi everyone,
I live in an apartment so I can only control TRV not the boiler. I want to avoid that during summer the automation continue to work. How can I achieve that?
Hi everyone,
I live in an apartment so I can only control TRV not the boiler. I want to avoid that during summer the automation continue to work. How can I achieve that?
Hi,
I’ve read back a few days as I’m struggling with setting up the presence detector to do anything useful atm. Is there some issue in general that you are working on, related to what @cediqqu has been saying?
I’ve set up the blueprint and after some weird issues (temp to max, randomly) that have been resolved by how the thermostats are configured (offset vs target), the temps are now doing what they should - for the most part.
The part with the presence detection gives me troubles… I have 2 proper SONOFF presence detectors in 2 different rooms, and they detect properly. They’re both on schedules, so that the bedroom actually goes into eco mode at night. But I’ve also tried to set it up that when during the presence schedule there is no presence detected for x seconds, it also goes into eco mode, but this just doesn’t ever trigger.
Also a question, it’s not possible to override the temperature of any thermostat manually? After just a few seconds or minutes at most it jumps back to the temp that has been set. It would be great if there was some way to keep a manual override persistent for a (at best defineable amount of) time…
Thanks!
-d
Take a look at the ‘On/Off Automation Options’.
You can use a weather entity or an outside temperature sensor to turn the automation on and off depending on the outside temperature.
Or you can switch it on and off by setting the ‘Winter Mode / Automation Toggle’ to a binary sensor, for example a switch helper entity.
Ah ok. So could this be fixed by forcing the calibration every X minutes? I’d implemented this for Danfoss/Popp/Hive because here the values gets deleted after a certain duration.
You can update the latest version but there is a BREAKING CHANGE with 5.1.7. The Fully Rounded Values Selector is gone and got replaced by a new one. So now you are able to override the auto mode for the step size.
Don’t know yet, I will keep testing it with an automation that triggers at least every 30 minutes or so.
However, like I said, I found the alarm coming up rather randomly in the past, so I just turned it off. There is no real explanation from Aqara about that alarm, and I also had the temperature not changing for like 8 hours without an alarm coming up (back when I did the updating with Node Red).
Cannot hurt to update the values once every x minutes if they don’t change anyways.
i tested it and the exclamation mark comes back very fast.
Atm i changed to generic calibration but i left the sensor to external. This works so far.
Thanks for the hint. So this will allow me ho stop to have the automation running but what about having also valves open at 100?%
Reason is that usually in spring/summer they use to have maintances (empty all the pipes change water ecc) and it’s better to have valves open to facilitate it.
Any hint?
The automation just changes the setpoint transmitted to the thermostat. Keeping the valve open would have to be done by the thermostat itself, for example by setting a high setpoint.
Aqara actually updated the FAQ sometime in the past it seems. See Why does the Aqara Home app prompt for temperature control abnormality and the LCD screen displays the fault icon?
It seems that the alarm is triggered if the following error becomes too high, so it will show up if the actual temperature does not follow the setpoint fast enough. I do not think there is anything that can be done about that since it is highly dependent on the radiator, thermometer and room.
See Force Max Temperature in the Force Comfort/Eco Mode section.
I use Aqara E1 and updated to the latest Blueprint version and it floated my logs. I tried step size
Full value stopped the errors, but I am pretty sure, Aqara can handle decimals. Maybe you used “.” instead of “,” like for the Calibration Delta?
{% endif %}
{% endfor %}
{% endif %}
{{ dict.from_keys(n.dict) }}’
{% endif %}
{% endfor %}
{% endif %}
{{ dict.from_keys(n.dict) }}’
2024-12-16 07:45:14.327 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: ‘is_rounded_values’ is undefined when rendering '{% set n = namespace(dict=) %}
{% if is_native_calibration_trigger %}
{% for valve in valves_xiaomi %}
{% set calibration_entities = device_entities(device_id(valve)) |
expand | selectattr(‘domain’,‘in’,‘number’) |
selectattr(‘entity_id’, ‘search’, input_calibration_key_word) |
map(attribute=‘entity_id’) | list %}
{% if calibration_entities | count > 0 %}
{% set calibration_entity = calibration_entities | first %}
{% set offset_old = states(calibration_entity) | float(0) %}
{% set offset_new = value_temperature_sensor | float %}
{% set step = state_attr(calibration_entity, 'step') | float(1) %}
{% if rounding_mode == 'manual' %}
{% set step = input_calibration_step_size | float(1) %}
{% endif %}
{% set min_val = state_attr(calibration_entity,'min') | float(0) %}
{% set max_val = state_attr(calibration_entity,'max') | float(55) %}
{% if is_aggressive_mode_calibration %}
{% set temp_diff = state_attr(valve,'temperature') | float(target_temperature) - value_temperature_sensor | float %}
{% if temp_diff * factor < input_aggressive_mode_range * -1 %}
{% set offset_new = offset_new + input_aggressive_mode_offset * factor %}
{% elif temp_diff * factor > input_aggressive_mode_range %}
{% set offset_new = offset_new - input_aggressive_mode_offset * factor %}
{% endif %}
{% endif %}
{% set round_size = iif('.' in (step | string) and not is_rounded_values, (step | string).split('.')[1] | length, 0) %}
{% set offset_new = ((offset_new | float(0) / step) | round(0) * step) | round(round_size) | float %}
{% set offset_new = iif(offset_new > max_val, max_val, offset_new) %}
{% set offset_new = iif(offset_new < min_val, min_val, offset_new) %}
{% if (float(offset_old) - float(offset_new)) | abs >= float(input_calibration_delta) %}
{% set n.dict = n.dict + [(calibration_entity, [{'value': offset_new, 'valve': valve}])] %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{{ dict.from_keys(n.dict) }}’
`
Thank you for your explanation and sorry for bothering you again.
I created an input boolean like this:
Inserted it
and I added a button to my dashboard like
But it has no influence in the temperature
I’d pushed a fix for this issue. Can you have another test again? Also check the logs after enabling your entity. If there is no error and the temperature don’t changes either please share a trace log with me from the moment when your input boolean is enabled.
hi here
just installed the blueprint, but in the "heating schedule adjustments " whatever I put as time it changed ‘immediately’ the comfort temperature to 20 even if I put time “09:00” and its 8:45
please some help here as it makes all my adjustment completely not working
some advice needed here
my version is the last one of HA and of the blueprint.
here is the full config
alias: TADO test cuisine
description: “”
use_blueprint:
path: panhans/advanced_heating_control.yaml
input:
input_trvs:
- climate.tado_x_cuisine_thermostat
input_temperature_comfort_static: 20.5
input_temperature_eco_static: 17.5
input_adjustments:
- time: “09:00”
comfort: “20”
input_schedulers:
- schedule.all_house_schedule
Since you have no entity for comfort or eco temperature specified the automation looks for the latest entry in the adjustments. And with only one entry the temperature is always set to 20.
You can go without those entities but you have to specify when other temperatures should be set at several times over the day.
@stephanschleichstr13
Good question. Too many issues to fix here…
Thanks for your quick reply
I did what you asked for and unfortunately the temperature didn’t change.
Here you can find the file:
Your window is open → thermostats are off
"state_window": true
Check your window/door contact sensors.
EDIT:
@panhans It is working to set the temperature but my log is throwing errors and also 3 different warnings. Here is the error log:
`Logger: homeassistant.helpers.event
Quelle: helpers/template.py:633
Erstmals aufgetreten: 09:39:16 (15 Vorkommnisse)
Zuletzt protokolliert: 09:39:21
Error while processing template: Template<template=({% if input_mode_outside_temperature == none %} {{ false }} {% else %} {% set outside_state = false %} {% set use_room_temp = input_mode_room_temperature and is_temperature_sensor_defined %} {% set room_state = iif(use_room_temp, false, true) %} {% set state = states(input_mode_outside_temperature) %} {% set state = iif(is_number(state) == true, state, state_attr(input_mode_outside_temperature,‘temperature’))%} {% if is_number(state) %} {% set outside_state = (state | float - input_mode_outside_temperature_threshold | float) * factor < 0 %} {% endif %} {% if use_room_temp %} {% set state = states(input_temperature_sensor) %} {% if is_number(state) %} {% set room_state = (state | float - input_mode_room_temperature_threshold | float) * factor < 0 %} {% endif %} {% endif %} {{ room_state and outside_state }} {% endif %}) renders=3>
Error while processing template: Template<template=({% if input_mode_outside_temperature == none %} {{ false }} {% else %} {% set outside_state = false %} {% set use_room_temp = input_mode_room_temperature and is_temperature_sensor_defined %} {% set room_state = iif(use_room_temp, false, true) %} {% set state = states(input_mode_outside_temperature) %} {% set state = iif(is_number(state) == true, state, state_attr(input_mode_outside_temperature,‘temperature’))%} {% if is_number(state) %} {% set outside_state = (state | float - input_mode_outside_temperature_threshold | float) * factor < 0 %} {% endif %} {% if use_room_temp %} {% set state = states(input_temperature_sensor) %} {% if is_number(state) %} {% set room_state = (state | float - input_mode_room_temperature_threshold | float) * factor < 0 %} {% endif %} {% endif %} {{ not (room_state and outside_state) }} {% endif %}) renders=3>
Error while processing template: Template<template=({{ input_mode_party | expand | selectattr(‘state’, ‘in’, [‘active’,‘on’]) | list | count > 0 }}) renders=3>
Error while processing template: Template<template=({{ input_mode_party | expand | selectattr(‘state’, ‘in’, [‘active’,‘on’]) | list | count == 0 }}) renders=3>
Error while processing template: Template<template=({% set now_ts = now() %} {% set frost_protection_timestamp = as_datetime(now_ts) - timedelta(**input_frost_protection_duration) %} {% if frost_protection_timestamp == now_ts %} {{ false }} {% else %} {% set is_presence_fp = [input_presence_sensor] | reject(‘eq’,none) | reject(‘is_state’,‘on’) | list | count > 0 %} {% set is_person_fp = input_persons | reject(‘is_state’,‘home’) | list | count > 0 %} {% if is_person_defined and is_presence_sensor_defined %} {{ is_person_fp and is_presence_fp }} {% elif is_person_defined %} {{ is_person_fp }} {% elif is_presence_sensor_defined %} {{ is_presence_fp }} {% else %} {{ false }} {% endif %} {% endif %}) renders=3>
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/template.py”, line 631, in async_render
render_result = _render_with_context(self.template, compiled, **kwargs)
File “/usr/src/homeassistant/homeassistant/helpers/template.py”, line 2733, in _render_with_context
return template.render(**kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^
File “/usr/local/lib/python3.13/site-packages/jinja2/environment.py”, line 1304, in render
self.environment.handle_exception()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File “/usr/local/lib/python3.13/site-packages/jinja2/environment.py”, line 939, in handle_exception
raise rewrite_traceback_stack(source=source)
File “”, line 1, in top-level template code
File “/usr/src/homeassistant/homeassistant/helpers/template.py”, line 2975, in wrapper
return func(hass, *args, **kwargs)
File “/usr/src/homeassistant/homeassistant/helpers/template.py”, line 1307, in expand
search += entity
jinja2.exceptions.UndefinedError: ‘input_persons’ is undefined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/template.py”, line 748, in async_render_to_info
render_info._result = self.async_render( # noqa: SLF001
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
variables, strict=strict, log_fn=log_fn, **kwargs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File “/usr/src/homeassistant/homeassistant/helpers/template.py”, line 633, in async_render
raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: ‘input_persons’ is undefined`
I feel so stupid, and I am really sorry. This was a sensor bug because physically the door was closed. I set the status manually to off and now it is working. Sorry again
What I still not understand and would be the next step: how to configure different temperatures which can be activated by e.g. a list: homeoffice, sick, office day
I understood how to set different schedules but not how to set different temperatures. Maybe you can help me again.
If you also want to test me the Step size again, just le mw know.
Thank you
I cannot reproduce this error. And I don’t know why this
homeassistant.exceptions.TemplateError: UndefinedError: ‘input_persons’ is undefined`
occurs. The default of input_persons is an empty array, so it’s never undefined except it’s set to none in your settings.
Is this error thrown by the same automation you’ve send me your trace log?