blog.vyoralek.cz

Centrum chytré domácnosti – HomeAssistant (Hass.io) – 16 část – náhrada SQLite databází MySQL

Ve výchozí instalaci HomeAssistanta se provádí veškeré logování historie do souborové databáze SQLite a my se podíváme jak toto změnit a ukládat do plného databázového systému.

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 DB
  • purge_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ázeFormát URL adresa připojení
SQLite (výchozí)sqlite:////PATH/TO/DB_NAME
MariaDBmysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8
MySQLmysql://user:password@SERVER_IP/DB_NAME?charset=utf8
PostgreSQLpostgresql://user:password@SERVER_IP/DB_NAME
MS SQL Servermssql+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 – Představení HomeAsisstent – tento článek
  • 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

2 komentáře

Napsat komentář

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

  • 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.

  • 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 🙂

%d blogerům se to líbí: