blog.vyoralek.cz

HomeAssistant #20 – Měření spotřeby

V dnešním už 20 díle seriálu k HA si ukážeme jak pracovat se spotřebou zařízení a jak si definovat hodinové, denní a měsíční čítače.

Úplným základem který budeme potřebovat pro to abychom byli schopni měřit spotřebu elektřiny v čase bude informace o aktuální spotřebě ve Wattech. Jakmile budeme mít tuto hodnotu jsme schopni si vše ostatní dopočítat.

Nejprve si ukážeme obecně použití v HA a později se podíváme jak tento princip aplikovat v případě WiFi zařízení s firmware Tasmota a poté v případě Zigbee zásuvky napárované do systému deCONZ. Jakékoliv další použití by však mělo být velmi podobné.

Potřebné entity

  1. aktuální spotřeba (current power)
  2. spotřebovaná energie (energy spend)
  3. měřáky spotřeby (consumption meters) – hodinnový, denní, měsíční atp.
  4. peněžní vyjádření spotřeby (price per period)

A nyní se pojďme podívat na jednotlivé části podrobněji

1. Aktuální spotřeba (W)

Jedná se o hodnotu udávající aktuální spotřebu zařízení ve Watech. Tuto hodnotu budeme potřebovat získat přímo ze zařízení.

2. Spotřebovaná energie (kWh)

Tento převodník nám pomůže s převodem aktuální spotřeby na kWh.

Například pokud máme 60 W žárovku svítící po dobu jedné hodiny, pak její spotřeba bude 0,06 kWh.

Implementaci v HomeAssistantovi najdeme jako platformu integration, která poskytuje tzv. Riemannův součet, což je v matematice určitým druhem aproximace hodnoty určitého integrálu konečným součtem – pokud by vás zajímaly detaily výpočtu můžete kouknout na Wikipedii.

Čtyři metody (zleva) – pravý, minimální, maximální a levý

Pro použití v HomeAssistantovi budeme potřebovat nastavit zdroj pro Riemannův součet, což bude sensor s aktuální spotřebou ve Watech, který jsme si popsali v předchozím bodě.

Tento sensor můžeme přidat buď přes UI:

V menu NastaveníIntegrace ▸ Přidat Integraci

A nebo můžeme pro konfiguraci použít configuration.yaml, např:

sensor:
  - platform: integration
    source: sensor.current_power
    unit_prefix: k

? Mějte na paměti, že Riemannův součet je pouze aproximací a velmi záleží kolik dat pro výpočet poskytneme, nebo-li čím bude interval mezi jednotlivými hodnotami aktuální spotřeby větší, tím menší přesnost hodnoty v kWh dostaneme.

V případě zařízení s velkou inicializační spotřebou, tj. při zapnutí se spotřeba skokově velmi zvýší a rychle klesne poskytuje výchozí metoda výpočtu – trapezoidal – velmi špatné výsledky a je potřeba ji změnit na left:

sensor:
  - platform: integration
    source: sensor.current_power
    method: left
    unit_prefix: k

3. Měřiče spotřeby (kWh)

Předchozí senzor spotřebované energie nám poskytuje akumulovanou hodnotu, tj. celkovou spotřebu v kWh. Velmi často bychom však potřebovali i spotřebu za určitý časový interval.

Pro tento účel máme v HomeAssistentovi senzory typu utility_meter, které umí akumulovat hodnoty za určitý časový interval a po jeho vypršení se automaticky resetovat na hodnotu 0.

Záleží pak skutečně na vašich potřebách, ale obecně mohou být tyto měřiče:

  • hodinové – hourly
  • denní – daily
  • týdenní – weekly
  • měsíční – montly
  • každý druhý měsíc – bimonthly
  • kvartální (každý třetí měsíc) – quarterly
  • roční – yearly

Máme dvě možnosti konfigurace – přes UI a nebo přes YAML. UI konfigurace by měla být dostačná a preferovaná pro většinu případů, nicméně YAML poskytuje rozšířenější možnosti a použijeme ji tak pokud nám UI nestačí.

UI konfigurace

Přidání nového najdeme v NastaveníZařízení a službyPomocníciVytvořit pomocníka.

  • jméno (name) – pojmenování měřiče
  • vstupní senzor (input sensor) – senzorová entita v kWh použitá pro měření
  • cyklus vynulování měřiče (meter reset cycle) – perioda vynulování měřiče, tj. například pokud chceme denní spotřebu nastavíme na Denně
  • posun vynulování měřiče (meter reset offset ) – pokud potřebujeme, můžeme posunout resetování měřiče ve dnech
  • podporované tarify (supported tariffs) – seznam tarifů, které chceme použít pro měřič
  • čistá spotřeba (net consumption) – pokud je zapnuto pak je může měřič jak zvyšovat tak snižovat
  • rozdílové hodnoty (delta values) – pokud je zapnuto, očekáváme na vstupu pouze rozdílové hodnoty od posledního měření

⚠️ Pokud vytvoříte měřák přes UI pak jednotlivé entity budou mít vygenerované ID podle nastavení pole jméno, tj. např. Měšíční spotřeba ▸ select.mesicni_spotreba.

V případě příkladu výše se pak po odeslání v HomeAssistantovi vytvoří tři nové entity – jedna obsahující aktuálně vybraný tarif a další dvě s měřáky pro každý z tarifů.

YAML konfigurace

Do hlavního konfiguračního soubor configuration.yaml přidáme:

utility_meter:
  monthly_energy:
    source: sensor.energy_in_kwh
    cycle: monthly

Jak vidíme v základu budeme potřebovat pouze dva parametry – zdroj, což může být přímo senzorová entita v kWh, a nebo použijeme výstup z předchozího Riemannova součtu a délka cyklu.

Pokud máme dva různé tarify ceny elektrické energie během dne, tzv. nízký tarif (NT) a vysoký tarif (VT) pak dává smysl rozdělit měřáky do dvou skupin. Konfigurace pak bude obsahovat navíc sekci tariffs:

utility_meter:
  monthly_energy:
    source: sensor.energy_in_kwh
    cycle: monthly
    tariffs:
     - vt
     - nt

Pro jednotlivé čítače se nám pak automaticky vytvoří dvojice senzorů, která bude mít na konci _vt a nebo _nt, tj. např. sensor.monthly_energy_vt a sensor.monthly_energy_nt a zároveň entity s aktuálním tarifem a možností přepínání mezi nimi, např. select.monthly_energy.

Nastavení přepínání tarifů

Pokud jsme si vytvořili měřák s tarify pak budeme potřebovat mezi tarify přepínat. To asi nebudeme chtít dělat ručně a pak si na to bude potřeba připravit automatizaci. Pokud tarify nepotřebujete, tak můžete následující část přeskočit.

Předpokládejme, že máme přepínání mezi nízkým a vysokým tariffem nastaveno takto:

  • vysoký tarif: od 9:00 do 21:00
  • nízký tarif: od 21:00 do 9:00 následujícího dne

Pro přepínání mezi jednotlivými si vytvoříme automatizaci buď ve skriptu:

  trigger:
    - platform: time
      at: '09:00:00'
      variables:
        tariff: "vt"
    - platform: time
      at: '21:00:00'
      variables:
        tariff: "nt"
  action:
    - service: select.select_option
      target:
        entity_id: select.monthly_energy
      data:
        option: "{{ tariff }}"

Bohužel díky použití variables u spouštěčů není v aktuální verzi možné vytvořit automatizaci plně přes UI, ale můžete použít editaci v YAML režimu.

Pokud je vše nastaveno správně, měli byste v entitě Měsíční spotřeba vidět přepínání tarifů pomocí automatizace:

4. Peněžní vyjádření spotřeby (Kč)

Pokud známe cenu kWh pak může být užitečné si hodnotu z např. měsíčního čítače převést na peněžní vyjádření.

Toho docílíme například použitím template typu senzor:

