DLMS RiM x89.2x

Добрый день.
Не получается снимать показания с эл. сч. РиМ x89.2x (DLMS).
Оптопорт УСО-2. Под виндой родной прогой RiM-DLMS все читает и в минимальном и в низком и в высоком. Тот же порт в WB-7:
wb-mqtt-serial -d3 -G print_all,/dev/ttyUSB0,9600-8-N-1,dlms_hdlc: …
… 0,16,high,“SettingRiM489.2X”
<3>ERROR: Serial protocol error: AARQRequest failed. Bad response: 275, No reason given.
… 0,16,low,“Reader”
<3>ERROR: Serial protocol error: AARQRequest failed. Bad response: 275, No reason given.
… 0,32,high,“SettingRiM489.2X”
<3>ERROR: Serial protocol error: AARQRequest failed. Bad response: 277, Authentication mechanism name not recognised.
… 0,32,low,“Reader”
<3>ERROR: Serial protocol error: SAP Assignment attribute read failed. Read DLMS packet failed: 4, Access Error : Device reports a undefined object.
… 0,32,lowest
<3>ERROR: Serial protocol error: AARQRequest failed. Bad response: 279, Authentication failure.
… 0,16,lowest
<3>ERROR: Serial protocol error: SAP Assignment attribute read failed. Read DLMS packet failed: 4, Access Error : Device reports a undefined object.

Какой вариант команды правильный? И я выложу дебаг этой команды.
P.S. wb-mqtt-serial 2.68.6-wb106 git 7424ca1865491992e40c613f2400bd5069695514

Добрый день. Каким образом выполнялась настройка подключения?

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

Не спешите, какая настройка? Я пока шаблон пытаюсь сгенерировать согласно Вашей документации Протокол DLMS/COSEM, СПОДЭС (ГОСТ Р 58940-2020) — Wiren Board

wb-mqtt-serial -G help
Usage:
wb-mqtt-serial -G mode,path_to_device,port_settings,protocol[:device_id][,options]
Options:
mode generation mode:
print - minimal information, no actual template generation
print_all - extended information, no actual template generation
generate - template generation to /etc/wb-mqtt-serial.conf.d/templates
path_to_device path to device’s file (example: /dev/ttyRS485-1)
port_settings baudrate, data bits, parity, stop bits, separated by ‘-’ (example: 9600-8-N-1)
protocol one of:
dlms_hdlc - DLMS/COSEM with HDLC interface,
optional device_id is an address of a Physical Device
options comma-separated list of protocol parameters:
dlms_hdlc protocol options:

  • client address
  • authentication mechanism:
    lowest
    low
    high
    MD5
    SHA1
    GMAC
    SHA256
    ECDSA
  • password

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

dlms_hdlc protocol options:
  -  client address
  -  authentication mechanism
  -  password

Т.е. я должен выкинуть из команды 32(или 16). Хорошо, проверяем:

...,dlms_hdlc:0,high,"SettingRiM489.2X"
<3>ERROR: Unknown authentication mode: SettingRiM489.2X

Хорошо что Вы напомнили, про эту ошибку в документации в утилите Вам писали в прошлом году в телеге - в реале 4 параметра(см Протокол DLMS/COSEM, СПОДЭС (ГОСТ Р 58940-2020) — Wiren Board), а не 3, и тут важна последовательность, так что доку точно править нужно.

В примере параметры:
wb-mqtt-serial -G 2(mode),/dev/ttyMOD3(path_to_device),9600-8-N-1(port_settings baudrate),dlms_hdlc:32(optional device_id is an address of a Physical Device),32(client address),1(authentication mechanism),12345678(password)
Пришлите полный текст отправляемой вами команды.

optional device_id is an address of a Physical Device

Так если device_id пропустить (он же optional) то останется 3 параметра, и как их записывать?

dlms_hdlc:,32,1,12345678
или
dlms_hdlc:32,1,12345678

Но в обоих случаях выдаётся ошибка. Т.е. device_id получается на самом деле обязательный параметр. Вот и надо в доке четко указать какие optional, какие обязательные.

Попробуйте вот так

wb-mqtt-serial -d3 -G print_all,/dev/ttyUSB0,9600-8-N-1,dlms_hdlc:0,32,high,Reader

Адрес устройства известен?

  1. Пароль не надо в кавычках писать
  2. В документации РиМ пароли заданы для “считывателя показаний” - 32 и “конфигуратора” - 48
    Стоит ещё вместо 0 написать 2 последние цифры серийного номера

