blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 12 část – zobrazení senzorových dat pomocí InfluxDB a Grafany

Pomocí sensorů v HomeAssistentovi můžeme sbírat senzorová data z mnoha zdrojů. Samotné zobrazení historických dat pak není přímo v HomeAssistentovi úplně ideální a tak si ukážeme jak na to lépe.

Jedním z řešení zobrazení historických senzorových data je použítí kombinace time series databáze – samotný Homeassistant používá v základní konfiguraci souborovou databázi SQLite, která není úplně nejlepší volbou pro tato data – a webového rozhraní Grafana.

InfluxDB

InfluxDb je databázový systém, který je specializovaný na ukládání time series data, tj. dat které jsou přímo spojené s časem.

Instalace InfluxDB

Nejrychlejším řešením pokud máte Hass.io je opět použití addonu, který najdeme v sekci Hass.io -> Add-on store -> Community Hass.io Add-ons.

Addon InfluxDB v Hass.io
Addon InfluxDB v Hass.io
Addon InfluxDB v Hass.io

V základní konfiguraci není víceméně potřeba nic měnit, pouze pro první spuštění se může hodit nastavení Log levelu na Info.

{
  "log_level": "info",
  "auth": true,
  "ssl": false,
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem"
}

Addon má už několik verzí podporu Ingress integrace, tj. v nastavení si můžeme zapnout Show in sidebar a v hlavním menu HomeAssistenta se nám objeví nová položka InfluxDB.

Konfigurace InfluxDB

Na položku InfluxDB v menu HomeAssistenta klikneme a měli bychom být automaticky přihlášeni. V levém menu si najdeme předpoklední položku (symbol koruny), což je InfluxDB admin, kde přidáme novou databázi s názvem homeassistent.

Přidání databáze do InfluxDB
Přidání databáze do InfluxDB

Dalším krokem je pak přidání uživatele přes záložku Users. Můžeme přidat uživatele dva – jednoho použijeme pro přístup z HomeAssistentu, tj. ukládání dat a druhého pro čtení dat do Grafany.

Přidání uživatele do InfluxDB
Přidání uživatele do InfluxDB
Nastavení práv do databáze
Nastavení práv do databáze

Tím máme část InfluxDB hotovou a můžeme se podívat na nastavení HomeAssistenta pro zapisování hodnot senzorů.

Konfigurace HomeAsssistenta pro zapisování senzorových dat

Veškerou konfiguraci můžeme provést přímo v hlavním konfiguračním souboru configuration.yaml, kde přidáme nastavení s názvem influxdb.

Vyplníme následující

  • host – název serveru, kde běží influxdb – v našem případě pokud jsme influxdb instalovali přes addon Hass.io to bude vždy hodnota a0d7b954-influxdb
  • database – název databáze pro Homeassistent data, kterou jsme vytvořili výše
  • username / password – uživatelské jméno a heslo pro přístup do InfluxDB, které jsme vytvořili výše
  • include -> entities – tento parameter je nepovinný. Pokud ho nevyplníme budou zahrnuty automaticky všechny senzory. Já pro můj účel používám vlastnost include, která pak obsahuje seznam vše senzorů z kterých chceme data do InfluxDB ukládat. Můžeme použít i obrácený způsob, tj. Exclude a automaticky bude přidáno vše, kromě vyjmenovaných entit.

Konfigurace pak může vypadat například takto:

influxdb:
  host: a0d7b954-influxdb
  database: homeassistant
  username: !secret influxdb_username
  password: !secret influxdb_password
  include:
    entities:
      - sensor.pocasi_temperature
      - sensor.pocasi_humidity
      - sensor.pocasi_pressure
      - sensor.temperature_158d00025c0218
      - sensor.temperature_158d00025e949f
      - sensor.humidity_158d00025c0218
      - sensor.humidity_158d00025e949f
      - sensor.xiaomi_miio_device_temp
      - sensor.xiaomi_miio_device_humidity
      - sensor.xiaomi_miio_device_aqi
      - sensor.myroom_xiaomi_switch_battery_level
      - sensor.myroom_xiaomi_temp_battery_level

Grafana

Posledním dílkem do naší dnešní skládačky je Grafana – webové rozhraní pro analýzu a zobrazení dat nejen z InfluxDB.

Instalace Grafany

V případě Hass.io je instalace opět jednoduchá. V addonech si najdeme položky Grafana .

Addon Grafana v Hass.io
Addon Grafana v Hass.io

Konfiguraci můžeme opět nechat ve výchozím stavu. Pouze pro první spuštění nebo při problémech se může hodit nastavení Log Level na info.

{
  "log_level": "info",
  "ssl": false,
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "plugins": [],
  "env_vars": []
}

Grafana bohužel nemá zatím Ingress podporu pro Homeassistent a tak ji musíme buď do menu přidat ručně a nebo spoustit v nové záložce – výchozím portem je 3000.

Nastavení datového zdroje InfluxDB pro Grafanu

Po zadání správné adresy do prohlížeče bychom měli vidět přihlašovací obrazovku Grafany. Po výchozí instalaci použijeme tyto údaje: admin / hassio.

Přihlašovací obrazovka Grafana
Přihlašovací obrazovka Grafana

A průvodce na hlavní obrazovce bude rovnou posunutý na druhý krok – přidání datového zdroj – Add data source.

Kroky po instalaci Grafany
Kroky po instalaci Grafany

A vyplníme následující údaje:

  • Name – název zdroje dat, např. InfluxDB
  • HTTP -> URL – pokud jsme instalovali přes addon Hassio pak http://a0d7b954-influxdb:8086
  • InfluxDB Details -> Database – název InfluxDB, v našem případě homeassistant
  • InfluxDB Details -> User / Password – uživatelské jméno a heslo do influxDB – můžeme použít stejné jako pro Homeassistent a nebo speciální pro Grafanu
Nastavení datového zdroje Grafany z InfluxDB
Nastavení datového zdroje Grafany z InfluxDB

Přidání grafu na Dashboard

Dashboard je základním kamenem Grafany. Do Dashboardu pak přidáváme jednotlivé grafy, kterou jsou v tzv. panelech.

Přidání nového panelu Grafany
Přidání nového panelu Grafany

Každý panel má dvě části:

  1. Dotazovací část – zde definujeme, která data z datového zdroje chceme zobrazit
  2. Vizuální část – zde nastavíme, jak má vypadat následná grafická reprezentace dat z prvního kroku

V dotazovací části tak můžeme například vybrat, že chceme zobrazit údaj v stupních Celsia a omezit pouze na jednu entity, která odpovídá názvu entity v HomeAssistentovi.

Dotazovací část nastavení panelu Grafany
Dotazovací část nastavení panelu Grafany

Ve vizuální části pak určíme typ grafu, jak reprezentovat prázdná místa (časové oblasti pro která nemáme data) a také co se má zobrazit na jednotlivých osách a v legendě.

Vizuální část nastavení panelu Grafany
Vizuální část nastavení panelu Grafany

Výsledný graf pro tři senzory v jednom grafu pak může vypadat například takto:

Vizuální reprezentace senzorových data v Grafaně
Vizuální reprezentace senzorových data v Grafaně

Kontrola dat v InfluxDB

Můžete se dostat do situace, kdy si z jakéhokoliv důvodu nejste jisti zda jsou data správně z HomeAssistenta předávána do InfluxDB a potažmo pak zobrazena v Grafaně.

Nejrychlejší způsob jak to zkusit je spustit si administraci InfluxDB – pokud máte instalaci přes Hassio addon pak můžete přidat rychlou ikonku do levého menu – a v té pak vybere možnost Explore.

V dolním menu DB.RetentionPolicy vybereme položku homeassistant.autogen a podle jednotky sledované hodnoty – např. stupně celsia si můžeme zobrazit všechny entity, z kterým máme údaje. Pro zobrazení grafu si ještě v sekci Fields vybereme value a změníme filter grafu na Past 24h a měli bychom vidět např. graf teploty za posledních 24 hodin.

Zobrazení dat v InfluxDB

Pokud máte jakékoliv dotazy neváhejte se zeptat v komentářech. Možností použití těchto dvou technologií jsou poměrně obsáhle a já jsem se tak snažil ukázat jak na to v jednom konkrétním případě.

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

