Добрый день, надеюсь в последнее время не сильно вас утомил своими вопросами.
Условия: имею счетчик меркурий 204, контроллер WB 8.5 с прошивкой 2602.
Цель: собрать интересующие параметры счетчика по протоколу СПОДЭС контроллером WB.
Реализация: завел счетчик в как устройство с протоколом DLMS/Сподэс и необходимые каналы - параметры. До этого изучил вашу документацию на GIT по поводу реализации данного протокола в WB-mqtt-serial. Основное: опрашиваться могут только параметры с классом 3v0.
Проблема: в выбранных параметрах фигурирует “А+ за текущий день по тарифам” (ниже предоставлю информацию по данному параметру с сайта Incotex), который не опрашивается (подсвечивается красным), хотя имеет 3й класс. Применив все свои навыки анализа заметил, что параметры с OBIS-кодами, заканчивающимися на 255, с наличием 1 атрибута и имеющие класс 3v0 нормально опрашиваются контроллером. А проблемный параметр имеет значение во втором атрибуте и иное окончание адреса.
Вопрос: возможно ли как то явно указать в конфигурации Serial устройств плк целевой атрибут для конкретного канала? Пробовал по рекомендации ИИ указывать явно “attribute” в конфигурации, но это не дало результата. Если это нельзя сделать, то дайте пояснения что является проблемой для чтения подобных параметров.
Добрый день.
Вот это использовали для настройки?
Напишите пожалуйста как сконфигурирован сейчас опрос ну и включив debug выложите пару минут логов.
Видел информацию, представленную по вашей 1й ссылке, еще перед началом настройки - чтобы ускорить данный процесс. Сейчас по ссылке на представленной странице также открыл документ с адресацией и убедился, что информация совпадает с моим используемым источником.
Ниже представлены логи, а также прикрепляю файл конфигурации.
PS: посмотрев логи понял, что ошибка по интересующему меня адресу следующая: Access Error : Device reports a undefined object. Но с чем она связана не понятно.
wb-mqtt-serial.conf (7,6 КБ)
wb-mqtt-serial_20260508T102507.log (43,5 КБ)
Да, вижу.
Отправляется верно
2026-05-08T03:25:05.374Z [wb-mqtt-serial] DEBUG: [port] /dev/ttyRS485-1: Write: 7e a0 1c 00 02 14 2b 61 32 76 19 e6 e6 00 c0 01 c1 00 03 01 00 01 09 01 1e 03 00 68 35 7e
Ну и формируется запрос корректно, “01 00 01 09 01 1e 03”
А если записать вместо “address” : “1.0.1.9.1.30”, “address” : “1.0.1.9.255.30”, - начинает работать или меняется? Потому что скорее ввсего существует только “по всем фазам” в устройстве.
Из руководства: “X” может принимать значения от 1 до 4. Однако попробовал поставить 255 и в логах следующее: Read DLMS packet failed: 4, Access Error : Device reports a undefined object.
По факту все также не читает.
А если 0?
Из
описания понятно что если тариф задан - то должно отдавать.
Для того чтобы убедиться - лучше использовать фирменный конфигуратор и опросить с него.
Еще до обращение пробовал подставлять “0” - проблема все так же. По умолчанию у счетчика из коробки присутствует первый тариф.
У меня идеи кончились, тут лучше все ж попробовать опросить его, счетчик с помощью программы от производителя, “Конфигуратора”.
То есть возможно два варианта: уровня прав с которым авторизуетесь недостаточно для чтения (ну, маловероятно, все ж) и передача реализуется другим кодом.
Попробовал прочитать через конфигуратор. Результаты немного двоякие. Упоминание ранее указанного кода я не нашел. Понял, что существует несколько профилей в зависимости от периода интерполяции. При этом в каких то профилях коды параметров могут совпадать, а значения различаться опять же из за разных периодов интерполяции.
Увидел, что используется также следующий код: 03,01.00.01.29.00.255,02. В документации к счетчику он отражает “Активная энергия потребления A+ на текущем интервале”. Но теперь непонятно как при опросе через Wiren board указывать или выбирать профиль или интервал (делать активным) для того, чтобы значение было искомым (за сутки). Встречались ли вы с таким?
Вот это да, показательно.
То есть в документации код описан, но при его запросе устройство отвечает что объекта нет.
Я пока не смог понять из описания - от чего зависит наличие этого объекта, то есть где он выбирается.
Типично все же используют значения из истории самого контроллера, то есть просто от количества энергии на текущий момент - отнимают значение на начало периода.
Надеюсь могу прикрепить тут несколько файлов для пояснения, выгруженных из конфигуратора при чтении как раз указанных профилей.
Пояснение: прикрепляю файлы отчетностей по 4м имеющимся (стандартным) профилям и файл с OBIS-кодами столбцов для каждого профиля. Вся информация взята из счетчика с помощью конфигуратора. Возможно эти данные внесут немного понимания о каких несовпадениях значений параметров одинаковых кодов я имел ввиду.
Коды.xlsx (10,6 КБ)
Профиль 2.pdf (185,7 КБ)
DayProfil.pdf (236,2 КБ)
МonthProfil.pdf (191,9 КБ)
CommercialProfil.pdf (222,1 КБ)
По итогу, на данный момент как будто действительно проще воспользоваться вашим методом расчета значения с помощью разницы, чем искать необходимый код.
Получается что тут не “просто считать” нужно а интерактивно, то есть предварительно выставить то что будет считано (выбрать профиль), причем class_id = 8, потом считать значения и перевыбрать профиль для чтения следующего.
Не получится в текущей реализации драйвера так как отличные от class_id=3 не поддерживаются.
То есть можно реализовать опрос скриптом, например, если воспользоваться GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver · GitHub
- но тут надо разрабатывать.