WBE2-I-OPENTHERM проблема 1 strikes back

Поскольку основная тема по проблемам с opentherm модулем были автоматически закрыта (совершенно не понимаю этот принцип… и почему именно семь дней? похоже на какой-то мистический карго-культ: как будто проблема исчезнет, если закрыть тему, в которой она обсуждается…), а две других так и ждут ответа от @Vladimir_Nev_Sup аж с 18 апреля (т.е. уже более полугода!) - открою новую, где и отвечу @BrainRoot, @Vladimir_Nev_Sup, а также @Shurup, @HighTower @Alex_Jet и всем остальным, страдающим пользователям модуля opentherm от невотона, разом.
Итак, что касается “моего пути с модулями невотон”, то благодаря любезности сотрудников Wirenboard, которые заменили мой модуль WBE2-I-OPENTHERM, по гарантии, на новый, мне удалось избежать геморроя с самостоятельной перепрошивкой (вариант: с пересылкой модуля для прошивки в другой город), и мне в руки попал модуль с прошивкой аж версии 1.5. Увы, но в результате получилось по Илье Ильфу: радио есть, а счастья - нет.
Не знаю, что именно изменилось в прошивке этой версии (до этого, у меня не работала версия 1.3, на сайте nevoton.ru, раздела истории версий для их модуля нет вообще, а на сайте wirenboard.com история заканчивается версией 1.4.1), но никаких изменений в поведении контроллера с моим котлом (BAXI Ecofour 1.24F) я не заметил вообще. Он всё также переходит в режим OFF при попытке чтения ячейки 0 при использовании команд “прямого обмена”, и вообще спонтанно “глючит”, как это и было раньше, и описано мной в темах WBE2-I-OPENTHERM проблема 1 WBE2-I-OPENTHERM проблема 2 WBE2-I-OPENTHERM проблема 3 и подтверждено несколькими другими пользователями злосчастного модуля на этом форуме.
В том числе и поэтому, мне приходится констатировать, что ссылка на “список протестированных моделей котлов”, которую дал в теме WBE2-I-OPENTHERM проблема 1 - #57 от пользователя BrainRoot @BrainRoot - бесполезна, ибо мой котёл в списке “протестированных” есть, а нормально работать с модулем невотона он не хочет. Кто именно и как проводил тестирование - я не знаю, но ко мне (как человеку, заведомо имевшему проблемы с предыдущей версией прошивки) для подтверждения работоспособности новой версии никто не обращался. Почему-то мне кажется, что и к другим несчастным пользователям сего модуля, которые поднимали соответствующие вопросы на этом форуме – тоже…
Так как откровенно совковый сервис Мособлгаза (который уже почти как год назад обещал газифицировать мой дом, и с тех пор постоянно динамит свои обещания), наконец, после многочисленных обращений и жалоб, начал шевелиться, и пуск газа из категории влажных мечт всё-таки переходит в категорию вероятного будущего, а работоспособного решения управления моим газовым котлом на базе WirenBoard я так и не имею, я понял, что и с невотоновским модулем ситуация сама собой не изменится.
Соответственно, мне пришлось самому наколхозить из игрушечного осциллографа DSO203 подобие логического анализатора, и дописать к софту логического анализа данных sigrok модуль декодирования протокола OpenTherm. С помощью этих, изготовленных из подручных материалов, приборов мне удалось документально зафиксировать по крайней мере два бага в прошивках модуля opentherm от невотона, версий вплоть до 1.5:

  1. Некорректный отсчёт временных интервалов манчестерского кодирования
  2. Ошибка работы с пользовательским значением ячейки статуса.

Проблема номер 1 выглядит (в PulseView с моим opentherm decoder) вот так:

Согласно спецификации OpenTherm 2.2, допустимое отклонение длительности периода импульса в меньшую сторону – 100мкс, в большую – 150мкс. Тут на лицо отклонение 210мкс в большую сторону, что в спецификацию совершенно не укладывается.

