Найти тему
Smart Home 53

Интеграция счетчика Меркурий 200 в Home Assistant (часть 4)

В предыдущих трех частях этой истории я уже рассказывал, как подключил счетчик Меркурий 200.04 в умный дом. В итоге конструкция получилась достаточно сложная, а главное, с кучей узлов уязвимости. Тем не менее в таком виде она прожила у меня более полугода, до того дня, когда ко мне не обратился подписчик.

Подписчик предложил свой вариант получения данных со счетчика, минуя мои костыли, напрямую через ESPHome. Проект все еще находится на стадии разработки, но уже сейчас он выглядит и работает гораздо лучше моего решения. Компонент доступен на guthub автора.

Итак, приступим

Первое, что необходимо сделать - это исправить значения в файле mercury-200.02.h

Для начала нужно перевести адрес счетчика в HEX. Должно получиться 3 байта, т.е. 6 символов. Если получается 5 символов, добавьте перед первым символом 0. В примере автора серийный номер счетчика заканчивается на 420095. Воспользовавшись любым онлайн калькулятором, способным переводить числа из одной системы счисления в другую, переводим это число из десятичной в шестнадцатеричную систему счисления, получаем 668FF. Получилось 5 символов, добавляем 0 в начале, получаем 3 байта 06, 68, FF.

Записываем эти три байта в двух строках после стартового байта. - byte electrical_parameters[ 7 ] и byte tarif[7] для получения мгновенных значений и значений тарифа.

-2

Следующий байт содержит запрос. 0x63 в случае мгновенных значений и 0x27 для запроса показаний счетчика по тарифам. Это оставляем как есть. Далее идет CRC16 (Modbus), эти байты нужно считать отдельно для каждой из двух перечисленных снизу строк. Начнем с первой. Заходим на сайт, предложенный автором в комментарии, выбираем Input type: HEX и в строку вводим последовательность байтов из строки byte electrical_parametrs, начиная с начального байта и заканчивая байтом запроса. При этом удаляем все запятые и 0x, получаем число длиной в 10 символов, в нашем случае это “000668ff63”. Нажимаем Calculate CRC.

-3

Ищем строку CRC-16(Modbus). Искомое значение это 0x8DA4. Сначала вписываем последний байт 0xA4, потом 0x8D, т.е. в обратном порядке. Такую же процедуру нужно проделать для строку byte tafif, CRC будет другой, так как изменится байт команды на 0x27.

После этого необходимо положить файл mercury-200.02.h в директорию ESPHome, и залить на ESP8236 или ESP32 прошивку, предварительно отредактировав для себя параметры, куда вы положили файл mercury-200.02.h, настройки wifi, тип платы. Подключение осуществил точно так же, как показывал во второй части статьи.

Все заработало, показания отображаются.

-4

В компоненте не реализован запрос последнего включения и отключения счетчика, но я не думаю, что это критично, тем более что компонент развивается и автор ведет его активную доработку.

Часть 1

Часть 2

Часть 3

Подписывайтесь на мой канал, чтобы не пропустить обновления.

#умный дом #smart home #технологии #интернет вещей #сделай сам #iot #home assistant #diy #счетчик электроэнергии #потребление