23 comments

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

  • Malicka oprava: HA nepouziva LiteSQL, ale SQLite 😉 (SQLite je databaza, LiteSQL je C++ kniznica pre pracu s SQLite databazami)

  • Dobry den.
    Nasel jsem na aliexpresu termostat na ovladani kotle
    US $35.47 31% Off | Echo Alexa WiFi Thermostat Smart Programmable Water/Gas Boiler Heating Floor Winter Voice Control Room Temperature Controller
    https://s.click.aliexpress.com/e/0Dyhx88
    Sel by preprogramovat pro ovladani pres Home Asistant. Mam IOS a s variantu pro homekit jsem nenasel. Myslim, ze by to pro Vas mohlo byt zajimave tema.
    Dekuji za Vase skvele clanky a doufam, ze na toto tema napisete dalsi.
    S pozdravem Martin

    PS: nepodarilo se mi odeslat vam normalni email, pres Vas kontakt. Klidne tetno dotaz nezverejnujte je jen pro Vas

    • Taky se primlouvam za nejaky termostat propojeny s hassio aby se daly ovladat zigbee hlavice a spinac pro kotel.

  • Dobry den jsem zacatecnik a podle navodu se snazim nastavit influx db, HA a grafana. Mam sonoff TH s Tasmotou a Rpi3+ . vlastne vsechno probiha v pohode jen grafana, kdyz zadavam data source tak pise „Network Error: Bad Gateway(502)“ nejak se přes to nedokazu posunout. Nevite cim by to mohlo byt?

  • Zdravím, pokusil jsem se na základě Vašeho článku získat data z Xiaomi senzorů které mám v HA (zde vidím akturíl. teploty….) bohužel na grafaně nevidím nic – žádná data to netahá můžete mi nějak poradit?

    Můžeme se třeba propojit online a podívat se na to?
    díky

    • Omlouvám, se ale momentálně nejsem z časových důvodů vám schopen přímo online pomoct. Nicméně rozšířil jsem článek o nový odstavec – Kontrola dat v InfluxDB – zkuste se na něj prosím podívat, zda vám to nepomůže.

  • Řešíte někdo nějak zalohovaní DB Influxu? Ideální by bylo to řešit vzdáleně, ale nenašel jsem způsob jak nastavit bind-address pro port 8088.

    • Zálohuju podle tohoto článku.
      http://stavba.web-systemy.net/index.php/2018/11/25/jak-zalohovat-influxdb/ Akorát to ukládám rovnou na síťovej disk. Autor to ukládá lokálně a pak to nějak synchronizuje s nasem, to jsem už neštudoval. Běží to pár tejdnů a jednou se to seklo (zatím netuším proč) a pár dní to nezálohovalo. Na síťovym disku mám vždy půlnoční zálohy z posledních 3 dnů.

  • Jen poznámka. Časem se s HA (ale i s jakýmkoli jiným podobným systémem) dostanete do fáze, že budete chtít mít data senzorů uchována měsíce a roky pozpátku. Zjistíte, že když prostě jen prodloužíte retenční dobu, databáze neskutečně naroste a i špičkově optimalizovaný Influx DB to na Raspberry nebude stíhat a odezvy budou nepoužitelně dlouhé. Influx DB má na tohle mechanizmus pojmenovaný „Continuous queries“, kdy ve spojení s „Retention policy“ můžete nakonfigurovat proces, který bude data udržovat v relativně malém objemu i několik let zpět. Je to samozřejmě něco za něco a jemnost dat je menší, čím jsou data starší (např. poslední týden vidím změnu teploty v pokoji každou minutu, poslední měsíc, každých 10 minut a u starších dat vidím už jen jednu průměrnou teplotu za každou hodinu – toto nastavujete v Influx DB, takže vás senzor teploty může klidně pořád posílat data o teplotě každých 10 sekund). Je možná trochu těžší Continuous queries a Retention policy ze začátku pochopit a pak je trochu pracné na všechna vaše data tyto queries napsat, ale když to pak dáte, databáze Influx DB vám nenaroste do šílených gigabajtů a vy budete mít i tak rozumně jemná data i třeba 10 let zpět.

    • Nechtěl by jste prosím trošku tento návod více rozvést? to je přesně ono co bych také rád používal. Ono to tak totiž funguje automaticky v Domoticz, tady v HA je to více složité.

  • Měl bych dotaz. Používám domoticz a přecházím na HA. Jediný problém co neumím vyřešit je zobrazení spotřeby za konkretní měsíc. Umím udělat za posledních 30 dní ale už ne graf všech měsíců zpětně (stačila by i jen hodnota). nemáte někdo nápad jak na to?

    • Jak jste vyřešil těch 30 dní? V Domoticz byl super elektroměr, ten v HA hodně postrádám.

  • Zdravím,

    Mohu se zeptat jak v Grafaně docílím použití friendly names popisků? Předpokládám že na grafu v článku to tak máte, tj. že zobrazíte všechny teploty do jednoho grafu, a legendu (popis jednotlivých datových řad) naplníte přes lidsky příjemný atribut friendly_names.

    Bohužel se mi přes všechny pokusy toto nepovedlo nakonfigurovat.
    Děkuji

  • Rád bych napojil homeassistant na influxdb, kterou již provozuji.
    Pokud se nemýlím, tak doplněk si při instalaci vytvoří docker, ve kterém influx jede.
    Jde to i bez dockeru?
    Jde jen odkázat na běžící influx? Jak? Nespouštět doplněk a pouze změnit konfiguraci?

  • Opět skvělý článek. Začínám poznávat krásy Grafany a mrzí mě, že jsem jí neotestoval už dřív. Díky Grafaně se mi podařilo optimalizovat práci kondenzačního kotle v zimním období. Možná by stálo ještě napsat o instalaci pluginu „natel-discrete-panel“
    (https://grafana.com/grafana/plugins/natel-discrete-panel)
    Někomu se může hodit jako doplněk „nečíselných“ stavů ke grafům.

  • Neřešil jste někdo uložení hodnoty do influxDB přes automatizaci? Chci ukládat hodnotu last_period z utility metru a tam by bylo zbytečné to ukládat 200x za den. Jediné co mě napadá je přes CURL, ale to je takové neohrabané.