Stupid House

Хранение данных истории Home Assistant в MySQL


Состояние переключателей, значения переменных, историю состояний устройств и данные с датчиков Home Assistant хранит в файле home-assistant_v2.db. Сохраняемых данных настолько много, что за день база вырастает на 30 мегабайт для дома из 50 устройств и датчиков и это не предел, т.к. количество устройств будет увеличиваться, появляться новые дополнительные помощники (Helpers), создаваться новые автоматизации. Перенос базы данных на внешний MySQL сервер позволит повысить скорость доступа к данным и увеличить срок жизни основного хранилища, поскольку в качестве основного накопителя Raspberry Pi используется flash устройство, у которого показатели чтения - записи и количество циклов перезаписи ограничены.

Что бы организовать такую схему хранения необходимо следующее:

  • Выделенный компьютер с установленным MySQL
  • Создать базу данных на сервере
  • Создать пользователя, для доступа к БД
  • Настроить Home Assistant

 

 

Создание БД

Выполняем вход на MySQL сервер привилегированным пользователем с правами на создание новых баз, пользователей и предоставление доступа:

$ mysql -u <strong>username </strong>-p

 

Вводим пароль пользователя. Создаем базу данных с именем home_assistant:

mysql> CREATE SCHEMA `home_assistant` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Создаем пользователя homeassistant, паролем hasspasswd с доступом к серверу из сети 192.168.1.0/24:

mysql> CREATE USER '<strong>homeassistant</strong>'@'<strong>192.168.1.%</strong>' IDENTIFIED BY '<strong>hasspasswd</strong>';

Предоставляем доступ пользователю homeassistant к базе home_assistant:

mysql> GRANT ALL PRIVILEGES ON home_assistant.* TO 'homeassistant'@'192.168.1.%';

Перезагружаем права пользователей и выходим:

mysql> FLUSH PRIVILEGES;
mysql> exit;

 

Настройка Home Assistant

Заходим по SSH на сервер Home Assistant. Устанавливаем вспомогательную библиотеку:

$ sudo apt-get install libmysqlclient-dev

Останавливаем сервис Home Assistant, переходим в учетную запись homeassistant, устанавливаем библиотеку mysqlclient для Pyton:

$ sudo -u homeassistant -H -s
$ source /srv/homeassistant/bin/activate
$ pip3 install mysqlclient

Выходим из учетной записи homeassistant.

В файл configuration.yaml добавляем настройки для подключения:

recorder:
  db_url: mysql://<strong>homeassistant</strong>:<strong>hasspasswd</strong>@<strong>mysql_server_address</strong>/<strong>home_assistant</strong>

Запускаем сервис Home Assistant. Необходимые таблицы будут созданы автоматически. Файл home-assistant_v2.db можно удалить. Для примера выше сервер Home Assistant должен находиться в сети 192.168.1.* и не забываем, что если к файлам конфигурации есть сторонний доступ, то учетные данные и пароли лучше хранить в файле secrets.yaml.

Автор: muxa, 14.07.2020
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии