!! Сам компонент, как и оформление репозитория находится в разработке !!
Custom Home Assistant integration for obtaining the data from Energy meter Mercury 200.02. This Integration is dedicated for Russia and CIS users, as I believe, no one outside uses this type of meters. However, if you need documentation in English, please, let me know in issues.
Бытовые счетчики электроэнергии Меркурий 200.02 обладают цифровым интерфейсом на базе RS-485, который позволяет удаленно считывать показания расхода электроэнергии.
Данная интеграция позволяет считывать показания и отображать их в Home Assistant через zigbee2mqtt. Для подключения электросчетчика к Zigbee сети необходим модем. О нем - ниже.
Вдохновлен постом Smart Home 53. Расшифровка протокола Mercury200 в этом репо. Спасибо Авторам!
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ. Дорогие друзья, автор этого компонента как и Вы - энтузиаст и для меня это - хобби. Компонент распространяется под лицензией MIT. Если У Вас есть вопросы или пожелания, пишите в Issues. Я постараюсь помочь, но обещать ничего не могу. У меня все работает :-D.
В разработке
Через HACS (рекомендуется)
Раздел в разработке
Добавьте ссылку на этот репозиторий в HACS и Установите компонент.
В разработке
После установки компонента возможно понадобится перезагрузка. Далее необходимо добавить в файл конфигурации configuration.yaml и перезагрузить HomeAssistant:
# Electricity Counter Mercury200.02
mercury200:
- type: mercury200.02
device_serial: "XXXXXXXX"
topic: "zigbee2mqtt/rs485"
Примечания:
- Пока поддерживается только mercury200.02.
- серийный номер счетчика можно посмотреть на самом счетчике, а так же в ЛК Мосэнергосбыт или другого оператора
- 'rs485' - это friendly_name передающего устройства (модема) в zigbee2mqtt. Замените, если вы назвали его иначе.
- Особенности шины позволяют опрашивать несколько счетчиков с одного модема. Однако этот режим не протестирован в виду отсутствия оных.
После перезагрузки в Entities появится список сущностей, относящихся к Счетчику:
Изначально значения сущностей будут недоступны либо будут нулевыми. Это нормально.
Чтобы получить значения со счетчика, необходимо отправить на него запрос. Для этого в компоненте предусмотрен сервис submit_command, формирующий запрос в байтах:
- service: mercury200.submit_command
data:
device_id: "XXXXXXXX" # Серийный номер счетчика
command: get_energy
- get_energy: отправляет запрос на получение значений тарифов T1-T4
- get_status: отправляет запрос на получение текущих показаний сети: Сила тока, напряжение, потребляемая мощность
Получив запрос, электросчетчик отвечаечает байт-строкой, которая транслируется zigbee модемом в zigbee2mqtt. Интеграция проводит расшифровку сообщения и обновляет значения сущностей.
Для регулярного обновления значений можно добавить в automations.yaml:
# Collect data from electricity counter
- alias: Mercury T1 - T3
trigger:
- platform: time_pattern
minutes: "/57" # каждые 57 минут
action:
- service: mercury200.submit_command
data:
device_id: "XXXXXXXX"
command: get_energy
- alias: Mercury status
trigger:
- platform: time_pattern
minutes: "/5" # каждые 5 минут
action:
- service: mercury200.submit_command
data:
device_id: "XXXXXXXX"
command: get_status
Ниже мой вариант карточки для LoveLace. Для этого необходим компонент multiple entity row. В качестве дополнительной информации, а так же для автоматической отправки показаний счетчика в личный кабинет, рекомендую использовать компонент ЛК "Интер РАО". Автору больше Спасибо!
Пример карточки в yaml для Lovelace
type: entities
entities:
- entity: sensor.mercury200_XXXXXXXX_power
name: Status
secondary_info: last-updated
icon: mdi:lightning-bolt
type: custom:multiple-entity-row
entities:
- icon: mdi:refresh
tap_action:
action: call-service
service: mercury200.submit_command
service_data:
device_id: 'XXXXXXXX'
command: get_status
name: false
- entity: sensor.mercury200_XXXXXXXX_voltage
name: false
- entity: sensor.mercury200_XXXXXXXX_t3
name: Counter (kW*h)
icon: mdi:gauge
type: custom:multiple-entity-row
show_state: false
secondary_info: last-updated
entities:
- icon: mdi:refresh
tap_action:
action: call-service
service: mercury200.submit_command
service_data:
device_id: 'XXXXXXXX'
command: get_energy
- entity: sensor.mercury200_XXXXXXXX_t1
name: T1
unit: false
- entity: sensor.mercury200_XXXXXXXX_t2
name: T2
unit: false
- entity: sensor.mercury200_XXXXXXXX_t3
name: T3
unit: false
- entity: sensor.mes_XXXXX_XXX_XX_meter_XXXXXXXX
name: '-> Mosenergo'
type: custom:multiple-entity-row
secondary_info: last-changed
attribute: last_indications_date
format: date
icon: mdi:cloud-upload
entities:
- entity: sensor.mes_XXXXX_XXX_XX_account
name: Debth
В силу особенности работы z2m при каждом новом сообщении генерится retain сообщение вида
homeassistant/device_automation/.....
Такие сообщения содержат конфигурацию. Поскольку модем все время перебрасывается пакетами с RS-485 (байт-строками), то каждое такое сообщение является уникальным и для него генерится конфиг. Они накапливаются в MQTT и мне не удалось от этого избавиться. Как выход: я использую автоматизацию, которая их сразу же обнуляет. Рекомендую к использованию. !!Необходимо изменить id устройства на Ваше!!!
# purge retain MQTT messages from electricity counter
- id: "purge retain MQTT"
alias: puge retain MQTT messages
trigger:
- platform: mqtt
topic: homeassistant/device_automation/0x00124b001b222fb2/#
action:
- service: mqtt.publish
data_template:
topic: "{{ trigger.topic }}"
payload: ""
retain: True
Раздел в Разработке
Модем необходим для подключения Счетчика электроэнергии к zigbee2mqtt.
В папке ZigBee2MQTT <-> RS485 лежит файл Gerber, необходимый для печати плат, а также файл прошивки.
Подключение:
ВНИМАНИЕ!!! Высокое напряжение! Опасно для жизни! Лучше обратиться к профессионалам!
Также сущности T1 - T4 можно добавить а панель Energy для мониторинга расхода электроэнергии.
- Проверка кофигурации с homeassistant.helpers.config_validation
- Зашить в компонент периодическое обновление данных (Сейчас это делается вручную или через automations.yaml)
- По непонятной мне причине показания счетчиков в карточке обновляются в течение 30 секунд после фактического получения данных (К примеру, после ручного обновления через иконку в карточке).
- Кастомная прошивка для модема (сейчас она на базе конфигуратора PTVO. За что ему большое Спасибо!)
- Поддержка других счетчиков
- Избавиться от retain сообщений в MQTT средствами интеграции
- Доработка документации
- Прошивка
- Установка в ручном режиме
- Подключение модема к счетчику электроэнергии
- Донат. Вы всегда можете поддержать авторов zigbee2mqtt, PTVO, Home assistant и других контрибьюторов. Потом может и я заслужу)