Проблема номер 2 выглядит (в выводе sigrock-cli с моим opentherm decoder) вот так:

        3635110-        3652043 (   7.270-   7.304)     opentherm-1: Frame M2S READ-DATA(0) 127/0x7f 0/0x0
        3691068-        3708176 (   7.382-   7.416)     opentherm-2: Frame S2M UNKNOWN-DATAID(7) 127/0x7f 0/0x0

        4087379-        4104311 (   8.175-   8.209)     opentherm-1: Frame M2S READ-DATA(0) 0/0x0 4902/0x1326
        4143050-        4160155 (   8.286-   8.320)     opentherm-2: Frame S2M READ-ACK(4) 0/0x0 2/0x2
        4539640-        4556573 (   9.079-   9.113)     opentherm-1: Frame M2S READ-DATA(0) 0/0x0 2/0x2
        4595276-        4612384 (   9.191-   9.225)     opentherm-2: Frame S2M READ-ACK(4) 0/0x0 2/0x2
        4992250-        5009182 (   9.985-  10.018)     opentherm-1: Frame M2S READ-DATA(0) 5/0x5 0/0x0
        5047283-        5064392 (  10.095-  10.129)     opentherm-2: Frame S2M READ-ACK(4) 5/0x5 0/0x0

Тут тоже требуется пояснение. Я читаю ячейку 0 котла, передавая в команду чтения значение 4902 (или 1326 в шестнадцатеричной системе), что соответствует дефолтному значению, как про это писал @Vladimir_Nev_Sup ( тут WBE2-I-OPENTHERM проблема 1 - #44 от пользователя Vladimir_Nev_Sup ) и как я вижу по протоколу обмена. Однако в дальнейшем, при циклическом опросе, модуль использует при опросе не переданное мной значение (4902), как можно было бы предположить из упомянутого выше ответа @Vladimir_Nev_Sup (который, увы, как обычно, не ответил на уточняющий вопрос), а значение, считанное из соответствующей ячейки котла (2), которое, при передаче его в команду чтения, собственно и приводит к выключению котла, согласно формату данных обмена, по спецификации.

Есть и ещё всякие мелочи… Например, по спецификации, в случае ошибки обмена, мастер должен посылать команду повторно, а модуль невотона тупо пробегает всю свою последовательность обмена, не реагируя на ошибки обмена (в том числе, постоянно пытаясь считать ячейки, на которые котёл отвечает, что их не поддерживает (в моём случае, это ячейки 18, 27, 126 и 127))

Итого:

  1. Настоятельно прошу @Vladimir_Nev_Sup исправить найденные мной ошибки, самостоятельно (и тщательно!) протестировать исправленную версию, и опубликовать тут результаты (были ли, по факту, найдены ошибки, результаты выполнения которых я тут привёл, и в какой версии firmware модуля они исправлены).
  2. Связанная с этим просьба к @BrainRoot – исключить из списка протестированных как минимум мою модель котла (BAXI Ecofour 1.24F), а, по-хорошему, и модели котлов всех других пользователей, которые жаловались на проблемы с модулем WBE2-I-OPENTHERM, до подтверждения исправления ситуации со стороны упомянутых пользователей.
  3. Рассчитываю, что WirenBoard и Невотон договорятся, и организуют бесплатную замену или перепрошивку модулей WBE2-I-OPENTHERM для всех пользователей, которых затронули обсуждаемые проблемы.
3 лайка

@hamster, как говорится - “респект и уважуха”. Но судя по моей переписке со службой ТП Невотон - это все как мертвому припарки. По моему запросу и наставлению, наверное, только спустя год немного доработали прошивки…
А на прозрачный обмен - я так и забил…сделал костыльное управлениенагревом ГВС изменением с 25 на 55 и обратно.

@hamster, поддерживаю!
только чувствую что сейчас придёт Богер, обидется и предложит вернуть модуль и деньги, попутно уточнив что модуль не их разработка, а невотона и они его просто продают
по сути, как я считаю, opentherm это открытый протокол, а каждый производитель уже интерпретирует его как захочет (к сожалению). поэтому по хорошему, в модуле надо выбирать тип устройства (generic opertherm по дефолту и список реально протежируемых котлов), т.к. с каждым котлом работа чуть-чуть будет отличаться

по чтению - тоже сложилось впечатление что читается заданный список по кругу, хотя логичнее читать то что отдаёт котёл (возврат к модели) или же чуть умнее, если связь есть (наверное контроль вычитки id = 0) и если Х раз не удалось вычитать какой то id, то выкидывать его их цикла до пропадания связи (проблем с чтением id = 0)
так же разумно читать разные параметры с разными весами, т.к. тот же id = 0 читать часто, т.к. там режим работы, а какие нибудь минимумы и максимумы гвс - очень редко, т.к. в принципе они и не меняются (но могут конечно же)

предположу, что имеющие быть проблемы с “нереальными” значениями, которые ведёт модуль и про которые отвечают что это провода неправильные или наводки, могут быть связаны как раз с таймингами… и тут два варианта, или в коде явно ошибка, если код однопоточный, или если многопоточный, то блокировки в другом потоке который приводят к этому… а может просто неправильный выбор базовой железки, которая не может обеспечить в принципе достаточную точность отсчётов времени.
с учётом хотя бы невозможности обновления прошивки нормальными методами из за нехватки места под данный функционал в модуле, логичным выглядит замена на более старшую модель, но этого не будет сделано в текущих реалиях
а прошивка сырая и страдать будем долго ещё…

1 лайк

Спасибо за подробный анализ работы, сейчас в отпуске, как выйду - проанализирую. Пока отвечу, что да, опрос идет циклически, 0 команда повторяется чаще, прозрачный обмен отправляется один раз. Осциллографом проверю, но на этапе тестирования проблем не было, возможно, выход тайминга за пределы связан с импортозамещенным контроллером, это мы тщательно проверим.

1 лайк

Мой котёл ниже 30 не дает ставить, и на низких значениях температуры начинает сильно “тактовать”. Так что как временное решение это, наверное, прокатит, но вообще, не иметь возможности выключить управляемое оборудование штатным способом, это… даже не знаю как сказать что…

1 лайк

У меня тоже поначалу сложились разные впечатления, но в итоге, я получил фактические данные о том, что происходит на шине обмена с котлом. И да, “если бы директором был я”, я бы многое сделал по другому. Но тут - хочется, чтобы хоть очевидные баги исправили!

Насчёт “нереальных” значений - на мой взгляд, это явно программный баг. И да, скорее всего именно он (или они) приводят к той нестабильности обмена, которая наблюдается.

А контоллер, очевидно, имеет смысл использовать на уровень выше. Даже просто из-за возможности прошиться из-под штатной OS, без приседаний с вытаскиванием платы и пр. (вообще, не хочется критиковать без достаточных на то оснований, но 28К программной памяти выглядят вполне достаточными для подобного рода логики, уж не знаю, на чём оно там написано… не на Go каком-нибудь ли?)

Побуду занудой, но нет, команда чтения ячейки 0 (если вы её имели в виду) не выполняется чаще. Она идёт в общем цикле опроса, и повторяется там ровно один раз.

Осциллограф тут не поможет. Кроме посмотреть форму сигнала и помехи (на помехи у меня есть отдельный пунктик, в который я пока вообще не лез, но это другая история). Обязательно нужен логический анализатор. То, что у DSO203 очень маленький буфер, и, кроме того, он норовит порушить файловую систему на своей флешке при его переполнении, сильно затрудняет детальный анализ. Я пока не смог однозначно определить условия, кода именно возникают сбои тайминга, именно по этим причинам.
Что касается “импортозамещённого контроллера” - то у меня на обоих модулях установлен фирменный Microchip из “досанкционных” партий (20го и 21го годов выпуска).

P.S. Ещё важная тема, которую упустил в стартовом посте: у вас в цикле постоянно, т.е. фактически, раз в 10 секунд, независимо от наличия изменений каждого параметра, отдаются команды на запись ячеек котла (1, 56, 129, 2, 126), при том, что в вашей же документации про ваш контроллер написано “Адрес хранится в энергонезависимой памяти шлюза с ограниченным числом циклов перезаписи в 100000, поэтому не рекомендуется частая смена адреса”. Если контроллер котла хранит передаваемые ему параметры в такой же “энергонезависимой памяти с ограниченным числом циклов перезаписи”, то подобная циклическая запись без необходимости приведёт к тому, что энергонезависимая память котла быстро “протрётся до дыр”, и котлу потребуется замена “мозгов”, что, для интеллектуальных котлов, весьма накладно. Очень желательно запись без нужды вообще не производить!

И вообще, ещё в апреле я просил ( WBE2-I-OPENTHERM проблема 2 - #8 от пользователя hamster ) прошивку, которая не делает ничего, кроме прозрачного обмена. Вы тогда так ничего и не ответили, а проблема уже могла быть решена…

более универсально поиметь настройку режима работы модуля

  • как сейчас, когда модуль сам читает + прозрачный обмен доступен
  • только прозрачный обмен

чтобы не плодить кучу прошивок и проблем с переходом от одной до другой, т.к. это не просто

вот у меня и рациональное предложение строить цикл чтения как то так

  • полный список параметров (id) которые хотим читать (с весами, т.к. теже уставки редко меняются)
  • читаем 0, разбираем, смотрим режим работы. если, скажем, горелка не работает, то не читаем модуляцию (отдаём 0), понижаем приоритет температурам подачи и обратки
  • если ошибок нет, то не читаем оем ошибки
  • если какой то параметр (например давление, в моём случае) не читается 5 раз подряд (циклов), то помечаем его и не читаем более до потери связи, после восстановления снова помечаем все параметры что надо читать и находим недоступные

прозрачные команды в общем цикле может стоит отправлять не раз за цикл, а не чаще раз в 5 сек

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

Да, если мечтать о “прекрасном модуле wbe-i-opentherm будущего”, можно сходу накидать несколько весьма полезных идей. А если бы его разработка была в опенсорсе, то и реализовывать их можно было бы сообща, избежав всех тех прелестей, что мы имеем с модулем сейчас… Однако, насколько я понял из сообщений @Vladimir_Nev_Sup, у них сейчас проблема в том, что их прошивка перестала помещаться в 28К памяти PIC16F18326, так что о новом функционале, до перехода на более вместительный контроллер, даже мечтать не стоит. Хватило бы места на исправление багов…

Да, исходя из обнаруженных мной “особенностей” (читай - багов) прошивки, любая работа с ней со стороны WB должна строиться с обязательным учётом подобных “взбрыков” (т.е. нужно обязательно проверять результат всех команд записи, т.к. они могут случайным образом “теряться” или “видоизменяться”, и быть готовым к тому, что конкретная операция чтения вернёт “мусор”, и нужно ориентироваться на среднее за некий период времени, и отбрасывать явные экстремумы).

1 лайк

Аналогичная ситуация с hamster. Котел Baxi Ecofour. Wirenboard 6, модуль WBE2-I-OPENTHERM fw.1.3. При подключении кабеля opentherm котел переключается в дистанционное управление, включает контур отопления и ГВС. С WB устанавливается температура, приходит состояние, вроде всё норм. Но не нужен мне сейчас контур ГВС, пытаюсь отключить по прямому управлению через регистры. И любое чтение ID0 переводит котел в OFF (отключение). Восстановить управление получается только после жесткой перезагрузки и котла, и WB6 - снятие и подачи питания. Простая перезагрузка Reboot ничего не меняет. Любое чтение ID0 кратковременно на долю секунды переводит во включение контура отопления без зажигания пламени, после чего котел опять сваливается в OFF.

1 лайк

Добрый день.

Меня зовут Дмитрий.

Меня подключили вместе с нашими разработчиками для решения возникшей острой ситуации.
За сегодняшний день (03.04.2024) изучив проблемные ветки форума мы согласовали план мероприятий с нашим руководством и инженерами.
В понедельник будем договариваться о встрече с представителями WB
Никого из формурчан без внимания не оставлю.
Буду держать вас в курсе событий в этой теме.

Инженер по применению.
Лесников Дмитрий.

3 лайка

Спасибо за подход к решению проблем :slight_smile:

Opentherm:
1.6 Добавлена функция принудительного отключения контуров ГВС и ЦО при превышении уставки
1.4.1 Добавлены команды для поддержки работы с котлами BAXI Slim;
Исправлены ошибки при работе с уличным датчиком температуры в режиме «Outdoor Temperature Sensor»;
Изменены графики климатических кривых для уличного датчика температуры (графики приведены в инструкции).
1.4 Добавлены параметры: Статус ошибки связи с котлом (0/1).
1.3 Добавлены параметры: Температура возвратной воды ЦО (°C).

eBus:
1.4 Исправлена ошибка сброса Modbus настроек устройства до заводских;
Исправлены ошибки при работе с уличным датчиком температуры в режиме «Outdoor Temperature Sensor».
1.3 Добавлены параметры:
Давление воды в котле (бар).
Модуляция пламени/ТЭНов (%).
Статус ошибки связи с котлом (0/1).
Текущее состояние котла;

И посмотрите, пожалуйста, (если ещё не) те отчёты, которые я посылал вам в телеграм-бот поддержки. К сожалению, там общение тоже замерло, и тоже не по моей вине :frowning:

Добрый день!
Просьба еще обратить внимание на вопрос о добавлении функционала в прошивку: WBE2-I-OPENTHERM добавить функционал в прошивку

Приветствую

И не забудьте про оптимизацию чтения раз и два

так же интересен вопрос про обновление до актуальных версий
решений для имеющих модули со старыми версиями кроме как вытаскивать модуль и ехать к вам в офис (или отправлять почтой\курьером) не появилось?