Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Подключение EspHome к счетчикам электроэнергии по протоколу СПОДЭС ГОСТ Р 58940-202 (Энергомера ce207, ce208, CE307, CE308, Меркурий, Пульсар, Милур, Мир, Нартис, РиМ и другие). Supports DLMS/Cosem IEC IEC 62056 Mode E (Hdlc)

License

NotificationsYou must be signed in to change notification settings

latonita/esphome-dlms-cosem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Подключение EspHome к счетчикам электроэнергии по протоколу DLMS/COSEM/СПОДЭС (Энергомера CE207/CE307/CE308, Милур 107S, Мир, Нартис, РиМ, Пульсар и многие другие) через RS-485 интерфейст или через оптопорт(*).

Инструкции по подключению esp32/esp8266 к счётчику можно увидеть в соседнем компонентеhttps://github.com/latonita/esphome-energomera-iec

(*) Через оптопорт можно работать с приборами, которые сразу работают на скорости 9600. Вариант, когда необходимо сначала подключаться на скорости 300, а потом выходить на рабочую скорость - пока не поддерживается (но, по факту, нужно только найти жертву и протестировать).

Оглавление

Функции

Реализованы

  • Подключение без аутентификации (NONE) и с низким уровнем (LOW - доступ с паролем).
  • Поддержка базовых цифровых типов данных (int/float)
  • Поддержка базовых текстовых данных (octet-string)
  • Поддержка русских символов в ответах от счетчиков (Нартис И100-W112, РиМ 489 , ... )
  • Задание логического и физического адресов
  • Работа с несколькими счетчиками на одной шине

Возможные задачи на будущее

  • Работа с данными типа datetime
  • Синхронизация времени
  • Управление реле
  • Подключение через оптопорт согласно стандарта - выбор скорости 300 и далее выбор 9600
  • .. предлагайте ваши варианты

Для будущей разработки требуется наличие счетчика для проверки

Настройка основного компонента (хаба)

Простейшая конфигурация выглядит вот так:

dlms_cosem:

По-сложнее вот так:

dlms_cosem:client_address:32server_address:logical_device:1physical_device:576address_length:2auth:truepassword:"12345678"update_interval:60sreceive_timeout:500msdelay_between_requests:50msflow_control_pin:GPIO12
  • client_address (Optional) см.документацию на счетчик. от этого зависит уровень доступа. по-умолчанию 16

  • server_address (Optional) HDLC адрес :) можно попробовать не указывать. Энергомеры, например, это едят. по-умолчанию 1. а вообще, адрес расчитывается по алгоритму, на основе логического и физического адресов, а также размера адреса. см. инструкцию на счетчик. либо рассчитываем сами ручками, либо указываем параметры ниже:

    • logical_device (Optional) номер логического устройста. по стандарту СПОДЭС должно быть как минимум устройсво номер 1. по-умолчанию 1.
    • physcial_device (Required) номер физического устройства. см. документацию на счетчик. может быть как фиксированной величиной, так и зависящей от серийного номера счетчика (как правило несколько последних цифр + число). может отличаться для разных интерфейсов (RS-485/Оптопорт/и т.д.)
    • address_length (Optional) длина адреса, 1, 2 или 4 байта. по-умолчанию 2.
  • auth (Optional) необходимость авторизации.true если требуется указать пароль. по-умолчаниюfalse

  • password (Optional) пароль. используется вместе с параметромauth

  • update_interval (Optional) периодичность опроса счетчика и публикации результатов. по-умолчанию60s

  • receive_timeout (Optional) как долго ждем на наш запрос мы ждем ответ от счетчика. по-умолчанию500ms

  • delay_between_requests (Optional) размер паузы между последовательными запросами к счетчику. по-умолчанию50ms

  • flow_control_pin (Optional) указываем, если 485 модуль требует сигнал направления передачи RE/DE

  • id (Optional) Задать, если приборов больше одного. Этот идентификатор указывать в сенсорах в полеdlms_cosem_id

  • cp1251 (Optional) Включить преобразование русских символов CP1251 -> UTF-8 для правильного отображения в home assistant. по-умолчаниюtrue

cp1251

Ряд счетчиков выдают свои названия или некоторые другие поля на русском языке в кодировке cp1251, которую требуется перевести в UTF-8 для правильного отображения в Home Assistant. Например, РиМ выдает значение 0.0.96.1.1.255 (Тип ПУ) как "РиМ489.38". Аналогично, Нартис выдает название на русском.Можно отключить целиком на уровне компонента,Если конверсия начнет вызывать сложности с какими-то текстовыми полями, то эту опцию можно отключить либо целиком на уровне компонентаcp1251:false, либо на уровне конкретного текстового сенсора.

Чуть побольше о выборе адреса сервера и клиента

Для ряда счетчиков можно попробовать не указывать адреса, тогда будут использованы значения по-умолчанию (16, 1)Необходимо в каждом случае смотреть инструкцию к счетчику. Клиентский адрес выбирается, как правило, 32, а серверный - 1. При этом практически во всех счетчиках для уровня 32 требуется указать пароль.

Возможные client_address

СПОДЭС говорит нам:

КодУровень доступаРазрешенные операцииЗащита
16Публичный клиентчтениенет
32Считыватель показанийчтение, селективная выборка, выполнение определенных действийпароль
48Конфигураторчтение, запись, селективная выборка, выполнение определенных действийпароль или шифрование (*)

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

(*) Шифрование не подддерживается.

server_address

Как правило это двухбайтный адрес, верхний байт - логический адрес, нижний - физический адрес. Берем из инструкции к счетчику.

Пример для Милур 107S

В инструкции указано:

ПараметрЗначение
Логический адрес1
Физический адресК четырем последним цифрам серийного номера прибавить 16 и результат перевести в HEX

Про HEX забываем, это для их родного конфигуратора. Например, серийный номер счетчика241100010880560, т.е. последние цифры =0560. Добавляем16 и получаем576.

Настройка сенсоров

  • text_sensor - текстовые данные в формате "как пришли от счетчика"
  • sensor - числовые данные, int/float

OBIS коды берем из стандарта СПОДЭС и из инструкций к счетчику

Если приборов больше одного, то необходимо в каждом сенсоре указыватьdlms_cosem_id.

Sensor

sensor:# 2 Current - Iph Ток фазы 1.0.11.7.0.255  -platform:dlms_cosemname:Phase Currentobis_code:1.0.11.7.0.255multiplier:1.0# предварительная мультипликация значения (до отработки filters:) по-умолчанию 1dont_publish:false# не публиковать значение, будет видно только в логах. по-умолчанию false# далее идут стандартные параметры сенсоровunit_of_measurement:Aaccuracy_decimals:1device_class:currentstate_class:measurement

Text sensor

text_sensor:  -platform:dlms_cosemname:Typeobis_code:0.0.96.1.1.255dont_publish:false# не публиковать значение, будет видно только в логах. по-умолчанию false#cp1251: false# далее идут стандартные параметры сенсоровentity_category:diagnostic
  • cp1251 - если значение указано, то оно имеет приоритет и используется вместо значения из основного компонента. по-умолчанию значение не указано, настройка берется из основного компонента

Binary sensor

binary_sensor:   -platform:dlms_cosemconnection:name:Connectionsession:name:Sessiontransmission:name:Transmission

Connection включается в случае доступности соединения с прибором. выключается в случае ошибки соединения.Session включается в начале сессии связи с прибором, отключается по окончанию.Transmission включается на период каждого отдельного запроса. можно подключить, например, к светодиоду для индикации активности

binary_sensor:   -platform:dlms_cosemtransmission:name:Transmissionon_press:output.turn_on:transmission_ledon_release:output.turn_off:transmission_ledoutput:  -platform:gpioid:transmission_ledpin:GPIO04inverted:true

Lambda

  • update_server_address(logical_device, physical_device, addr_len) - обновление адреса и внеочередной запуск опроса.

Данную функцию, например, можно использовать в lambda для сканирования адресов устройства совместно с вышеупомянутым бинарным сенсоромConnection:

globals:  -id:logaddrtype:uint16_tinitial_value:'1'      -id:phyaddrtype:uint16_tinitial_value:'1'  -id:servaddrtype:uint16_tinitial_value:'1'binary_sensor:   -platform:dlms_cosemconnection:name:Connection#.....on_release:        -lambda:|-            if (id(phyaddr) < 255) {              id(phyaddr)++;            } else {              id(logaddr)++;              id(phyaddr) = 1;            }            id(servaddr) = id(energo_01)->update_server_address(id(logaddr), id(phyaddr), 2);        -lambda:|-            ESP_LOGI("main", "Logical address: %d, physical address: %d, server address: %d", (int) id(logaddr), (int) id(phyaddr), (int) id(servaddr));interval:# выводим в лог текущие настройки, чтобы не искать последнее изменение по логуinterval:10sthen:    -lambda:|-        ESP_LOGI("main", "Logical address: %d, physical address: %d, server address: %d", (int) id(logaddr), (int) id(phyaddr), (int) id(servaddr));

Несколько счетчиков

При работе с несколькими счетчиками необходимо аккуратно указывать идентификаторы.

uart:  -id:bus_1rx_pin:GPIO16tx_pin:GPIO17baud_rate:9600data_bits:8parity:NONEstop_bits:1   -id:bus_2rx_pin:GPIO23tx_pin:GPIO22baud_rate:9600data_bits:8parity:NONEstop_bits:1dlms_cosem:  -id:energo_1uart_id:bus_1client_address:32server_address:logical_device:1physical_device:576auth:truepassword:"12345678"update_interval:30sreceive_timeout:500ms  -id:energo_2uart_id:bus_1client_address:32server_address:logical_device:1physical_device:16auth:truepassword:"12345678"update_interval:30sreceive_timeout:500ms  -id:nartis_3uart_id:bus_2client_address:32server_address:logical_device:1physical_device:17address_length:2auth:truepassword:"00000001"text_sensor:  -platform:dlms_cosemdlms_cosem_id:energo_2# id хабаname:Serial numberobis_code:0.0.96.1.0.255entity_category:diagnosticcp1251:truesensor:  -platform:dlms_cosemdlms_cosem_id:nartis_3# id хабаid:current_phasename:Currentobis_code:1.0.11.7.0.255unit_of_measurement:Aaccuracy_decimals:1device_class:currentstate_class:measurement

Особенности счетчиков

Нартис И100-W112

  • Передает тип ПУ на русском языке. Для текстового сенсора0.0.96.1.1.255 необходимо установитьcp1251: true

  • Иногда пароли и явки в инструкции отличаются от реальных. Пример рабочих параметро с одного из счетчиков:

    • Пароль администрирования: 0000000100000001
    • Пароль чтения: 00000001
    • Логический адрес: 1
    • Физический адрес: 17
    • Размер адреса: 2

РиМ489.38 и другие из серии

  • Передает тип ПУ на русском языке. Для текстового сенсора0.0.96.1.1.255 необходимо установитьcp1251: true

Примеры конфигураций

Однофазный счетчик (ПУ категории D)

Используется список параметров ПУ категории D из стандарта СПОДЭС. Они применяются в однофазных ПУ потребителей.

Пример файла конфигурации, протестированого на Энергомера CE207-SPds.

esphome:name:energomera-ce207-spdsfriendly_name:Energomera-ce207-spdsesp32:board:esp32devframework:type:arduino#...external_components:  -source:github://latonita/esphome-dlms-cosemcomponents:[dlms_cosem]refresh:1suart:  -id:bus_1rx_pin:GPIO16tx_pin:GPIO17baud_rate:9600data_bits:8parity:NONEstop_bits:1dlms_cosem:id:energo_01client_address:32server_address:1auth:truepassword:"12345678"update_interval:60sreceive_timeout:1ssensor:# 2 Current - Iph Ток фазы 1.0.11.7.0.255  -platform:dlms_cosemname:Phase Currentobis_code:1.0.11.7.0.255unit_of_measurement:Aaccuracy_decimals:1device_class:currentstate_class:measurement# 3 Current - In Ток нулевого провода 1.0.91.7.0.255  -platform:dlms_cosemname:Neutral Currentobis_code:1.0.91.7.0.255unit_of_measurement:Aaccuracy_decimals:1device_class:currentstate_class:measurement# 4 Voltage - V Напряжение фазы 1.0.12.7.0.255  -platform:dlms_cosemname:Phase Voltageobis_code:1.0.12.7.0.255unit_of_measurement:Vaccuracy_decimals:1device_class:voltagestate_class:measurement# 5 Power Factor - PF Коэффициент мощности 1.0.13.7.0.255  -platform:dlms_cosemname:Power Factorobis_code:1.0.13.7.0.255unit_of_measurement:''accuracy_decimals:2device_class:power_factorstate_class:measurement# 6 Frequency Частота сети 1.0.14.7.0.255  -platform:dlms_cosemname:Grid Frequencyobis_code:1.0.14.7.0.255unit_of_measurement:Hzaccuracy_decimals:1device_class:frequencystate_class:measurement# 7 Apparent Power Полная мощность 1.0.9.7.0.255  -platform:dlms_cosemname:Apparent Powerobis_code:1.0.9.7.0.255unit_of_measurement:Waccuracy_decimals:1device_class:powerstate_class:measurement# 8 Signed Active Power (+Import; -Export) Активная мощность 1.0.1.7.0.255  -platform:dlms_cosemname:Active Powerobis_code:1.0.1.7.0.255unit_of_measurement:Waccuracy_decimals:1device_class:powerstate_class:measurement# 9 Signed Reactive Power (+Import; -Export) Реактивная мощность 1.0.3.7.0.255  -platform:dlms_cosemname:Reactive Powerobis_code:1.0.3.7.0.255unit_of_measurement:Waccuracy_decimals:1device_class:powerstate_class:measurement# 10 Cumulative Active Energy (Import) Активная энергия, импорт 1.0.1.8.0.255  -platform:dlms_cosemname:Active Energyobis_code:1.0.1.8.0.255unit_of_measurement:kWhaccuracy_decimals:3device_class:energystate_class:total_increasingfilters:      -multiply:0.001# 10.1 Cumulative Active Energy (Import) tariff 1  -platform:dlms_cosemname:Active Energy T1obis_code:1.0.1.8.1.255unit_of_measurement:kWhaccuracy_decimals:3device_class:energystate_class:total_increasingfilters:      -multiply:0.001# 10.2 Cumulative Active Energy (Import) tariff 2  -platform:dlms_cosemname:Active Energy T2obis_code:1.0.1.8.2.255unit_of_measurement:kWhaccuracy_decimals:3device_class:energystate_class:total_increasingfilters:      -multiply:0.001# 11 Cumulative Active Energy (Export) Активная энергия, экспорт 1.0.2.8.0.255  -platform:dlms_cosemname:Active Energy Exportobis_code:1.0.2.8.0.255unit_of_measurement:kWhaccuracy_decimals:3device_class:energystate_class:total_increasingfilters:      -multiply:0.001# 12 Cumulative Reactive Energy (Import) Реактивная энергия, импорт 1.0.3.8.0.255  -platform:dlms_cosemname:Reactive Energyobis_code:1.0.3.8.0.255unit_of_measurement:kWhaccuracy_decimals:3device_class:energystate_class:total_increasingfilters:      -multiply:0.001# 13 Cumulative Reactive Energy (Export) Реактивная энергия, экспорт 1.0.4.8.0.255  -platform:dlms_cosemname:Reactive Energy Exportobis_code:1.0.4.8.0.255unit_of_measurement:kWhaccuracy_decimals:3device_class:energystate_class:total_increasingfilters:      -multiply:0.001text_sensor:  -platform:dlms_cosemname:Serial Numberobis_code:0.0.96.1.0.255entity_category:diagnostic  -platform:dlms_cosemname:Typeobis_code:0.0.96.1.1.255cp1251:true# ряд счетчиков выдают данный параметр на русском языкеentity_category:diagnostic  -platform:dlms_cosemname:Metrology Software Versionobis_code:0.0.96.1.2.255entity_category:diagnostic  -platform:dlms_cosemname:Manufacturerobis_code:0.0.96.1.3.255entity_category:diagnostic

About

Подключение EspHome к счетчикам электроэнергии по протоколу СПОДЭС ГОСТ Р 58940-202 (Энергомера ce207, ce208, CE307, CE308, Меркурий, Пульсар, Милур, Мир, Нартис, РиМ и другие). Supports DLMS/Cosem IEC IEC 62056 Mode E (Hdlc)

Topics

Resources

License

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp