Серьезные проблемы с 1Wire

Спасибо! Это кажется уже более воспроизводимым кейсом. Повторим у себя.

Из своего опыта могу добавить, что 1wire довольно капризная вещь, и ее капризы я компенсирую в программной части. Сейчас у меня, например, в управлении теплым полом работают 5 датчиков ds18b20 в гильзах (покупал в Москве, но думаю что они с Али), замурованы в стяжку, подключены как раз через экранированную витую пару (F/UTP Cat 6), экран НЕ заземлен (висит в воздухе). Работа с ними на низком уровне из arduino. На каждые 2-3 считывания приходится 1 сбой (не совпадение crc или вообще неответ датчика).

При этом я расковырял библиотеку работы с ds18b20 и переписал, выкинув все лишнее. Обычно эти библиотеки универсальны и пытаются определить тип датчика, считать его настройки и т.п. – что занимает много времени и увеличивает вероятность ошибки. У меня же датчики, разумеется, не меняются, я знаю их тип – поэтому я на каждое считывание просто инициализирую нужный датчик и считываю данные и все. Пока я этого не сделал, у меня только 5-10% попыток считывания кончалось успешно, сейчас наоборот 70-80% успешно.

Ну а дальше надо в софте обрабатывать неудачи – например, в моем случае если в течение 5 минут не удалось получить данные – теплый пол принудительно отключается.

Я не знаю, что происходит на уровне драйвера, но датчики безупречно работают длительное время (ни одной ошибки CRC в логах), данные поступают каждые несколько секунд, и они актуальные (смотрю в mqtt). А потом как обрезает - часть датчиков пропадает, будто и не было. Часть присутствует, но данные не актуальны и не меняются, в логах сыплются ошибки CRC.

Очередной отчет. Датчики проработали трое суток без ошибок. Вчера включил WBE2-AO-10V-2. через 4 часа 2 из 4 датчиков пропали, по двум данные не актуальны, ошибки CRC в логах. WBE2-AO-10V-2 при этом работает. Просмотрел все логи - ничего интересного, кроме ошибок CRC. Перезагрузился. Датчики появились, нет ошибок CRC. Но на выходе WBE2-AO-10V-2 нуль, и на команды из web интерфейса никакой реакции.

А вот и снова датчики пропали, теперь уже с отключенным WBE2-AO-10V-2. Четырех часов не прошло. Больше всего это похоже на аппаратный косяк самого WB. Что делать будем? Я готов дать доступ через TeamViewer к свому компу, который соединен с WB.

Увы, но периодические отваливания 1Wire датчиков есть, по-моему, у каждого…

Не только датчиков, но и WBE2-AO-10V-2. И отваливания приводят к полной неработоспособности ВСЕХ датчиков на линии, и помогает только отключение питания от WB.

dust, добрый день!
Скажите, вы WBE2-AO-10V-2 отключали программно, или вынимали из слота?

Программно.

Сегодня утром пробросил новую линию, не экранированным кабелем, отдельной трассой. Заменил датчики на новые. Заработало, ошибок CRC в логах не было. Включил WBE2-AO-10V-2 - завел его на вход A1, чтобы видеть. Включил wifi. Все безупречно работало порядка 6 часов (ни одной ошибки CRC) , а потом датчики вновь пропали. Вновь пошли ошибки CRC. WBE2-AO-10V-2 работает. Т.е. проблема не в линии, не в датчиках, не в WBE2-AO-10V-2, не в wifi.

Полез читать описание драйвера ядра https://www.kernel.org/doc/Documentation/w1/w1.generic). Отключил автоопределение датчиков. Удалил описание всех датчиков. Вручную прописывал по одному датчику. Тут же по этому датчику шли ошибки CRC. Смотрел полученные от датчика данные - по всем датчикам была идентичная картина:
00 02 41 04 7f 7e 00 00 10 : crc=0e NO
00 00 00 00 00 00 00 00 00 t=32000

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

Скажите, это вы делали после того, как датчики отвалились?

После

Ситуация с WBE2-AO-10V-2 стабильна: если ЦАП активировать - датчики отваливаются часто, после отваливания датчика(ов) на выходе ЦАП нули, независимо от того, что мы туда отправляем. Лечится исключительно отключением через web интерфейс, перезагрузкой и подключением обратно. Пока отключил. Еще заметил, что отключение 5V_OUT на WB и повторное включение через минуту иногда лечит отвалившиеся датчики. Wifi точно на процесс не влияет. Техподдержка, АУ! Я все это сам себе на память пишу? Где ваша поддержка?

dust, добрый день! Мы с вами!
К сожалению, пока не могу даже воспроизвести вашу проблему. Мы собрали стенд с конфигурацией модулей, идентичной вашей, который уже скоро неделю как работает без каких-либо сбоев. Сегодня тестируем при плохом качестве соединения 1-wire и с наводками.

Может, дело банально в том, что мой WB неисправен? Меня больше всего удивляет, что рестарт служб и даже перезагрузка кнопкой на WB ситуацию не исправляет, спасает только отключение питания.

@Kilpio: ИМХО на стенде ничего не выявите…

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

Значения с wb-w1/*** маплю на виртуальный девайс с timestamp’ом последнего обновления показаний. Если значения очень старые - обнуляю и перезапускаю питание. Криво, но … датчики могут сыпаться с CRC непредсказуемо.

CRC-ошибки – это частое явление на 1-Wire-шине, с ними можно бороться. Но тут у коллеги сложная ситуация – и другой функционал начинает отказывать.