Хранение данных истории 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
.