Округление значений от датчика

Здравствуйте!

Есть модуль аналоговых входов (WB-MAI11), к нему подключены двухпроводные термометры сопротивления 50М, у которых погрешность измерения +/- 1,4°. Но показания поступают с точностью до десятых долей градуса. Зачем такая точность, если погрешность больше градуса? Однако для данного типа датчика в шаблоне нет параметра round_to, а при попытке прописать его для этого канала в конфиге, драйвер не принимает:

WARNING: [serial config] "WB-MAI11 94" Input 1 IN_P channel "Temperature" can't override property "round_to"

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

Вообще-то в README на wb-mqtt-serial написано, что “round_to” — разрешённый параметр внутри настройки канала в wb-mqtt-serial.conf. Почему его отвергают? Вполне разумный вариант был бы.

1 лайк

Достаточно расположить модифицированный шаблон в пользовательском каталоге шаблонов /etc/wb-mqtt-serial.conf.d/templates/

Параметр ведь не может использоваться дважды…

А зачем ограничивать точность? В чем смысл этого?

Спасибо за подсказку! А можно положить ваш же шаблон с тем же именем, но со своими модификациями, чтобы не пришлось править тип устройства в конфиге, но чтобы wb-mqtt-serial работал бы с этим устройством с учётом моих изменений? А если я передумаю, или ваш конфиг станет обеспечивать нужный функционал сам, я просто удалю этот шаблон, и всё снова начнёт работать по-умолчанию?

А его в шаблоне вообще нет, так что в данном случае не дважды. Но вообще в исходниках я нашёл перечень параметров, которые нельзя переопределить через файл конфигурации, и там, в том числе, есть round_to. Видимо, не предполагается, что пользователь может менять этот параметр. Только зачем тогда он (и другие, которые игнорируются) перечислены в ридми как допустимые в wb-mqtt-serial.conf? Или пометили бы их как-то, что они только для использования в шаблонах. Короче, что-то не сходится. :slight_smile:

Вообще, это выросло из вашего нового алгоритма опроса устройств драйвером wb-mqtt-serial. Сейчас алгоритм больше адаптирован под очень быстрый опрос устройств, который можно для определённых каналов ещё больше ускорить. Но параметры, с помощью которых можно ограничить период опроса, объявлены устаревшими. Пока что read_rate_limit_ms ещё работает, но кто знает, когда вы его начнёте игнорировать. И тогда опрос устройств будет происходить чуть ли не каждую секунду-две. И каждый раз датчик будет при опросе возвращать немного разное значение, что приведёт к постоянному флуду не очень точной величины. А у меня эти значения пересылаются в Home assistant, создавая там нешуточную нагрузку. Вот и хотелось бы ограничить таким образом частоту отправляемых показаний (по-умолчанию, значения публикуются в mqtt по факту их изменений).