Syntax na priradenie premennej

Co umí šablony a jak je využívat.
lubost
Pokročilý
Pokročilý
Příspěvky: 112
Registrován: 03. duben 2021, 15:19
Dal poděkování: 2 poděkování
Dostal poděkování: 4 poděkování

Re: Syntax na priradenie premennej

Příspěvek od lubost »

takto to mam teraz v configuration.yaml... potreboval by som, aby tie vypocitane hodnoty priemer_vypocitana a priemer_aktualna som mal ako klasicke hodnoty napr. senzora teploty... vedel by som ich odoslat do virtualneho ci opentherm termostatu, ktore nasledne spinaju kotol (ak aspon jedna z izieb potrebuje este kurit).
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 %}

Uživatelský avatar
Lion®
Administrátor fóra
Administrátor fóra
Příspěvky: 1604
Registrován: 28. září 2020, 14:07
Bydliště: podkrkonoší
Dal poděkování: 144 poděkování
Dostal poděkování: 193 poděkování
Kontaktovat uživatele:

Re: Syntax na priradenie premennej

Příspěvek od Lion® »

lubost píše: 06. prosinec 2021, 12:31 takto to mam teraz v configuration.yaml... potreboval by som, aby tie vypocitane hodnoty priemer_vypocitana a priemer_aktualna som mal ako klasicke hodnoty napr. senzora teploty... vedel by som ich odoslat do virtualneho ci opentherm termostatu, ktore nasledne spinaju kotol (ak aspon jedna z izieb potrebuje este kurit).
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 %}
Jen co jsem rychle nakoukl tak mi připadá, že píšeš "Automatizaci" do "Senzoru".
K tomu Senzor neslouží.
když "input_boolean.kurenie_detska" je on a "binary_sensor.okno_hore_detska_contact" je off
nastav "pozadovana_teplota" = "input_number.temp_detska_vyssia" - "input_number.temp_znizenie_pomocny" + pozadovana_teplota %}
a další takové
tohle bych teda vážně senzorem neřešil

Popřemýšlej, zda nemít senzor pro každou místnost zvlášť, nebo alespoň každou místnost mít zvlášť jako attribut.
________________
🍻 Přispěj a získej přístup do obsahu fóra pro dárce. :thx:
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box

Galerie realizací

Uživatelský avatar
Lion®
Administrátor fóra
Administrátor fóra
Příspěvky: 1604
Registrován: 28. září 2020, 14:07
Bydliště: podkrkonoší
Dal poděkování: 144 poděkování
Dostal poděkování: 193 poděkování
Kontaktovat uživatele:

Re: Syntax na priradenie premennej

Příspěvek od Lion® »

Zkusil bych to:
PepYk_ píše: 03. prosinec 2021, 09:28 Proč na regulaci teploty nepoužiješ již hotovou integraci Climate?
https://www.home-assistant.io/integrations/climate/
Vytvořit pro každou místnost "climate" kde si můžeš cílovou teplotu nastavit ručně, nebo automatizací za pomocí časování a přítomností naprogramovat, či jinak si ji vypočítávat.
Tak dostaneš požadavky ze všech místností, které v další automatizaci využiješ pro ovládání kotle.
________________
🍻 Přispěj a získej přístup do obsahu fóra pro dárce. :thx:
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box

Galerie realizací

Odpovědět

Zpět na „Šablony“