1-wire driver

Драйвер 1-wire содержит ошибку: при выдаче датчиком DS18B20 значения 85 градусов значение не передается и в логе появляется запись ERROR: [w1 driver] Measurement error (/sys/bus/w1/devices/w1_bus_master1/28-08220043… Строки 60-64 в файле sysfs_w1.cpp. Для управления отоплением это критично. Температура может часто переходить через 85

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

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

Также уточните, пожалуйста, в каких условиях и в каком температурном диапазоне используется датчик.
Он единственный у вас?

Добрый день
Архив во вложении.
У меня датчиков DS18B20 более 20. Через 85 переходят 3.
Вопрос не в них.
Драйвер отбраковывает значение 85 от любого датчика.
Ошибка в логике драйвера. Фрагмент с текстом драйвера прислал первом сообщении.

(вложения)

приложен диагностический архив, доступен только сотрудникам поддержки
(418 KB)

Согласно документации датчика DS18B20


Диапазон измерений ограничен сверху +85 °C. Соответственно, считаю что ошибка при достижении данной температуры - нормальное поведение.

Если вы не согласны, то какое поведение ожидаете при достижении +85 °C?

Хм, так судя по коду 85.1 бы вывело норм. Или я не прав?)

Добрый день
При достижении температуры 85 (точно 85. В драйвере 85000) выдается ошибка. Строки в программе на cpp я привел в первом обращении. Значения отличные от 85, меньше или больше, проходят без ошибок.
85,0625 пройдет нормально, 84, 9375 - так же нормально

С уважением,

Добрый день
Диапазон измерений -55 - +125 (в Вашем же письме, первая строка).
Нормируется допустимая погрешность от -10 до 85 - погрешность 0,5%, за пределами диапазона - 2%. Прилагаю страницу из документации

С уважением,

(вложения)

DOC011953598 — копия.pdf (212 KB)

да, вы правы. Простите мою невнимательность.
Действительно, для датчика DS18B20 +85°C является значением при подаче питания:

*The power on reset register value is +85°C.

Однако, это не значит, что при измеренных +85°C должна передаваться ошибка, на мой взгляд. Опишу багрепорт для программистов. Буду держать в курсе по работе над этой задачей.

Просто забейти три строки комментарием и для драйвера вопрос решится. :slight_smile:

С уважением,

Добрый день!

Задача в работе.
Когда будет решение — вам сообщу я или мой коллега.

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

Коллеги внесли правки. Уже можно обновиться и проверить.

Добрый день
Был в отъезде

У меня система wb-2507 stable
Поставил новый вариант драйвера (система даёт их два, на картинке во вложении)
Похоже работает старый
Что нужно сделать?
С уважением
Сергей Токмаков

PS
Решение по новой версии какое-то странное
Не имеет отношения к реальному датчику. Почему такая проверка для 85 а не 84,86 или 25?

Обработка ошибок чтения датчиков DS18B20

В случае чтения с датчика стартового начения (85 градусов), оно сравнивается с предыдущим прочитанным значением. Если разница меньше или равна 10 градусам (из расчета динамики изменения температуры на 1 градус в секунду при опросе датчика раз в 10 секунд), то считается, что получено корректное значение, в противном случае считается, что произошла ошибка измерения. Состояние ошибки сохраняется до момента, пока c датчика не будет прочитано значение температуры, отличное от 85.

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

Видимо, вы не отключили прошлую версию. Для этого:

  1. Остановите драйвер:
systemctl stop wb-mqtt-w1
  1. Удалите прошлую версию:
apt remove wb-mqtt-w1/stable
  1. Запустите драйвер:
systemctl start wb-mqtt-w1

Почему же? как обсуждалось выше, значение 85 - может являться и измеренной температурой и значением при перезапуске питания. Именно поэтому 85.


Теперь wb-mqtt-w1 работает корректно?

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

2 лайка