Теперь мы получили доступ к счетчику и даже можем по wi-fi снимать с него показания штатным конфигуратором. Необходимо завести показания в Home Assistant.
Все немногочисленные скрипты, которые я находил для работы со счетчиком Меркурий 200, не умели работать через TCP порт и требовали, чтобы счетчик был подключен кабелем к серверу. Мне это сделать было невозможно, поэтому пришлось придумывать очередной “костыль”. Я создал виртуальный com порт, который пересылает данные на нужное TCP соединение с помощью утилиты socat.
sudo socat pty,link=/dev/nrg,raw tcp:192.168.1.16:23 &
где 192.168.1.16 - ip адрес wemos d1 mini
ngr - имя нового виртуального com порта, который будет создан.
Разобравшись с этой проблемой, я продолжил искать способы опроса счетчика из Home Assistant. Нашел рабочий sh скрипт на одном из форумов по умным домам, уже не помню где.
Так как я выбрал вариант установки Home Assistant Supervised, то и с этим возникли некоторые сложности. Не буду сейчас описывать все мои попытки, но в итоге решил запускать скрипт на хосте, подключаясь туда из Home Assistant по ssh. Возможно есть другие менее костыльные методы, если знаете - пишите в комментарии.
Для получения SSH-серсоров я использовал кастомный компонент.
Я подключил отдельный package для счетчика электроэнергии в Home assistant и добавил туда описание сенсоров и автоматизации. Этот файл доступен на github. Не буду приводить здесь весь код, только самые важные его части.
Текст после слова replace в скобках появился в связи с тем, что сенсор возвращает кроме значения еще львиную долю символов, предшествующих ответу. Поэтому я просто вырезал этот текст, так как он всегда одинаковый.
Тут представлена собственно запуск утилиты socat и автоматизация, которая эту утилиту запускает, если вдруг виртуальный ком порт отвалился и показания не приходят. К слову, это происходит крайне редко.
Автоматизации для записи начальных значений в mqtt топики.
Сенсоры, на основе этих автоматизаций.
Сенсоры для вычисления остальных значений
Как я обещал в самом начале - есть путь более простой путь.
Во-первых, можно не использовать rs 485 to wi-fi, если подключить счетчик напрямую проводом в сервер умного дома, адаптеров rs 485 на USB большое множество. Во время тестов я использовал такой:
Во-вторых, если использовать установку Home Assistant в venv, то не придётся изобретать подключение к собственному хосту по ssh.
В целом, моё решение далеко не беспроблемное, даже наоборот, я вижу множество точек отказа и сомнительных решений, но главное - оно работает и довольно стабильно. На этом этапе у меня в умный дом заведены все приборы учета и я счастлив, как слон. Это то, о чем я и не мог подумать на этапе закупки умных выключателей, для управления светом.
Подписывайтесь на мой канал и страницу в инстаграм @smart.home53, чтобы не пропустить обновления.
#умный дом #smart home #home assistant #меркурий 200 #интернет вещей #iot #счетчик электроэнергии #технологии #сделай сам #diy