Ak idem klasicky po starom (termostat iba robi "prepojku" pre kotol), tak mi staci info, ze ziadna izba nepotrebuje kurit... Ale pre OpenTherm protokol a jeho termostat je idealne posielat prislusne teploty a on nasledne vypocitava pozadovane teploty pre vodu do kurenia, aj samotnu ucinnost kotla...
v samotnom skripte na zaklade urciteho casoveho obdobia je premenna "imput_number.temp_znizenie_pomocny" rovna bud nule, alebo nastavenej hodnote poklesu (vo vacsine pripadov hodnota 1). Cize ked je "nocny pokles", tak su pozadovane a porovnavaju sa nizsie teploty...
Skript robi presne to, co potrebujem, iba to dostat von ako senzor... definovanie namespace som pouzil ako priklad uvedeny vyssie... ale neposunulo ma to dalej... akurat zadefinovanie ako senzora (ktory zatial nefunguje)
Kód: Vybrat vše
- platform: template
sensors:
teploty_hore:
friendly_name: "vypocitane_teploty_hore"
unit_of_measurement: '°C'
value_template: >-
{%- set ns = namespace() -%} {# inicializacia #}
{%- set ns.priemer_pozadovana = 0 -%} {# inicializacia #}
{%- set ns.priemer_aktualna = 0 -%} {# inicializacia #}
{% set pozadovana_teplota = 0 %}
{% set aktualna_teplota = 0 %}
{% set pocet_na_priemer = 0 %}
{% if states("input_boolean.kurenie_detska")=='on' and states("binary_sensor.okno_hore_detska_contact")=='off' %}
{% set pozadovana_teplota = states("input_number.temp_detska_vyssia") | float - states("input_number.temp_znizenie_pomocny") | float + pozadovana_teplota %}
{% set aktualna_teplota = states("sensor.detska_teplomer_teplota") | float + aktualna_teplota %}
{% set pocet_na_priemer = pocet_na_priemer + 1 %}
{%- endif %}
{% if states("input_boolean.kurenie_kuchyna")=='on' %}
{% set pozadovana_teplota = states("input_number.temp_kuchyna_vyssia") | float - states("input_number.temp_znizenie_pomocny") | float + pozadovana_teplota %}
{% set aktualna_teplota = states("sensor.kuchyna_teplomer_teplota") | float + aktualna_teplota %}
{% set pocet_na_priemer = pocet_na_priemer + 1 %}
{%- endif %}
{% if states("input_boolean.kurenie_spalna")=='on' and states("binary_sensor.okno_hore_spalna_contact")=='off' %}
{% set pozadovana_teplota = states("input_number.temp_spalna_vyssia") | float - states("input_number.temp_znizenie_pomocny") | float + pozadovana_teplota %}
{% set aktualna_teplota = states("sensor.spalna_teplomer_teplota") | float + aktualna_teplota %}
{% set pocet_na_priemer = pocet_na_priemer + 1 %}
{%- endif %}
{% if states("input_boolean.kurenie_obyvacka")=='on' and states("binary_sensor.balkonove_dvere_hore_contact")=='off' %}
{% set pozadovana_teplota = states("input_number.temp_obyvacka_vyssia") | float - states("input_number.temp_znizenie_pomocny") | float + pozadovana_teplota %}
{% set aktualna_teplota = states("sensor.obyvacka_teplomer_teplota") | float + aktualna_teplota %}
{% set pocet_na_priemer = pocet_na_priemer + 1 %}
{%- endif %}
{% if pocet_na_priemer > 0 %}
{% set ns.priemer_pozadovana = pozadovana_teplota / pocet_na_priemer %}
{% set ns.priemer_aktualna = aktualna_teplota / pocet_na_priemer %}
{%- else %}
{% set ns.priemer_pozadovana = 21 %}
{% set ns.priemer_aktualna = 22 %}
{%- endif %}