🎙 Poslední aktualizace článku 27.10.2019. Pokud najdete nějaké rozdíly v aktuálním stavu, dejte vědět v komentářích, díky.
Recorder
Komponenta HomeAssistanta, který se stará o ukládání veškerých historických dat se jmenuje Recorder a v základní konfiguraci můžeme u ní nastavit:
db_url
– URL adresa připojení do DBpurge_keep_days
– počet dnů, pro které chceme zachovat historii – výchozí konfigurace je 10 dnípurge_interval
– jak často (ve dnech) spouštět mazací proceduru – výchozí hodnota je 1 – každý den, pokud nastavíte na 0 nebude se automaticky vůbec spouštět
Pokud máme entit v systému opravdu hodně může se nám hodit ještě možnost vyloužit některé domény entit a nebo samotné entity z logování pomocí volby exclude
– více v příkladu.
Příklad konfigurace
Databáze MySQL, budeme zachovávat historii pouze pro poslední 3 dny a chceme vyloučit pár položek z logování.
recorder:
db_url: mysql+pymysql://homeassistant:homeassistant@<IPADRESA_HASSIO>/homeassistant?charset=utf8
purge_keep_days: 3
purge_interval: 1
exclude:
domains:
- automation
- weblink
- updater
entities:
- sun.sun
Jak jsme si již řekli ve výchozí instalaci je použita souborová databáze SQLite, která má velkou výhodu v tom, že je jednoduchá na konfiguraci a nemusí se instalovat. Pokud však budeme mít sensorů hodně, dříve nebo později zjistíme, že se HomeAssistant stává velmi pomalý a datový soubor má velikost v řádu gigabajtů.
Jednou z možností jak tento problém vyřešit je zmenšit počet dnů, který uchováváme – pomocí parametru purge_keep_days
a nebo migrovat na jiný způsob ukládání dat, resp. do jiné databáze.
Podporované databáze
Databáze | Formát URL adresa připojení |
SQLite (výchozí) | sqlite:////PATH/TO/DB_NAME |
MariaDB | mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8 |
MySQL | mysql://user:password@SERVER_IP/DB_NAME?charset=utf8 |
PostgreSQL | postgresql://user:password@SERVER_IP/DB_NAME |
MS SQL Server | mssql+pymssql://user:password@SERVER_IP/DB_NAME?charset=utf8 |
Konfigurace pro MariaDB / MySQL
My si nyní ukážeme jak vše nastavit konkrétně pro MariaDB / MySQL. Instalaci samotného databázového serveru zde popisovat nebudu – kdyby se na tom někdo zasekl dejte vědět a případně to sem doplním.
Celý postup je v následujících 4 krocích.
1. Připojení do DB
mysql -u root -p
… zadejte MySQL root heslo a zmáčkněte Enter.
2. Vytvoření databáze
CREATE DATABASE homeassistant;
3. Vytvoření uživatele
CREATE USER 'homeassistant'@'<IPADRESA_HASSIO>' IDENTIFIED BY 'homeassistant';
GRANT DROP, INSERT, EXECUTE, UPDATE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, CREATE ROUTINE, GRANT OPTION, TRIGGER, LOCK TABLES, EVENT, REFERENCES, ALTER ROUTINE, SHOW VIEW, INDEX, SELECT, CREATE, ALTER ON `homeassistant`.* TO 'homeassistant'@'<IPADRESA_HASSIO>';
FLUSH PRIVILEGES;
4. Nastavení HomeAssistanta
Jak jsme si již ukázali na začátku o celou agendu ukládání historických dat se stará komponenta recorder, u které nastavíme URL:
Pro MariaDB a nebo MySQL 8.0
db_url: mysql+pymysql://homeassistant:homeassistant@<IPADRESA_HASSIO>/homeassistant?charset=utf8
Pro MySQL <8.0
db_url: mysql://homeassistant:homeassistant@<IPADRESA_HASSIO>/homeassistant?charset=utf8
Když se po restartu podíváme do MySQL databáze měli bychom vidět automaticky vytvořené čtyři tabulky a v nich už první záznamy.
Celý HomeAssistant je po této změně mnohem svižnější. Budu to ještě pár dnů sledovat, jestli se neobjeví nějaký zádrhel, ale zatím to vypadá jako upgrade k doporučení.
Pokud už s tímto máte někdo zkušenosti, dejte prosím vědět do komentářů.
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
Souhlasim ze standardni DB je pri vetsim mnozstvi senzoru neudrzitelna. Po prechodu na Maria DB to bylo asi mesic lepsi, pak opet zacalo zamrzavani systemu a hlavne se mi nikdy nepodarilo obnovit tu maria DB z recovery backupu. Nemel sem tam zadnou rychlou SD kartu, takze to byla cast toho problemu, ale nekonec sem skoncil na Amazon AWS, je to na rok zdarma, takze za rok to asi budu resit znova, ale rychlost je daleko lepsi a mam na to napojedeny i druhy HA z virtualky, takze jeden je hlavni a druhy jen cte data a da se na nem testovat.
Hlavna db ma mat max 10dni historiu. Ak chces long time history tak to davaj do influx…
To Fixx – O jakém množství senzorů se bavíme? Mě Hass.IO běží na klasické virtualizaci KVM (vm má k dispozici 2x cpu amd64, 2 GB RAM, 32GB VMDK (fyzicky na SSD)) a nemám pocit, že by se to nějak extra zpomalovalo? Používám to pro sledování-řízení teploty, el. spotřeby a řízení zásuvek a světel atd… v klasickém panelákovém bytě bytě.
Pohrávám si s myšlenkou, že to celé migruji na RPi4-4GB. Přece se znám a vím, že do všeho vrtám a zrovna tohle považuji za docela kritický systém. Takže budu spát klidněji, když to bude běžet odděleně.
Jinak musím moc poděkovat p. Vyorálkovi za velkou inspiraci 🙂
Moc pěkný článek.
Škoda, že nemůže být primární databází pro data ze senzorů Influx.