Подключение регуляторов к сетевому интерфейсу Home Assistant

Текущие данные от приборов в режиме реального времени
Текущие данные от приборов в режиме реального времени

Данная инструкция описывает подключение регуляторов к Home Assistant, а также установку образа Home Assistant на виртуальную машину под Windows на ноутбук или персональный компьютер. По запросу могу скинуть образ  системы для установки на Raspberry Pi4 с автоматизациями и дополнениями.

Устройства обмениваются сообщениями через MQTT, протокол обмена данными в умных домах и IoT.  Этот протокол очень легкий, работает через Mosquitto или EMQX брокеры, передает сообщения между программами по сети IP, имеет прикладной уровень. Он часто используется шлюзами, серверами и контроллерами, лежит между всеми экосистемами и одинаково работает по всему миру. Это самый массовый протокол обмена, самый массовый DIY, самый массовый промышленный IoT.  Не требует и не зависит от интеграции сторонних сервисов, облаков и протоколов, например, Zigbee, Z-Wave, Tuya, Алиса, Modbus.

Список приборов:

1. Насос дозатор ph
2. Насос дозатор удобрений TDS
3. Регулятор углекислого газа
4. Диммер ШИМ регулятор 12-24 В
5. Расходомер для подключения 11 датчиков Холла

Home Assistant (HA) — это open-source платформа для автоматизации умного дома, совместимая с устройствами различных производителей. Она позволяет создавать сложные сценарии автоматизации, интегрировать голосовых ассистентов и управлять системой через веб-интерфейс или мобильные приложения.

Это мощный, перспективный и бесплатный инструмент автоматизации систем культивирования растений и животных. Его функционал включает, но отнюдь не исчерпывается приведенными ниже возможностями. Широкое распространение  Home Assistant и живое сообщество обеспечивают его дальнейшее развитие.

Установка системы Home Assistant и подключение прибора

1. Скачиваем и устанавливаем VMware Workstation (версия от 15)
2. Запрашиваем ссылку на образ с установленной системой и дополнениями. Размер сервера около 30 гб.

Ссылка на скачивание образа

3. Открываем и запускаем образ в программе VMware Workstation.
4. В окне виртуальной машины VMware узнаем присвоенный локальный ip адрес (IPv4) сервера Home Assistant, например, 192.168.0.247.
5. Входим в home-assistant по адресу - homeassistant.local:8123 (логин и пароль - admin). Если страница недоступна, входим по адресу ip, указанному в окне виртуальной машины с добавлением порта 8123, например, 192.168.0.247:8123 (логин и пароль - admin).
6. На странице «MQTT» (Настройки -> Устройства и Службы -> MQTT) перенастроить ip адрес на свой, указанный выше. На этом этапе обязательно сделать резервную копию системы («Take Snapshot» в программе VMware) виртуальной машины. К нему можно откатить, если возникнут ошибки.
7. В настройках регулятора на странице (192.168.4.1) указать SSID, пароль вашей Wi-Fi сети, а также ip адрес виртуальной машины, указанный выше.

При включении регулятора в сеть, в течение 1 минуты он создает точку доступа Wi-Fi (SSID и пароль указаны на приборе). Для соединения с ней через телефон необходимо отключить в настройках телефона автоматическое подключение к мобильному интернету. Как только подключение с прибором установлено, на странице по адресу 192.168.4.1 изменяют настройки: SSID Wi-Fi сети, пароль, ip адрес сервера (MQTT servers).

Настройка подключения прибора к локальной Wi-Fi сети и MQTT серверу
Настройка подключения прибора к локальной Wi-Fi сети и MQTT серверу

 

Чтобы прибор подключился к локальной сети, SSID должен быть открытым, затем его можно снова скрыть.

После ввода данных и нажатия «Save Settings» прибор перезагрузится, подключится к локальной сети и начинает отправлять данные по протоколу MQTT.

8. Заходим на страницу Home Assistant. В интерфейсе брокера Mosquitto нажимаем «Настроить», в строке «Подписаться на топик» указываем решетку - «#» и жмем «Подписаться». После правильного конфигурирования настроек регуляторов появятся полученные данные в виде топиков. Каждый топик отвечает за прием одного типа данных (текущее значение ph; время дозирования и т.д.). Отписываемся и запоминаем названия топиков (ph001/phValue и т.д.), они нужны для настройки конфигурационного файла (configuration.yaml). Прием данных не зависит от того, нажата ли кнопка «Подписаться».

Интерфейс брокера Mosquitto
Интерфейс брокера Mosquitto

Если данные не появляются в интерфейсе MQTT  последовательно проверяют следующие настройки:

Прибор не подключается к Wi-Fi сети. Проверяют список подключенных устройств в настройках роутера. Должно присутствовать устройство ESP с номером. При возникновении ошибки, как правило, в сетевых настройках прибора на странице 192.168.4.1 неправильно введены данные Wi-Fi сети (ssid или пароль), либо ssid сети скрыт.

Если прибор присутствует в списке подключенных устройств роутера, но данные не приходят значит в сетевых настройках прибора на странице 192.168.4.1 неправильно введены ip адрес, логин и пароль от MQTT сервера. Либо неправильно указан ip  адрес в настройках MQTT сервера (см. пункт 6).

9. Конфигурируем файл configuration.yaml по следующей схеме:

purge_keep_days: 365 # Храним данные 365 дня

mqtt: # протокол получения/отправки данных с сенсоров
sensor:
- name: "1. pH уровень Прибор №1" # по названию создаются «entity_id»; после сохранения появляются в списке объектов для автоматизации
state_topic: "ph014/phValue" # Названия топиков (ph001/phValue и т.д.) узнаем на странице брокера Mosquitto
unit_of_measurement: "pH"
expire_after: 60

-----

Настройка Telegram и текстовых уведомлений

Приведенный образ содержит ряд настроенных автоматизаций, другие можно делать по аналогии. Дополнительная информация на сайте Home Assistant.

1. В HA в разделе -> Устройства и службы -> Добавить интеграцию -> Telegram
2. В телеграм находим BotFather -> вводим /start -> вводим /newbot -> вводим /token вводим токен в настройки интеграции.
3. Узнаем chat_id через бота @userinfobot
4. В интеграциях вносим добавить разрешенный chat_id
5. Входим в появившегося бота -> Добавляем авторизацию.

Настройка NTFY и текстовых уведомлений

Если, по каким либо причинам, интеграция телеграма не работает, можно воспользоваться приложением ntfy. Необходимо установить приложение на телефон через google.play, создать подписку со сложным названием. Затем в ХА устанавливаем интеграцию ntfy, создаем тему с названием подписки. Теперь можно делать уведомления с помощью ntfy.

Настройка сценариев и изменение настроек приборов по сценарию

Каждый прибор с сетевым модулем, изготовленный после 15.10.2025, может принимать команды по протоколу mqtt посредством отправки по топику. Например, если прибор ph001, то топик для отправки ему команд имеет вид "ph001/cmd". В приведенном образе диска присутствуют настроенные сценарии автоматизации в качестве примеров.

Схема команд, которые прибор может интерпретировать: Для одиночной отправки конкретного значения {"0":номер команды, "9":значение}, либо в схеме автоматизации для изменения через поля - {{{("0":номер команды,"9":(states('Вспомогательный объект') | int)} | tojson }}. Вспомогательный объект создаем на странице "Устройства и службы" (Числовое или текстовое поля для внесения числа, переключатель и т.д.).

Номера команд для ph регулятора:
111 - изменение нижней границы диапазона (0.00-14.00) - {{{("0":111,"9":(states('Вспомогательный объект') | float * 100)} | tojson }}
222 - изменение верхней границы диапазона (0.00-14.00) - {{{("0":222,"9":(states('Вспомогательный объект') | float * 100)} | tojson }}
333 - изменение времени работы насосов (0-3600 сек) - {{{("0":333,"9":(states('Вспомогательный объект') | int)} | tojson }}
444 - изменение времени ожидания (0-3600 мин) - {{{("0":444,"9":(states('Вспомогательный объект') | int)} | tojson }}
555 - ВКЛ/Выкл левого насоса (0/1) - {{{("0":555,"9":(states('Вспомогательный объект') | int)} | tojson }}
666 - ВКЛ/Выкл правого насоса (0/1) - {{{("0":666,"9":(states('Вспомогательный объект') | int)} | tojson }}

Номера команд для TDS регулятора:
000 - изменение границы диапазона (0-9000) ppm - {{{("0":000,"9":(states('Вспомогательный объект') | int)} | tojson }}
111 - изменение времени работы 1 насоса (0-3600 сек) - {{{("0":111,"9":(states('Вспомогательный объект') | int)} | tojson }}
222 - изменение времени работы 2 насоса (0-3600 сек) - {{{("0":222,"9":(states('Вспомогательный объект') | int)} | tojson }}
333 - изменение времени работы 3 насоса (0-3600 сек) - {{{("0":333,"9":(states('Вспомогательный объект') | int)} | tojson }}
444 - изменение времени ожидания между насосами (0-3600 мин) - {{{("0":444,"9":(states('Вспомогательный объект') | int)} | tojson }}
555 - изменение времени ожидания следующего цикла (0-3600 мин) - {{{("0":555,"9":(states('Вспомогательный объект') | int)} | tojson }}
666 - ВКЛ/Выкл левого 1 насоса (0/1) - {{{("0":666,"9":(states('Вспомогательный объект') | int)} | tojson }}
777 - ВКЛ/Выкл левого 2 насоса (0/1) - {{{("0":777,"9":(states('Вспомогательный объект') | int)} | tojson }}
888 - ВКЛ/Выкл левого 3 насоса (0/1) - {{{("0":888,"9":(states('Вспомогательный объект') | int)} | tojson }}
123 - принудительный старт цикла прокачки (0/111) - {{{("0":123,"9": 111 | int)} | tojson }}, используется для синхронизации нескольких устройств. Синхронизация необходима в случае, когда дозируют более трех растворов. При этом один ТДС регулятор выбирают в качестве главного, через него измеряют минерализацию раствора. Как только ведущий прибор запускает цикл дозирования, состояние его топика "tds001/startCycle" меняется от "0" до "111", а по окончании дозирования возвращается к "0".  У ведомого прибора устанавливают границу TDS на ноль и удаляют датчик. В автоматизации триггером является смена состояния ведущего устройства, объекта "tds001/startCycle" с "0" до "111", а действием является публикация в топик ведомого устройства (например, tds023/cmd) команды на принудительный запуск цикла {{{("0":123,"9": 111 | int)} | tojson }}. Перед публикацией следует создать задержку на время работы главного прибора, тогда растворы дозируются последовательно.

Визуализация данных и построение графиков

Полученные от приборов данные визуализируются на странице «Обзор» и в виде графиков на странице «История». Задаем дату и время, выбираем объекты. Для изменения состава панели сверху справа - "Редактировать".

Удаленное подключение к Home Assistant

Для удаленной работы с интерфейсом с помощью телефона предложено множество решений и программных продуктов. Например, простой и быстрый способ предлагает программа Tailscale. Устанавливаем ее из каталога дополнений. Входим под своим google логином. Устанавливаем на телефон программу Tailscale и также входим под своим google логином. В интерфейсе программы на мобильном устройстве можно видеть присвоенный ip адрес удаленного доступа. Вносим ip адрес в адресную строку браузера: x.x.x.x:8123, добавляя порт 8123, входим в Home Assistant.

Просмотр показаний приборов с мобильного устройства в программе Tailscale
Просмотр показаний приборов с мобильного устройства в программе Tailscale

Если по какой либо причине вам не удается скачать и установить программу Tailscale, можно воспользоваться программой Zerotier One.
1. В интерфейсе Home Assistant скачиваем дополнение «Zerotier One».
2. На официальном сайте (my.zerotier.com/) входим под своим гугл аккаунтом и создаем сеть («Create a network»).
3. Копируем «Network ID» с сайта в конфигурацию дополнения «Zerotier One» на виртуальной машине, сохраняем и запускаем дополнение. Дополнение попытается подключиться к вашей сети на Zerotier.
4. На сайте my.zerotier.com/ авторизируем («Authorized») новое устройство.
5. Скачиваем приложение Zerotier для мобильного устройства. Создаем сеть с указанным «Network ID». Теперь мобильное устройство попытается подключиться к вашей сети на Zerotier.
6. На сайте my.zerotier.com/ авторизируем («Authorized») новое устройство.
7. В списке авторизированных устройств появятся два устройства - телефон и сервер Home Assistant.
7. Копируем ip адрес, присвоенный устройству сервера Home Assistant.
8. На мобильном устройстве вводим в поисковую строку браузера этот ip адрес с портом 8123, например, 172.29.178.55:8123 и входим в Home Assistant удаленно.

Raspberry Pi4 идеально подходит для установки Home Assistant, не греется, экономичная. Внешний диск SSD вместо microcd для надежности. Перепрошитое под Home Assistant реле Sonoff4CH для управления светом, насосом и аэрацией. Приборы работают по сценариям автоматизации
Raspberry Pi4 идеально подходит для установки Home Assistant, не греется, экономичная. Внешний диск SSD вместо microcd для надежности. Перепрошитое под Home Assistant реле Sonoff4CH для управления светом, насосом и аэрацией. Приборы работают по сценариям автоматизации

 

Добавить комментарий