🎙 Poslední aktualizace článku 5.12.2019. Pokud najdete nějaké rozdíly v aktuálním stavu, dejte vědět v komentářích, díky.
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.
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.
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.
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 .
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.
A průvodce na hlavní obrazovce bude rovnou posunutý na druhý krok – přidání datového zdroj – Add data source.
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
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.
Každý panel má dvě části:
- Dotazovací část – zde definujeme, která data z datového zdroje chceme zobrazit
- 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.
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ě.
Výsledný graf pro tři senzory v jednom grafu pak může vypadat například takto:
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.
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. část –
Integrace Sonoff s firmware Sonoff-Tasmota - 3. část –
Integrace Homekit - 4. část –
Integrace Sonoff s firmware Sonoff-Tasmota – 2 část - 5. část –
Integrace s Wemos D1 asenzory teploty - 6. část –
Integrace Sonoff s firmware ESPHome - 7. část –
Integrace Sonoff POW s firmware ESPHome - 8. část –
Integrace LED Magic Home s firmware ESPHome - 9. část –
Integrace 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
Malicka oprava: HA nepouziva LiteSQL, ale SQLite 😉 (SQLite je databaza, LiteSQL je C++ kniznica pre pracu s SQLite databazami)
Ups 🙂 Díky za upozornění.
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
Zdravím, přes aliasy u query jste to zkoušel?
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?
https://www.home-assistant.io/integrations/influxdb/
Úplně stejně jako když je v socketu.
… dockeru.
Úplně stejně?
Když spustím doplněk, tak se snaží spustit i docker. TO nechci. bez spuštěného doplňku mi to nefunguje – ale chyby může být i jinde.
Jestli bezi influxdb tak doplnek neni potreba. Napojeni na stavajici influxdb se provede v configugration.yaml stejne jako napojeni na db v dockeru.
Díky moc – vyřešeno. Měl jsem chybu v 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é.