Last active
October 10, 2023 05:43
-
-
Save jaakla/b1a9acc1636add863248a071d2a830ad to your computer and use it in GitHub Desktop.
home assistant configuration hinnakontrolliks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# kolme seadme kõige odavamate tundide otsimiseks sensorid - maja küte, sooja vee küte ja BEV laadimine | |
# 1. eeldused: | |
# - Installi Nordpool HACS extension - hinnainfo | |
# - EV auto integratsioon (Hyundai Bluelink minul) - annab kui palju hetkel akus ruumi. Kui seda pole, võib ka panna staatilise tundide arvu (nt 4) | |
# - välistemperatuuri sensor kütte jaoks - "keskminetemp" saadud mul kasutades 'average' HACS extensioni abil mitmest lokaalsest sensorist. Aga võib ka asukohapõhist ilmateadet kasutada. | |
# - boileri küttevajadus 8 tundi ööpäevas on leitud katsetusega - siis ei jahtu alla 35 kraadi väljas olevatel tundidel | |
# - dashboardis input_number.ev_laadimine_valmis - mis kellaks peab EV laadimine valmis olema, tavaliselt mul "9" (öiseid tunde võtab), aga kui järgmine päev on ka odav ja on aega oodata, võib optimaalsem panna olla nt 14. | |
# 2. lisa allolevad sensorid configuration.yaml faili, sensorite nimed võivad vajada kohandamist | |
# - nipp "developer tools, template" on väga abiks templiitide kontrolliks ja testimiseks | |
# 3. automation teha UIs - mis lülitab vastavate seadmete lüliteid "taimer" binary sensori muutuse pealt sisse ja välja | |
# - seadmed sõltuvad sellest, kuidas mida täpselt lülitad. | |
# - ilmselt on tore dashboardi panna ka hinnagraafik, seadmete staatused | |
# 4. boonusülesanne : arvuta välja kokkuhoitud sendid ja näita graafiku või numbrina. Anna siia kommentaariks kuidas õnnestus. | |
- sensor: | |
# 1. mitu tundi elektrit on vaja? | |
- name: heat request | |
# 1.1. küte - sõltuvalt välitemperatuurist | |
unique_id: heatrequest | |
state: >- | |
{% set req_hours = (states('sensor.keskminetemp')|int - 6) * -0.5 + 6 %} | |
{% if (req_hours > 24) %} | |
req_hours=24 | |
{% elif (req_hours < 1) %} | |
req_hours=1 | |
{% endif %} | |
{{ req_hours|int }} | |
unit_of_measurement: "H" | |
# 1.2. sooja vee tank - alati 8 tundi ööpäevas, ühtlane tarbimine | |
- name: tank request | |
unique_id: tankrequest | |
state: 8 | |
unit_of_measurement: "H" | |
# 1.3. elektriauto - vajadus vastavalt auto antud laadimisaja nõudele (minutites) | |
- name: ev request | |
unique_id: evrequest | |
state: {{ states('sensor.santa_fe_estimated_charge_duration')|int/60 }} | |
unit_of_measurement: "H" | |
# 2. sensor - kas on küte sees või väljas - sellele saab seada juba automation-i | |
- binary_sensor: | |
- name: pumba taimer | |
unique_id: pumba taimer | |
state: >- | |
{% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %} | |
{% set t = now() %} | |
{% for i in range(states('sensor.heatrequest')|int) %} | |
{% if (t >= l[i].start and t <= l[i].end) %} | |
{{ true }} | |
{% endif %} | |
{% endfor %} | |
- name: tank taimer | |
unique_id: tank taimer | |
state: >- | |
{% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %} | |
{% set t = now() %} | |
{% for i in range(states('sensor.tank_request')|int) %} | |
{% if (t >= l[i].start and t <= l[i].end) %} | |
{{ true }} | |
{% endif %} | |
{% endfor %} | |
- name: ev taimer | |
unique_id: ev taimer | |
state: >- | |
{% set l_today = state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today') %} | |
{% set l_tomorrow = state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_tomorrow') %} | |
{% set t = now() %} | |
{% set until_h = states('input_number.ev_laadimine_valmis')|int %} | |
{% set l_combined = l_today[t.hour:] + l_tomorrow[:until_h] %} | |
{% set l_sorted = l_combined|sort(attribute='value') %} | |
{% for i in range(states('sensor.ev_request')|int) %} | |
{% if (t >= l_sorted[i].start and t <= l_sorted[i].end) %} | |
{{ true }} | |
{% endif %} | |
{% endfor %} | |
# 3. informatiivne - kui odava hinna pealt lülitatakse seade sisse, hea graafikus näidata | |
- sensor: | |
- name: odav hind | |
unique_id: odavhind | |
state: >- | |
{% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %} | |
{{ l[states('sensor.heatrequest')|int].value }} | |
unit_of_measurement: "EUR/MWh" | |
- name: odav tank hind | |
unique_id: odavhind_vesi | |
state: >- | |
{% set l=state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today')|sort(attribute='value') %} | |
{{ l[states('sensor.tank_request')|int].value }} | |
unit_of_measurement: "EUR/MWh" | |
- name: odav ev hind | |
unique_id: odavhind_ev | |
state: >- | |
{% set l_today = state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_today') %} | |
{% set l_tomorrow = state_attr('sensor.nordpool_mwh_ee_eur_3_10_02', 'raw_tomorrow') %} | |
{% set t = now() %} | |
{% set until_h = states('input_number.ev_laadimine_valmis')|int %} | |
{% set hours = states('sensor.santa_fe_estimated_charge_duration')|int/60 %} | |
{% set l_combined = l_today[t.hour:] + l_tomorrow[:until_h] %} | |
{% set l_sorted = l_combined|sort(attribute='value') %} | |
{{ l_sorted[hours|int].value }} | |
unit_of_measurement: "EUR/MWh" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment