Добрый день.
Не получается снимать показания с эл. сч. РиМ 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
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
Проверьте корректность выбранного порта устройства, настройки порта, адреса физического устройства и клиента, пароль.
Хорошо что Вы напомнили, про эту ошибку в документации в утилите Вам писали в прошлом году в телеге - в реале 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, какие обязательные.
В документации РиМ пароли заданы для “считывателя показаний” - 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.
Не, самые лучшие результаты я привел.
А чем расшифровать тот ответ где SAP Assignment attribute read failed. Read DLMS packet failed: 4, Access Error : Device reports a undefined object. Нет онлайн декодера? Вроде у gurux.dlms.GXDLMS должно быть, но там я ничего не понял.
По стандарту внутри должен быть параметр со списком логических устройств и их параметров. Судя по ответу, разработчики РиМ его не реализовали. Из-за этого сканировать нечего. Попробуйте написать им в ТП. Второй вариант это самостоятельно шаблон сделать, все параметры есть в документации РиМ.
Попробуйте подключить счётчик с шаблоном от меркурия 234 или энергомеры 308. Адрес надо указать 0. По идее часть данных должна читаться, тогда можно будет эти параметры в отдельный шаблон вынести. Если нет, то удалённо мы не сможем помочь. Чтобы сделать шаблон нужно иметь счётчик в доступе и возможность мониторить команды, которые их собственная прога выдаёт.
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)
Сегодня взял еще один счетчик для попыток снять данные через ВБ предварительно счетчик проверили соединились черз штатный софт скорость штатная 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:~#