WB-MSW v.4 скачет показания температуры

Подключили датчик по modbus
Скорость: 38400
Стоп битов: 1
С помощью таблицы регистров вывели значения показания датчиков.
Вопрос 1:
Выводим показания температуры
4 0x0004 Input RO s16 Температура x0.01, °C
Показатель температуры скачет неадекватно, от 35 до 60 градусов, в помещении стоит другой датчик аналоговый на нём показание +22 °C.
Если использовать регистр:
0 0x0000 Input RO s16 Температура x0.1, °C
То вообще теряется связь с оборудованием и ничего не показывает.
Вопрос 2:
Измерение шума, регистр из таблицы:
3 0x0003 Input RO s16 Уровень шума, умноженный на 100 x0.01, дБ
Записывая данный регистр, теряется связь с оборудованием и ничего не показывает, может какие-то ошибки в таблице регистров? или что вообще с этим делать? Могу написать больше вводных, если нужно.
Остальные показатели влажности, движения, освещенности, всё работает норм.

Добрый день.
Покажите пожалуйста запрос регистра (байты) и ответ. Лучше несколько запросов-ответов.
Из описания непонятно что именно получаете и чем результат отличается от ожидаемого.

Добрый день!
Мы используем сторонний конфигуратор от другой системы “умного дома”, в нём я не знаю как посмотреть запросы (байты) и ответ. Можно как то с компьютера вообще проверить датчик? переходник rs-485 на usb есть.

Да, можно, конечно с компьютера. Например с помощью Утилита «modbus_client» — Wiren Board
А вообще способы описаны в Работа с Modbus-устройствами Wiren Board без контроллера — Wiren Board

Не до конца пойму вот эти два регистра, какие в них значения лучше устанавливать?

|113|0x0071|Holding|RW|u16|Время перед отправкой ответа на modbus запрос|
0 - 254 мс||
(у нас на датчике было значение 2мс, звучит слишком быстро разве нет? или я как-то не так это понимаю…)

|114|0x0072|Holding|RW|u16|Режим непрерывного чтения регистров с зазором|**
0 - отключен**
1 - включен
2 - включение сохраняется после перезагрузки|
(какой зазор и что значит непрерывное чтения, до этого оно было прерывное?)

Типовое - 0.
То есть зачем лишние 2мс ждать? Есть системы, с, скажу так, “специфической” реализацией протокола, которые при немедленном ответе устройства - некорректно его обрабатывают.

Режим позволяет читать карту регистров вместе с отсутвующими.
Например есть (существуют) регистры 3, 5 и 7.
Можно читать их по одному (три запроса, по 30-40 мс) или включить режим и прочесть одним запросом 5 регистров с 03 адреса, запрос займет всего 40-50мс. Про этом значения возвращаемые для “отсутствующих” устройств - игнорируем. Когда на шине много устройств - такое позволяет сильно оптимизировать чтения регистров.

При подключении к компьютеру через переходник, показания температуры контроллера +22. А при подключении к нашему оборудованию показания +35. Это является рабочей температурой контроллера?

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

Давайте убедимся что читаете те же данные.
Покажите пожалуйста - какой регистр (регистры) читаете с компьютера. Что получаете при чтении. Предполагаю что input 0 и 4?
Наблюдается ли какие-то ошибки при работе?

Рабочая температура самого датчика -40:+80. При установленном сенсоре CO2 - диапазон меньше.

Регистр 124 внутренняя температура. Регистр 0 не показывает совсем на нашем оборудовании, регистр 4 скачет на ± 10 градусов. Регистр 1 влажность занижена процентов на 10-12.

Нет, температура в 35 - не ожидается.
Внутренний датчик в микроконтроллере менее точен, расхождения можут быть и в несколько градусов.
Для примера:


Видно что при “комнатной” 21,5 внутренний измеряет 19,4
Пробую прочитать его:

modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 60 -t0x03 -r124 -c1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[3C][03][00][7C][00][01][41][3F]
Waiting for a confirmation...
<3C><03><02><00><C5><15><D2>
SUCCESS: read 1 of elements:
	Data: 0x00c5 

modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 60 -t0x04 -r0 -c1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[3C][04][00][00][00][01][35][27]
Waiting for a confirmation...
<3C><04><02><00><DB><94><AE>
SUCCESS: read 1 of elements:
	Data: 0x00db 

Вполне ожидаемо.

И что такое “скачет”? Какие значения читаются?
Например в драйвере wb-mqtt-serial есть Debug который позволяет выводить ввсе данные отправляемые в шину и получаемые из нее.

Разобрались. Спасибо за помощь!