raven22 schreef op zaterdag 15 maart 2025 @ 09:12:
[...]
Er is mij door @
CPM gevraagd om een korte toelichting.
Het script doet het volgende:
- van 2200 tot 800 is de ingestelde temperatuur (Tv=vraagtemperatuur) 19 gr.
- tussen 8 en 22 wordt de Ta (actuele temperatuur) in de gaten gehouden, als deze >= is aan Tv dan wordt de nieuwe Tv gelijk aan Ta +0.1, dit met een maximum van 20 graden
- om 2200 gaat de temp weer naar 19.
Hieronder een nieuwe versie van het script want om 22 uur ging de Tv niet naar 19. Nu hopenlijk wel, maar zoals gezegd ik ben geen expert, script is mbv chatgpt gemaakt.
Ik ga ervanuit dat de Tado is toegevoegd aan homeassistant, zo niet volg dan deze instructies
https://www.home-assistan...20list%2C%20select%20Tado.
Op het homeassistant dashboard zie je dan vanzelf de tado gegevens. Hier moet je de entiteit van je tado thermostaat uithalen. In het script vervang je climate.woonkamer door deze entiteit van jouw tado.
[Afbeelding]
Verder heb je nog nodig de actuele temperatuur waarde. In het script vervang je sensor.woonkamer_temperature door deze waarde.
[Afbeelding]
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| alias: Dynamische Temperatuurregeling Woonkamer
triggers:
- entity_id: sensor.woonkamer_temperature
trigger: state
- at: "22:00:00"
trigger: time
conditions: []
actions:
- choose:
- conditions:
- condition: time
after: "21:59:00"
before: "22:01:00"
sequence:
- target:
entity_id: climate.woonkamer
data:
temperature: 19
action: climate.set_temperature
- conditions:
- condition: time
after: "07:59:00"
before: "21:55:00"
- condition: template
value_template: >
{% set ta = states('sensor.woonkamer_temperature') | float |
round(1) %} {% set tv = state_attr('climate.woonkamer',
'temperature') | float | round(1) %} {{ ta >= tv }}
sequence:
- target:
entity_id: climate.woonkamer
data:
temperature: >
{% set ta = states('sensor.woonkamer_temperature') | float |
round(1) %} {% set new_tv = ta + 0.1 %} {% if new_tv > 20 %}
20
{% else %}
{{ new_tv }}
{% endif %}
action: climate.set_temperature
mode: single |
Nog een slotopmerking:
Het is denk ik belangrijk dat het ingestelde warmteverlies door Quatt goed overeenkomt met de realiteit. Is die te hoog dan worden de stapjes snel doorlopen en mijn bedoeling is juist dat hij er de hele dag over doet.
Is jouw ingestelde warmteverlies aan de lage kant, en duren de stapjes te lang, maak er dan stapjes van 0.2 of zelfs 0.3 van. De cic zal dan sneller een hoger vermogen vragen van de quatt.
Nav een verzoek in het Quatt forum hierbij een verder ontwikkelde versie van het script. Het bestaat om het voor mij begrijpelijker te houden uit 5 delen. Wellicht zit er in deel 2 en 4 wat overlap. Ik ben een leek op dit gebied en heb dit samen met Chatgpt gemaakt. Ik houd me aanbevolen voor verbeteringen, maar onderstaande werkt.
Script bestaat uit 5 delen. Hier in willekeurige volgorde.
1. deze spreekt voor zich, stelt de nachtverlaging in, tijd en temp kun je zelf kiezen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| alias: Nachtverlaging
triggers:
- at: "21:58:00"
trigger: time
actions:
- target:
entity_id: climate.tado_smart_thermostat_ru3988930560
data:
temperature: 18
action: climate.set_temperature
- entity_id: input_boolean.tv_verhoging_toegestaan
action: input_boolean.turn_off
mode: single |
2. de temp regeling met de stapjes verhoging, ik kies voor 0,15 gr stapjes om afrondingsverschillen te voorkomen. De 20,5 is de max tot waar naar verhoogd wordt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| alias: Start temperatuurregeling
description: ""
triggers:
- at: input_datetime.tv_regeling_start
trigger: time
actions:
- entity_id: input_boolean.tv_verhoging_toegestaan
action: input_boolean.turn_on
- target:
entity_id: climate.tado_smart_thermostat_ru3988930560
data:
temperature: >
{% set ta =
states('sensor.tado_smart_thermostat_ru3988930560_current_temperature')
| float %} {% set tv = ta + 0.15 %} {% if tv > 20.5 %} 20.5 {% else %}
{{ tv }} {% endif %}
action: climate.set_temperature
mode: single |
3. dit heeft als functie het toevoegen van een hysterese anders blijft het systeem rond de 20,5 jutteren. Nu gaat de vraagtemp naar 20 als 20,5 bereikt wordt. Daar moet hij blijven tot de actuele temp ook weer onder de 20 komt, dan gaat hij weer in stapjes van o,15 omhoog
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| alias: TV terug als Ta >= 20.5
triggers:
- entity_id: sensor.tado_smart_thermostat_ru3988930560_current_temperature
above: 20.49
trigger: numeric_state
conditions:
- condition: template
value_template: >
{% set start = states('input_datetime.tv_regeling_start') %} {% set
now_time = now().strftime('%H:%M:%S') %} {{ now_time >= start and now_time
<= '21:55:00' }}
actions:
- target:
entity_id: climate.tado_smart_thermostat_ru3988930560
data:
temperature: 20
action: climate.set_temperature
- entity_id: input_boolean.tv_verhoging_toegestaan
action: input_boolean.turn_off
mode: single |
4. dit regelt de verhoging
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| alias: Tv verhogen
triggers:
- entity_id: sensor.tado_smart_thermostat_ru3988930560_current_temperature
trigger: state
conditions:
- condition: template
value_template: >
{% set start = states('input_datetime.tv_regeling_start') %} {% set
now_time = now().strftime('%H:%M:%S') %} {{ now_time >= start and now_time
<= '21:55:00' }}
- condition: state
entity_id: input_boolean.tv_verhoging_toegestaan
state: "on"
- condition: numeric_state
entity_id: sensor.tado_smart_thermostat_ru3988930560_current_temperature
below: 20.5
actions:
- target:
entity_id: climate.tado_smart_thermostat_ru3988930560
data:
temperature: >
{% set ta =
states('sensor.tado_smart_thermostat_ru3988930560_current_temperature')
| float %} {% set tv = ta + 0.15 %} {% if tv > 20.5 %} 20.5 {% else %}
{{ tv }} {% endif %}
action: climate.set_temperature
mode: single |
5. deze is nodig om als de tempverhoging onder de 20 gezakt is weer mogelijk t emaken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| alias: Verhoging toestaan bij Ta <=20
triggers:
- entity_id: sensor.tado_smart_thermostat_ru3988930560_current_temperature
below: 20.01
trigger: numeric_state
conditions:
- condition: template
value_template: >
{% set start = states('input_datetime.tv_regeling_start') %} {% set
now_time = now().strftime('%H:%M:%S') %} {{ now_time >= start and now_time
<= '21:55:00' }}
actions:
- entity_id: input_boolean.tv_verhoging_toegestaan
action: input_boolean.turn_on
mode: single |
Een van de scripts creert een helper in het dashboard (zie screenshot). Daarmee stel je de tijd in wanneer de regeling van start kan gaan. (bv in het voorjaar als de buitentemp snel oploopt na een koude nacht is het efficienter om om 10 te beginnen ipv 8 uur)
Tot slot, ik heb in het script de entiteiten aangepast naar de Tado Homekit integratie en de Tado HA integratie verwijderd om geen problemen met de nieuwe api call limieten te krijgen.