problém s výpočtem - sensor násobený sensorem

Co umí šablony a jak je využívat.
vomic
Začínající autor
Začínající autor
Příspěvky: 38
Registrován: 16. prosinec 2022, 14:11
Dal poděkování: 9 poděkování
Dostal poděkování: 2 poděkování

problém s výpočtem - sensor násobený sensorem

Příspěvek od vomic »

Dobrý den, prosím kde dělám chybu ...
1. mám sensor, který ukazuje okamžitou cenu spotové elektriky - funguje korektně
2. mám vytvořený sensor, který ukazuje aktuální cenu kurzu CZK/EUR - funguje korektně

chci vytvořit sensor který spočítá cenu spotové energie v Kč včetně DPH pomocí výpočtu: SPOT / 826,44 * KURZ což vynásobí cenu v eur kurzem a vydělí 826,44 což by mělo vypočítat cenu 1 kWh v Kč včetně DPH21% ... v HA to ale nic nezobrazí, výpočtový vzorec je špatně napsaný, kde prosím dělám chybu?


Kód: Vybrat vše

sensor:
#aktuální kurz EUR - ČNB
  - platform: scrape
    resource: https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/
    name: currency_eur
    select: 'td'
    index: 29
    scan_interval: '08:00:00'
    unit_of_measurement: "CZK"

#vypočet sazby spot Kč/Kwh včetně DPH21%
  - platform: template
    sensors:
      current_spot_electricity_price_czk:
        friendly_name: "Current Spot Electricity Price 1"
        value_template: "{{ (states('sensor.current_spot_electricity_price') | float / 826.44) * (states('sensor.currency_eur') | float) }}"
        unit_of_measurement: "CZK/Kwh"

Uživatelský avatar
acerot
Pokročilý
Pokročilý
Příspěvky: 118
Registrován: 12. prosinec 2022, 15:44
Dal poděkování: 2 poděkování
Dostal poděkování: 24 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od acerot »

Zkoušel sis tu šablonu po krocích v Šablonách v Nástrojích pro vývojáře? Co ti to tam hlásí za chyby?
Nahradil jsem tvoje senzory čísly 777 a 888 a něco mi to teda počítá, takže myslím, že syntaktickou chybu tam nemáš.
Jinak doporučuju template senzory psát už podle nové syntaxe - pod integraci template. Ty to máš ještě podle Legacy Sensor configuration format, viz https://www.home-assistant.io/integrations/template/.
test.jpg

vomic
Začínající autor
Začínající autor
Příspěvky: 38
Registrován: 16. prosinec 2022, 14:11
Dal poděkování: 9 poděkování
Dostal poděkování: 2 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od vomic »

acerot píše: 16. prosinec 2022, 18:10 Zkoušel sis tu šablonu po krocích v Šablonách v Nástrojích pro vývojáře?
EDIT:
tak to píše toto: float got invalid input '24,260' when rendering template 'sensor
Dělá to evidentně ten sensor.currency.eur který dává výstup co výpočet nezkousne, jakýkoliv jiný sensor to počítá v pořádku. Tím tedy vyřešen můj hlavní problém.
Jinak doporučuju template senzory psát už podle nové syntaxe - pod integraci template. Ty to máš ještě podle Legacy Sensor configuration format, viz https://www.home-assistant.io/integrations/template/.
test.jpg
Prosím neupravil by jsi mi ten script sensoru jak má správně být, já z toho odkazu nechápu jak to přepsat, jsem v tomhle více méně laik. Nicméně mám těchto sensorů asi 20 a na ně navázaných cca 50 ulitity meter sensorů a pokud by mě to přestalo fungovat uplně se mi rozsype celé HA a nerad bych měl výpadek v datech než to pak opravím. Já bych pak podle tvému mustru opravil ostatní.
Děkuji moc.

Uživatelský avatar
acerot
Pokročilý
Pokročilý
Příspěvky: 118
Registrován: 12. prosinec 2022, 15:44
Dal poděkování: 2 poděkování
Dostal poděkování: 24 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od acerot »

Jasně. Ty máš ten template senzor teď jakoby po staru (ale co jsem nedávno četl, zatím tu legacy syntax autoři HA rušit nebudou, ale přijít to může) tak, že ji máš jako - platform pod integrací sensor. Po novu je na to samostatná integrace template a všechny senzory jsou pod ní. Jestli umíš anglicky, tak na té stránce manuálu, co jsem ti poslal, je to všechno popsaný a jsou tam příklady.
Jak tuším z tvýho zdrojáku, cos sem dal, máš celou konfiguraci HA jen v souboru configuration.yaml - čili nemáš ji rozházenou do podsložek a podsouborů - je to tak? Ok.
Takže do configuration.yaml si napíšeš zleva bez odsazení od kraje template: a pod to s jedním odsazením (jedno odsazení rovná se 2 mezery) napíšeš - sensor: . A pod toto jedno slovo sensor budeš sázet všechny template senzory se dvěma odsazeními od kraje jako YAML list, tedy všechny budou začínat pomlčkou. Čili nějak takhle:

Kód: Vybrat vše

template:
  - sensor:
  
    #vypočet sazby spot Kč/Kwh včetně DPH21%
    - name: current_spot_electricity_price_czk
      friendly_name: "Current Spot Electricity Price 1"
      unit_of_measurement: "CZK/Kwh"
      state: >
        {{ (states('sensor.current_spot_electricity_price') | float / 826.44) * (states('sensor.currency_eur') | float) }}

    #další senzor
    - name: XXX
      friendly_name: ABC

    #další senzor
    - name: YYY
      friendly_name: DEF
Další senzor bude zase začínat tím - name: XXX se stejným odsazením.
To znamínko větší než za state: je direktiva YAML preprocesoru, že šablonu hodláš psát na další řádky a nemusíš k ní dávat uvozovky (tzv. víceřádkový string). Jde to samozřejmě napsat i takhle - a když máš jednořádkovou šablonu, je to možná i lepší (ušetří to místo).

Kód: Vybrat vše

      state: "{{ (states('sensor.current_spot_electricity_price') | float / 826.44) * (states('sensor.currency_eur') | float) }}"
Zkus do tý nový syntaxe napráskat všechny senzory a dej vědět, jestli to fachá.

Uživatelský avatar
acerot
Pokročilý
Pokročilý
Příspěvky: 118
Registrován: 12. prosinec 2022, 15:44
Dal poděkování: 2 poděkování
Dostal poděkování: 24 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od acerot »

Úplně jsem zapomněl :roll:
float got invalid input '24,260' when rendering template 'sensor by mohlo být tím, že v tom čísle je desetinná čárky a ono to chce desetinnou tečku. Zkus zaměnit tu čárku za tečku, než to pošleš do toho floatu, třeba takhle. Důležitý je to .replace(',', '.')

Kód: Vybrat vše

{{ (states('sensor.current_spot_electricity_price').replace(',','.') | float / 826.44) * (888 | float) }}

vomic
Začínající autor
Začínající autor
Příspěvky: 38
Registrován: 16. prosinec 2022, 14:11
Dal poděkování: 9 poděkování
Dostal poděkování: 2 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od vomic »

acerot píše: 16. prosinec 2022, 20:57 Jasně. Ty máš ten template senzor teď jakoby po staru (ale co jsem nedávno četl, zatím tu legacy syntax autoři HA rušit nebudou, ale přijít to může) tak, že ji máš jako - platform pod integrací sensor.
ano, už jsem taky zjistil že se ruší jen ten scrape sensor, ale určitě chci opravit i ty template mám jich mraky :)
Jestli umíš anglicky
Bohužel už mě cinklo 50 a angličtinu mám jen mírně pokročilou turistickou ... trochu translate a pokus omyl, ale mám schopnost z konkrétního příkladu když vím co přesně dělá se naučit udělat kopii pro mou potřebu :)
Jak tuším z tvýho zdrojáku, cos sem dal, máš celou konfiguraci HA jen v souboru configuration.yaml - čili nemáš ji rozházenou do podsložek a podsouborů - je to tak? Ok.
jj přesně takto to mám



Díky moc, zkusím přes víkend vše předělat na nové scripty, přijdu o data když bude vše nově?
Pokud bych to chtěl rozházet což bych moc rád, jak se to dělá a přijdu o data?

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: problém s výpočtem - sensor násobený sensorem

Příspěvek od Lion® »

vomic píše: 16. prosinec 2022, 22:19 Díky moc, zkusím přes víkend vše předělat na nové scripty, přijdu o data když bude vše nově?
Pokud bych to chtěl rozházet což bych moc rád, jak se to dělá a přijdu o data?
Pokud se senzory budou jmenovat stejně o data by jsi přijít neměl.

Kód: Vybrat vše

https://homeassistant-cz.cz/viewtopic.php?p=5297#p5297
Co chceš rozházet? configuration.yaml?

Kód: Vybrat vše

https://homeassistant-cz.cz/viewtopic.php?f=268&t=557&p=5238#p5238
________________
🍻 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í

vomic
Začínající autor
Začínající autor
Příspěvky: 38
Registrován: 16. prosinec 2022, 14:11
Dal poděkování: 9 poděkování
Dostal poděkování: 2 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od vomic »

acerot píše: 16. prosinec 2022, 21:06 Úplně jsem zapomněl :roll:
float got invalid input '24,260' when rendering template 'sensor by mohlo být tím, že v tom čísle je desetinná čárky a ono to chce desetinnou tečku.
[/code]
ano bylo to tou čárkou, nicméně jsem to zíkával pomocí sensoru s výčtem z webu, celé jsem to smazal a doplněk který vytahuje spotovou cenu jsem přeinstaloval aby dával rovnou cenu v Kč za 1kWh tím jsem si ušetřil jeden výpočet. Následně jsem udělal sensor co mě spočítá spotřebu za hodinu podle spotu a k tomu připočítá DPH a distribuční sazbu. Snažím se ten sensor tedy už udělat podle té nové normy :)

Kód: Vybrat vše

#vypočet hodinové sazby NÁKUP spot Kč/kwh vč. DPH    
    - name: cena_elektriky_nakupni_hourly:
      friendly_name: "Nákup za spot cenu (hod)"
      state: "{{ ( (states('sensor.el_nakup_zdroj_solax_hod') | float) * ( (states('sensor.regulovana_cena_spot') | float * 1.21) + 0.911) ) }}"
      unit_of_measurement: "Kč"
      device_class: "energy"

vomic
Začínající autor
Začínající autor
Příspěvky: 38
Registrován: 16. prosinec 2022, 14:11
Dal poděkování: 9 poděkování
Dostal poděkování: 2 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od vomic »

acerot píše: 16. prosinec 2022, 20:57 Takže do configuration.yaml si napíšeš zleva bez odsazení od kraje template: a pod to s jedním odsazením (jedno odsazení rovná se 2 mezery) napíšeš - sensor: . A pod toto jedno slovo sensor budeš sázet všechny template senzory se dvěma odsazeními od kraje jako YAML list, tedy všechny budou začínat pomlčkou. Čili nějak takhle:
template:
- sensor:
#vypočet sazby spot Kč/Kwh včetně DPH21%
- name: current_spot_electricity_price_czk
Bohužel mě ani jeden sensor nefunguje, někde dělám chybu nebo mě něco v celém configuration.yaml chybí. Zde je můj config ... pokračuje ještě dále ale už se jen stále opakují sensory se stejně dělaným scriptem a následně countery, ulitity metery ale ty fungují OK.:

Kód: Vybrat vše

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

recorder:
  purge_keep_days: 5
  exclude:
    domains:
      - automation
      - updater
    entity_globs:
      - sensor.weather_*
    entities:
      - sun.sun # Don't record sun data
      - sensor.last_boot # Comes from 'systemmonitor' sensor platform
      - sensor.date
    event_types:
      - call_service # Don't record service calls

influxdb:
  host: a0d7b954-influxdb
  port: 8086
  database: ******
  username: ******
  password: ******
  max_retries: 3
  default_measurement: state
  
template:     
  - sensor:
#vypočet hodinové sazby NÁKUP spot Kč/kwh vč. DPH    
      - name: cena_elektriky_nakupni_hourly
        friendly_name: "Nákup za spot cenu (hod)"
        state: "{{ ( (states('sensor.el_nakup_zdroj_solax_hod') | float) * ( (states('sensor.regulovana_cena_spot') | float * 1.21) + 0.911) ) }}"
        unit_of_measurement: "Kč"
        device_class: "energy"
      
#POROVNÁNÍ spotové ceny - regulace     
      - name: regulovana_cena_spot
        friendly_name: "Regulovaná cena SPOT"
        unique_id: regspot
        icon: "mdi:transmission-tower-export"
        unit_of_measurement: "Kč"
        state: >-
          {% if states('sensor.current_spot_electricity_price') | float(0) > 5 %} 5
            5
          {% else %}
            {{ ((states('sensor.current_spot_electricity_price') | float(0) | round(4) ))}}
          {% endif %}    
              
#vypočet hodinové sazby PRODEJ spot Kč/kwh vč. DPH    
      - name: cena_elektriky_prodejni_hourly
        friendly_name: "Prodej za spot cenu (hod)"
        state: "{{ (states('sensor.el_prodej_zdroj_solax_hod') | float) *  (states('sensor.current_spot_electricity_price') | float) }}"
        unit_of_measurement: "CZK"
        device_class: "energy"
    
#měřič spotřeby vody studna  
      - name: water_meter_in_m3
        friendly_name: "Spotreba studna m3"
        state: "{{ (states('counter.counter_water_pulses')|float / 3333) | round(3) }}"
        unit_of_measurement: "m³"
        device_class: "water"
        
#měřič spotřeby vody pro oplach jezirka
      - name: jezirko_meter_in_m3
        friendly_name: "Spotreba oplach jezirka m3"
        state: "{{ (states('counter.counter_buben_oplach')|float / 235) | round(3) }}"
        unit_of_measurement: "m³"
        device_class: "water"

Uživatelský avatar
acerot
Pokročilý
Pokročilý
Příspěvky: 118
Registrován: 12. prosinec 2022, 15:44
Dal poděkování: 2 poděkování
Dostal poděkování: 24 poděkování

Re: problém s výpočtem - sensor násobený sensorem

Příspěvek od acerot »

První, co mě bouchlo do očí, je, že máš před - name: 6 mezer, místo 4 mezer. Zkus, jestli je to tímhle. Jestli ne, budem laborovat dál.

UPDATE: Tak teď koukám, že to možná takhle není. V příkladech mají taky 6 mezer. Ale moc mi to nedává smysl. Zkoušel jsem to udělat se 4 i se 6 mezerami ve svém configuration.yaml a kontrola konfigurace projde bez chyby tak i tak (?). Bohužel to nemůžu úplně aplikovat, protože můj konfig by se tím totálně rozhasil. Nicméně, zkusit to můžeš (ty 4 mezery).

Odpovědět

Zpět na „Šablony“