template:
  - sensor:
      - name: "Monthly energy price"
        unit_of_measurement: "Kč"
        state: "{{ (states('sensor.monthly_energy') | float * <cenaZaKwh>) | round(2) }}"

… hodnotu <cenaZaKwh> nahraďte vaší cenou za kWh.

Jakým zařízením měřit spotřebu

Výše jsme si popsali jak v HomeAssistantovi nastavit měřáky spotřeby energie a předpokládali jsme, že na vstupu už máme nějaká data a ty můžeme získat z všemožných produktů.

My si v tomto článku ukážeme jen malý vzorek těch, které používám nejvíce.

WiFi měření spotřeby pomocí Shelly přímo na drátu

První produkt, který si v rychlosti ukážeme je Shelly EM, který umí měřit spotřebu pomocí svorky kolem drátu. Je tak ideální zejména na hlavním přívodu v rozvaděči, kdy si takto můžeme monitorovat spotřebu všech okruhů/spotřebičů dohromady.

Shelly EM

WiFi měřák spotřeby a spínač pro elektroinstalace s až dvěmi nezávislými senzory.

1800 Kč 1ks

Kromě samotného Shelly EM budeme potřebovat ještě sondu. Tu můžeme připojit pouze jednu a nebo dvě

Shelly Tran 50A

Měřící svorka 50 A pro Shelly EM

420 Kč 1ks

Integrace Shelly je zpravidla velmi jednodouchá, jelikož by měla zafungovat automatická detekce nového zařízení v HomeAssistantovi. Pokud produkt z nějakého důvodu nevidíte je možné je přidat ručně pomocí integrace Shelly

V HomeAssistentovi pak máte ke každé svorce hned několik entit

Zigbee Zásuvka připárována do deCONZu

Jako ukázku si dáme Zigbee zásuvku od firmy BlitzWolf s označením BW-SPH16, kterou jsme připárovali do Zigbee systému deCONZ.

BlitzWolf BW-SHP13

Zigbee 3.0 chytrá zásuvka s měřením spotřeby

440 Kč 1ks, 780 Kč 2ks, 1100 Kč 3ks

Informace o aktuální spotřeba je součástí clusteru Electrical Measurement Cluster a konkrétně se jedná o položku Active Power:

V HomeAssistentovi je pak tato hodnota přístupná pod senzorem sensor.<název>_power. Kromě tohoto senzoru máme k dispozici ještě entity obsahující celkovou spotřebu v kWh s názvem sensor.<název>_consumption, kterou ale nevyužijeme.

Nejprve opět začneme Reimannovým součtem:

sensor:
  - platform: integration
    source: sensor.<název>_power
    name: <název>_energy_spend
    unit_prefix: k   

A další postup už je úplně stejný jako u WiFi verze, tj: nejprve čítače

utility_meter:
  <název>_consumption_hourly:
    source: sensor.<název>_energy_spend
    cycle: hourly      
  <název>_consumption_daily:
    source: sensor.<název>_energy_spend
    cycle: daily
  <název>_consumption_monthly:
    source: sensor.<název>_energy_spend
    cycle: monthly  

a můžeme si ještě měsíční spotřebuju vyjádřit v Kč:

template:
  - sensor:
      - name: "<Název> monthly energy price"
        unit_of_measurement: "Kč"
        state: "{{ (states('sensor.<název>_consumption_monthly') | float * <cenaZaKwh>) | round(2) }}"

Nakonci pak můžeme mít vše dostupné v uživatelském rozhraní HA:

Tím jsem snad více než vyčerpal základy měření spotřeby v HomeAssistantovi a uvedl pro názornost dvě příklady. Musím přiznat, že Internet je plný spousty chybných postupů a zřejmě v tomhle má dost lidí zmatek – i mě to nějakou dobu trvalo než jsem se zorientoval.

Pokud byste našli jakoukoliv nepřesnost či oblast, která by se hodila ještě rozšířit ozvěte se v komentářích. Zároveň jestli máte nějaké zajímavé praktické využití budu rád když nám dáte vědět také.