По device_id я пробовал всякие варианты, РиМ откликается только на 0. (А в его родной проге адрес почему-то нужно ставить 1, на последние цифры не откликается. Там вообще странно, разрешенные адреса: 1, 16,17,…,155 - что за такие волшебные границы непонимаю).

...,dlms_hdlc:0,32,high,Reader
Getting logical devices...
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 07 03 41 53 56 a2 7e
<7>DEBUG: [port] Sleep 10000 us
<7>DEBUG: [port] ReadFrame: 7e a0 07 41 03 1f 26 ec 7e
<7>DEBUG: [ (dlms:0)] Initialize connection
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 07 03 41 93 5a 64 7e
<7>DEBUG: [port] Sleep 10000 us
<7>DEBUG: [port] ReadFrame: 7e a0 07 41 03 73 4c 45 7e
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 4c 03 41 10 6b 04 e6 e6 00 60 3e a1 09 06 07 60 85 74 05 08 01 01 8a 02 07 80 8b 07 60 85 74 05 08 02 02 ac 12 80 10 67 c6 69 73 51 ff 4a ec 29 cd ba ab f2 fb e3 46 be 10 04 0e 01 00 00 00 06 5f 1f 04 00 00 1e 5d ff ff 13 51 7e
<7>DEBUG: [port] Sleep 82000 us
<7>DEBUG: [port] ReadFrame: 7e a0 37 41 03 30 21 79 e6 e7 00 61 29 a1 09 06 07 60 85 74 05 08 01 01 a2 03 02 01 01 a3 05 a1 03 02 01 0b be 10 04 0e 08 00 06 5f 1f 04 00 00 10 1d 04 00 00 07 d4 55 7e
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 07 03 41 53 56 a2 7e
<7>DEBUG: [port] Sleep 10000 us
<7>DEBUG: [port] ReadFrame: 7e a0 07 41 03 73 4c 45 7e
<3>ERROR: Serial protocol error: AARQRequest failed. Bad response: 277, Authentication mechanism name not recognised.

Но Reader он поидее не для high а для low, но и с SettingRiM489.2X ответ точно такой же. И что с кавычками и что без - одинаково.
Наиболее длинный результат:

...,dlms_hdlc:0,48,high,SettingRiM489.2X
Getting logical devices...
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 07 03 61 53 65 81 7e
<7>DEBUG: [port] Sleep 10000 us
<7>DEBUG: [port] ReadFrame: 7e a0 07 61 03 1f 1d ef 7e
<7>DEBUG: [ (dlms:0)] Initialize connection
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 07 03 61 93 69 47 7e
<7>DEBUG: [port] Sleep 10000 us
<7>DEBUG: [port] ReadFrame: 7e a0 07 61 03 73 77 46 7e
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 4c 03 61 10 58 27 e6 e6 00 60 3e a1 09 06 07 60 85 74 05 08 01 01 8a 02 07 80 8b 07 60 85 74 05 08 02 02 ac 12 80 10 67 c6 69 73 51 ff 4a ec 29 cd ba ab f2 fb e3 46 be 10 04 0e 01 00 00 00 06 5f 1f 04 00 00 1e 5d ff ff 13 51 7e
<7>DEBUG: [port] Sleep 82000 us
<7>DEBUG: [port] ReadFrame: 7e a0 58 61 03 30 07 51 e6 e7 00 61 4a a1 09 06 07 60 85 74 05 08 01 01 a2 03 02 01 00 a3 05 a1 03 02 01 00 88 02 07 80 89 07 60 85 74 05 08 02 02 aa 12 80 10 87 cc 96 26 ef d6 9a ab 1b 26 93 c4 ff 30 f2 a6 be 10 04 0e 08 00 06 5f 1f 04 00 00 10 1d 04 00 00 07 ab 26 7e
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 2b 03 61 32 8d eb e6 e6 00 c3 01 81 00 0f 00 00 28 00 00 ff 01 01 09 10 47 32 c3 44 fa a6 13 f4 81 e9 61 90 d0 01 a6 73 7f ab 7e
<7>DEBUG: [port] Sleep 47000 us
<7>DEBUG: [port] ReadFrame: 7e a0 24 61 03 52 62 dc e6 e7 00 c7 01 81 00 01 00 09 10 28 f6 1d 3d 0e c9 92 6c 0a 82 9d 2e 8d a9 1c 65 05 35 7e
<7>DEBUG: [ (dlms:0)] Connection is initialized
<7>DEBUG: [ (dlms:0)] Getting SAP Assignment ...
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 19 03 61 54 39 98 e6 e6 00 c0 01 81 00 11 00 00 29 00 00 ff 02 00 fe be 7e
<7>DEBUG: [port] Sleep 29000 us
<7>DEBUG: [port] ReadFrame: 7e a0 11 61 03 74 f3 ba e6 e7 00 c4 01 81 01 04 ba f0 7e
<3>ERROR: Serial protocol error: SAP Assignment attribute read failed. Read DLMS packet failed: 4, Access Error : Device reports a undefined object.

И прям точно такой же результат для …,dlms_hdlc:0,32,low,Reader

PS. Оба эти пароля правильные, т.к. если я их искажаю, то получаю: <3>ERROR: Serial protocol error: Authentication failed. Bad response: 279, Authentication failure.

Попробуйте low вместо high

Не, самые лучшие результаты я привел.
А чем расшифровать тот ответ где SAP Assignment attribute read failed. Read DLMS packet failed: 4, Access Error : Device reports a undefined object. Нет онлайн декодера? Вроде у gurux.dlms.GXDLMS должно быть, но там я ничего не понял.

По стандарту внутри должен быть параметр со списком логических устройств и их параметров. Судя по ответу, разработчики РиМ его не реализовали. Из-за этого сканировать нечего. Попробуйте написать им в ТП. Второй вариант это самостоятельно шаблон сделать, все параметры есть в документации РиМ.

Здравствуйте. Расскажите подробнее, что и где поправить - проверим, поправим.

update. Коллеги подсказывают, что уже поправили. Можете ещё раз посмотреть — всё верно сейчас?

Попробуйте подключить счётчик с шаблоном от меркурия 234 или энергомеры 308. Адрес надо указать 0. По идее часть данных должна читаться, тогда можно будет эти параметры в отдельный шаблон вынести. Если нет, то удалённо мы не сможем помочь. Чтобы сделать шаблон нужно иметь счётчик в доступе и возможность мониторить команды, которые их собственная прога выдаёт.

Добрый день. Подскажите чем ваши эксперементы кончились? пытаюсь опросить РиМ 489.14
получаю отлуп сразу…
wb-mqtt-serial -d3 -G print_all,/dev/ttyMOD3,9600-8-N-1,dlms_hdlc:0,16,lowest,Reader

<3>ERROR: Serial protocol error: DisconnectRequest failed. Serial protocol error: request timed out

А если дать вам компьютер с удаленкой к которой такой счетчик подключен и их программа?

Попробуйте

wb-mqtt-serial -d3 -G print_all,/dev/ttyUSB0,9600-8-N-1,dlms_hdlc:0,16,low,Reader

root@wirenboard-AURTJIDY:~# wb-mqtt-serial -d3 -G print_all,/dev/ttyMOD3,9600-8-N-1,dlms_hdlc:0,16,low,Reader
<6>INFO: [serial port] “/sys/class/tty/ttyS5/rx_trig_bytes” = 32
Getting logical devices…
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 07 03 21 53 03 c7 7e
<7>DEBUG: [port] Sleep 10000 us
<3>ERROR: Serial protocol error: DisconnectRequest failed. Serial protocol error: request timed out
root@wirenboard-AURTJIDY:~#

при попытке добавить устройство из веб интерфейса падает сервис

Jan 26 00:23:49 wirenboard-AURTJIDY wb-mqtt-serial[27110]: INFO: [mqtt] subscription succeeded (message id 149)
Jan 26 00:23:49 wirenboard-AURTJIDY wb-mqtt-serial[27110]: ERROR: [serial port driver] FATAL: Serial protocol error: </dev/ttyMOD3 9600 8 N 1> no registers defined. Stopping e
Jan 26 00:23:49 wirenboard-AURTJIDY wb-mqtt-serial[27110]: INFO: [mqtt] subscription succeeded (message id 153)

Замените 16 на 32. Вместо 0 напишите 2 последние цифры серийного номера.

Сегодня взял еще один счетчик для попыток снять данные через ВБ предварительно счетчик проверили соединились черз штатный софт скорость штатная 4800 номер устройства штаное последние две цифры номера… подключаем через доп модуль rs485 установленный в MOD3

root@wirenboard-AURTJIDY:~# wb-mqtt-serial -d3 -G print_all,/dev/ttyMOD3,4800-8-N-1,dlms_hdlc:48,32,lowest,Reader
<6>INFO: [serial port] “/sys/class/tty/ttyS5/rx_trig_bytes” = 32
Getting logical devices…
<7>DEBUG: [port] Sleep 20000 us
<7>DEBUG: [port] Write: 7e a0 08 02 61 41 53 2a 74 7e
<7>DEBUG: [port] Sleep 21000 us
<3>ERROR: Serial protocol error: DisconnectRequest failed. Serial protocol error: request timed out
root@wirenboard-AURTJIDY:~#