Замена одного датчика WB-MS другим

Добрый день!
Ранее установил WB-MS (SN1102372).
проработал пару лет и поддох. Освещенность валится вниз потом подымается, стал вести себя не адекватно. Я решил его заменить и купил парочку. Один из них: 4272349314. Второй уже установил.
Адрес на датчике был 174. Я решил, что заменю адрес в морде и у меня все подхватится. По итогу передается только входное напряжение, остальные показатели покраснели и замерли.
Что не так? Как его подхватить?
Потом создал новый девайс с теми-же настройками и этим адресом, результат тот-же. Рестартовал и MQTT и правила, и сериал девайсы, ребутил, поплясал в общем как обычно, ничего не помогло. Что-то я не учитываю. Что? В итоге сгонял на замену 150км и теперь вручную вместо датчика управляю системой. чтоб у Заказчика вопросов не возникло ко мне… Пожалуйста, подскажите… (

Добрый день.
По описанию не очень понятно, но: устройство с SN 1102372 - это WB-MS-THLS 2016 года выпуска.
https://wirenboard.com/wiki/WB-MS_v.1_Sensor
а заменяете его современным
https://wirenboard.com/wiki/WB-MS_v.2_Modbus_Sensor

У них разные таблицы регистров:
https://wirenboard.com/wiki/Sensors_Modbus_Management
Поэтому вместе с заменой самого MS надо менять (просто перевыбрать) и шаблон.

Добрый день! Я это понимал, и судя по таблице у меня освещенность должна была совпасть

Провсто попробуйте получить значение регистра с помощью Modbus_client.

адрес устройства 174. Совпадает

Другими словами я вижу, что данные на вид верные.

Да. Соответственно - сам MS работает. Поменяйте шаблон.

Вот мой шаблон, он с приведениями. Извините))
Что в нем не так?

{
    "device_type": "WB-MS-THLS v.2 PARAM",
    "device": {
        "name": "WB-MS / WB-MSW PARAM",
        "id": "wb-ms-thls-v2-param",
        "max_read_registers": 0,
        "channels": [
            {
                "name": "Temperature",
                "reg_type": "input",
                "address": 0,
                "type": "temperature",
                "format": "s16",
                "scale": 0.1,
                "error_value": "0x7FFF"
            },
            {
                "name": "Humidity",
                "reg_type": "input",
                "address": 1,
                "type": "rel_humidity",
                "scale": 0.1,
                "error_value": "0xFFFF"
            },
            {
                "name": "Illuminance",
                "reg_type": "input",
                "scale":0.01,
				"address": 2,
                "type": "lux"
            },
            {
                "name": "Sound_Level",
                "reg_type": "input",
                "address": 3,
                "scale": 0.01,
                "type": "sound_level"
            },
            {
                "name": "Input_Voltage",
                "reg_type": "input",
                "address": 121,
                "scale": 0.001,
                "type": "voltage"
            },
            {
                "name": "External_Sensor_1",
                "type": "temperature",
                "reg_type": "input",
                "address": "6",
                "format": "s16",
                "scale": 0.0625,
                "error_value": "0x7FFF"
            },
            {
                "name": "External_Sensor_2",
                "type": "temperature",
                "reg_type": "input",
                "address": "7",
                "format": "s16",
                "scale": 0.0625,
                "error_value": "0x7FFF"
            }
        ]
    }
}

Я буду дальше копать в этом направлении, но пока что не получается добиться результата. Например температуру со встроенного датчика я теперь должен снимать с адреса 4.
Я поправил шаблон, перезаписал шаблон, изменений не вижу.

Что нужно сделать, какой порядок действий, для вступления нового отредактированного шаблона в силу? Я просто перезаписал, потом рестартанул сериал, не помогло, потом сменил шаблон на другой, потом вернул на этот… сейчас дуду чистить задвоения00 но температура как не показывалась так и не показывается

чтобы не быть голословным. Я вот так поменял, например, этот фрагмент шаблона:

{
                "name": "Temperature",
                "reg_type": "input",
                "address": 4,
                "type": "temperature",
                "format": "s16",
                "scale": 0.01,
                "error_value": "0x7FFF"
            },

До этого менял немного названия каналов, чтобы понять обновляется ли шаблон в контроллере - обновляется. Но в итоге данные все-равно не идут. Что теперь не так?

Достаточно перезапустить serial

Как минимум надо посмотреть в лог чтобы увидеть причину. Покажите что там, связанное с MS?

Какой релиз ПО контроллера?
Если дорелизный - то какой версии wb-mqtt-serial?

Контроллер:
изображение

Какой именно лог нужно смотреть? Подскажите, какой файл открыть или какой командой вызвать?

Для старого ПО - смотреть надо в /var/log/message.

Dec  6 13:03:05 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:07 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:09 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:10 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:12 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:13 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:15 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of device modbus:174: Serial protocol error: illegal data value
Dec  6 13:03:17 wirenboard-AFDB3MCD user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 6 input(s) @ 2 of d

проблемы с форматом?
вернее с типом?:

"type": "temperature",

Нет

Попытка считать 6 регистров сразу начиная с 2.
Можно поменять установку “max_read_registers” на 1. Но лучше и правильней - просто использовать соответствующий шаблон для устройства.

1 Like

перевыбрать на какой? Я так полагаю у меня его нет. на старом контроллере…
на старом датчике все работало. А в шаблоне по сути описание используемых регистров, я мог бы просто заменить скрипт. Где найти “новый”?

Текущий шаблон тут:

Но на старых версиях ПО может не работать “как есть” так как wb-mqtt-serial кардинально переработан.

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

Не могли бы мне скинуть спецификацию шаблона, который понимает мой контроллер? Чтобы в ней были возможные варианты типов переменных, полей и тд, чтобы я мог, не тыкаясь, а опираясь на документ настраивать датчики на мой контроллер?

Менять нет необходимости. ПО обновляется, 6.x контроллеры еще вполне актуальны и под них регулярно выходят обновления.