Kompletní série o HomeAsistantovi obsahuje následující články:

  • 1. část – Instalace HomeAsisstent
  • 2. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace Xiaomi Mijia a Aqara
  • 10. část – Integrace vlastní Zigbee gateway
  • 11. část – Vzdálený přístup do Hass.io z Internetu
  • 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
  • 13. část – Hass.io Add-ony, které používám
  • 14. část – Integrace Xiaomi Mi Flora
  • 15. část – Integrace Withings (Nokia)
  • 16. část – náhrada SQLite databází MySQL
  • 17. část – HACS Add-ony – instalace a konfigurace
  • 18. část – Integrace Sonoff s firmware eWeLink
  • 19. část – nová integrace Sonoff pro HA
  • 20. část – měření spotřeby
  • 21. část – automatické zálohy a obnovení ze zálohy
  • 22. část – napojení hlasového asistenta Amazon Alexa
  • 23. část – automatické zálohy na síťový sdílení disk (Samba)
  • 24. část – Bluetooth zařízení a ESPHome proxy
  • 25. část – nefunkční aktualizace HomeAssistanta
  • 26. část – integrace SwitchBot produktů
  • 27. část – integrace fotovoltaiky Growatt

9 comments

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • A co měření spotřeby přes S0 impulsy na elektroměru. Co použít nejlépe Tasmota/ESPhome/ESPeasy

    • Dobrý den Libore,

      máte rozjeté měření přes S0 výstup elektroměru, nejlépena ESPHome?

      Děkuji za vaší odpověď Radim

  • Měření přes zásuvky BlitzWolf mám rozjeté a funguje to dobře, včetně denních a měsíčních hodnot, ale mám dotaz jak to udělat abych měl součet za období např. květen 2020 až květen 2021 a pak se to vynulovalo.

    Ohledně impulsů mám připraven Vemos D1 s Tasmotou, který je připojen na elektroměr který poskytuje impulzy. Tasmota počítá impulsy (count). Ještě to musím integrovat do HA, ale to už nebude tak složité.

    • Zdravím Petře,

      chci se pustit do měření spotřeby elektrické energie. Velice mě zaujal způsob počítání impulzů z elektroměru (Vemos D1 s Tasmotou). Jak se dá řešit vysoký a nízký tarif? Dá se řešit na Vemos D1 v Tasmotě jako dva čítače? Do HA by se již přenesly tyto dvě hodnoty.

    • prosím, nemohl by jsi se podělit o configuration.yaml ?
      docela s tím bojuji a potřeboval bych vidět jak to vypadá v reálu.
      díky Moc
      Vilém

  • Ahoj, může mi někdo pomoc, potřebuji poradit jak měřit spotřebu Riemannovým součtem v HA, ze senzoru, který když je hodnota záporná kupuje/ spotřebovává ze sítě/ a když je hodnota kladná tak energii dodává do síě. Potřebuji měřit nákup případně i prodej.

    • Shelly 3EM meri spotrebu pripadne i prodej po jednotlivych fazich a je primo podpora v HA bohuzel cena je primerena konfortu aktualne je cena 3749 v DATARTu a maji posledni kus 🙂

  • Zdravím, díky (nejen) tomuto skvělému článku jsem se konečně odhodlal koupit a flashnout (pomocí tuya-convert) zásuvky, které tu zmiňujete(BlitzWolf BW-SHP10-P), chci se zeptat: Aktuálně tam mám Tasmota a nevypadá to vůbec špatně, ale velmi se mi líbí jak funguje ESPHome, ale nebyl jsem schopen najít nějaký template, který by mi umožnil vygenerovat FW pro ESPHome. Vy tyto zásuvky používáte s ESPHome? Můžete mě nasměrovat, pravděpodobně mi ještě něco uniká. Díky

    • Díky za dotaz, ale ESPHome používám spíše na “skládačky” z jednotlivých dílů. V hotových produktech mám zatím Tasmotu.. nicméně bude zajímavé sledovat kam se ESPHome posune jelikož se stal nedávno součástí teamu pracující na HomeAssistantovi.