Hallo,
Ik wil graag weten hoe lang mijn radiatoren er over doen om de woonkamer op te warmen. Te meer omdat ik van die radiatorventilatoren heb aangeschaft en daar het effect van zou willen zien. Gewoon, omdat het kan...
Sinds kort gebruik ik Home Assistant vooral voor dashboardachtige functies zoals het weergeven van de totale opwek van mijn zonnepanelen en het totale energie gebruik op dit moment enzo. Daarnaast een paar lampjes al dan niet geautomatiseerd.
Voor de verwarming heb ik via de Integratie HomeKit Device toegang tot mijn Resideo thermostaat.
De entiteit Thermostaat heeft een aantal attributen. Hiervan heb ik met behulp van ChatGPT sensoren van gemaakt, zodat ik er mee kan rekenen (zie configuration-file).
Het lijkt allemaal goed te zitten, ik kan de juiste statussen uitlezen, alle testjes lijkt hij goed te doorstaan, behalve, als ik mijn thermostaat hoger zet dan de huidige temperatuur (dan zou hij dus een de huidige tijd als 'starttijd' moeten noteren) doet hij niks.
De tijd op het moment dat de temperaturen gelijk zijn, geeft hij wel prima weer.
Maar ja, vervolgens klopt het rekensommetje natuurlijk niet, als de starttijd niet klopt.
Dus de starttijd weigert hij weer te geven.
De eindtijd en de rekensom doet hij vervolgens wel goed.
Waar moet ik volgens jullie gaan zoeken? Of hoe kan ik dit probleem stap voor stap aanpakken? ChatGPT blijft ook maar rondjes draaien (heeft me wel aardig op weg geholpen, maar goed...)
Alvast bedankt, en hieronder nog wat code die ik al heb. En die (in mijn beginnersogen) goed lijkt. Al heb ik nog wat moeite met die Yaml-taal. Python, C++ lukt me beter...
Groet,
Johan
Mijn configuration-file ziet er zo uit (staat ook nog iets in over mijn omvormers, maar dat doet uiteraard niet mee):
En mijn automation file (althans het gedeelte wat van belang is):
En de code voor de Markdown card is deze (en die wordt ook netjes weergegeven op mijn dashboard).
Ik wil graag weten hoe lang mijn radiatoren er over doen om de woonkamer op te warmen. Te meer omdat ik van die radiatorventilatoren heb aangeschaft en daar het effect van zou willen zien. Gewoon, omdat het kan...
Sinds kort gebruik ik Home Assistant vooral voor dashboardachtige functies zoals het weergeven van de totale opwek van mijn zonnepanelen en het totale energie gebruik op dit moment enzo. Daarnaast een paar lampjes al dan niet geautomatiseerd.
Voor de verwarming heb ik via de Integratie HomeKit Device toegang tot mijn Resideo thermostaat.
De entiteit Thermostaat heeft een aantal attributen. Hiervan heb ik met behulp van ChatGPT sensoren van gemaakt, zodat ik er mee kan rekenen (zie configuration-file).
Het lijkt allemaal goed te zitten, ik kan de juiste statussen uitlezen, alle testjes lijkt hij goed te doorstaan, behalve, als ik mijn thermostaat hoger zet dan de huidige temperatuur (dan zou hij dus een de huidige tijd als 'starttijd' moeten noteren) doet hij niks.
De tijd op het moment dat de temperaturen gelijk zijn, geeft hij wel prima weer.
Maar ja, vervolgens klopt het rekensommetje natuurlijk niet, als de starttijd niet klopt.
Dus de starttijd weigert hij weer te geven.
De eindtijd en de rekensom doet hij vervolgens wel goed.
Waar moet ik volgens jullie gaan zoeken? Of hoe kan ik dit probleem stap voor stap aanpakken? ChatGPT blijft ook maar rondjes draaien (heeft me wel aardig op weg geholpen, maar goed...)
Alvast bedankt, en hieronder nog wat code die ik al heb. En die (in mijn beginnersogen) goed lijkt. Al heb ik nog wat moeite met die Yaml-taal. Python, C++ lukt me beter...
Groet,
Johan
Mijn configuration-file ziet er zo uit (staat ook nog iets in over mijn omvormers, maar dat doet uiteraard niet mee):
YAML:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| # Loads default set of integrations. Do not remove. default_config: # Load frontend themes from the themes folder frontend: themes: !include_dir_merge_named themes automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml input_datetime: opwarming_start: name: "Opwarming Start" has_date: true has_time: true opwarming_klaar: name: "Opwarming Klaar" has_date: true has_time: true template: - sensor: - name: "Totaal vermogen Solis omvormers" unique_id: "solis_total_power" unit_of_measurement: "W" state: > {% set power1 = states('sensor.solis_ac_output_total_power') | float(0) %} {% set power2 = states('sensor.solis_ac_output_total_power_2') | float(0) %} {{ power1 + power2 }} - name: "Totaal kWh zonnepanelen" unique_id: "solis_total_kwh" unit_of_measurement: "kWh" state: > {% set kwh1 = states('sensor.solis_daily_grid_energy_used') | float(0) %} {% set kwh2 = states('sensor.solis_daily_grid_energy_used_2') | float(0) %} {{ kwh1 + kwh2 }} - name: "Thermostaat Huidige Temperatuur" unique_id: "thermostaat_current_temp" state: "{{ state_attr('climate.tstat_f2f769_t6_thermostat', 'current_temperature') }}" unit_of_measurement: "°C" - name: "Thermostaat Gewenste Temperatuur" unique_id: "thermostaat_target_temp" state: "{{ state_attr('climate.tstat_f2f769_t6_thermostat', 'temperature') }}" unit_of_measurement: "°C" - name: "Thermostaat HVAC Actie" unique_id: "thermostaat_hvac_action" state: "{{ state_attr('climate.tstat_f2f769_t6_thermostat', 'hvac_action') }}" - name: "Opwarming Totale Tijd" state: > {% set start = states('input_datetime.opwarming_start') %} {% set klaar = states('input_datetime.opwarming_klaar') %} {% if start and klaar and start != 'unknown' and klaar != 'unknown' %} {% set start_ts = as_timestamp(start) %} {% set klaar_ts = as_timestamp(klaar) %} {% set duur = klaar_ts - start_ts %} {% if duur >= 0 %} {{ (duur // 3600) | int }} uur {{ ((duur % 3600) // 60) | int }} min {{ (duur % 60) | int }} sec {% else %} Ongeldige tijdsberekening {% endif %} {% else %} Wacht op gegevens... {% endif %} |
En mijn automation file (althans het gedeelte wat van belang is):
YAML:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| - alias: "Automatische opwarming starttijd instellen" trigger: # Controleer of de gewenste temperatuur hoger is dan de huidige temperatuur - platform: template value_template: > {{ states('sensor.thermostaat_gewenste_temperatuur') | float > states('sensor.thermostaat_huidige_temperatuur') | float }} condition: # Controleer of de starttijd nog niet is ingesteld - condition: template value_template: > {{ states('input_datetime.opwarming_start') in ['unknown', 'unavailable', ''] }} action: # Stel de huidige datum en tijd in als starttijd - service: input_datetime.set_datetime data: entity_id: input_datetime.opwarming_start date: "{{ now().strftime('%Y-%m-%d') }}" time: "{{ now().strftime('%H:%M:%S') }}" - alias: "Automatische opwarming starttijd instellen" trigger: # Controleer of de gewenste temperatuur hoger is dan de huidige temperatuur - platform: template value_template: > {{ states('sensor.thermostaat_gewenste_temperatuur') | float > states('sensor.thermostaat_huidige_temperatuur') | float }} condition: # Controleer of de starttijd nog niet is ingesteld - condition: template value_template: > {{ states('input_datetime.opwarming_start') in ['unknown', 'unavailable', ''] }} action: # Stel de huidige datum en tijd in als starttijd - service: input_datetime.set_datetime data: entity_id: input_datetime.opwarming_start date: "{{ now().strftime('%Y-%m-%d') }}" time: "{{ now().strftime('%H:%M:%S') }}" - alias: "Opwarming Klaar Tijd" trigger: # Controleer of de huidige temperatuur de gewenste temperatuur bereikt of overschrijdt - platform: template value_template: > {{ states('sensor.thermostaat_huidige_temperatuur') | float >= states('sensor.thermostaat_gewenste_temperatuur') | float }} condition: # Controleer of de starttijd al is ingesteld - condition: template value_template: > {{ states('input_datetime.opwarming_start') not in ['unknown', 'unavailable', ''] }} action: # Stel de huidige datum en tijd in als de klaar-tijd - service: input_datetime.set_datetime data: entity_id: input_datetime.opwarming_klaar date: "{{ now().strftime('%Y-%m-%d') }}" time: "{{ now().strftime('%H:%M:%S') }}" |
En de code voor de Markdown card is deze (en die wordt ook netjes weergegeven op mijn dashboard).
Django/Jinja:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Opwarmingstijden **Opwarming Starttijd:** {{ states('input_datetime.opwarming_start') }} **Opwarming Klaartijd:** {{ states('input_datetime.opwarming_klaar') }} {% set start = states('input_datetime.opwarming_start') %} {% set klaar = states('input_datetime.opwarming_klaar') %} {% if start and klaar and start != 'unknown' and klaar != 'unknown' %} {% set start_ts = as_timestamp(start) %} {% set klaar_ts = as_timestamp(klaar) %} {% set duur = klaar_ts - start_ts %} {% if duur >= 0 %} **Totale Tijdsduur:** {{ (duur // 3600) | int }} uur {{ ((duur % 3600) // 60) | int }} min {{ (duur % 60) | int }} sec {% else %} **Totale Tijdsduur:** Ongeldige tijdsberekening {% endif %} {% else %} **Totale Tijdsduur:** Wacht op gegevens... {% endif %} |
[ Voor 0% gewijzigd door Septillion op 24-12-2024 13:19 . Reden: Denk aan de 'yaml' bij de code tags aub! Zie topic warning en hoe deze post is aangepast. ]