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

Вводные:
Wiren Board 6, HW 6.9.1U/1G wb-2207
Модуль расширения WBE2-I-OPENTHERM Nevoton OT-ModBus V2.0 FW 1.3
Котёл BAXI ECOFOUR 1.24 F, подключен/сконфигурирован только контур отопления, перемычка в котле удалена

Суть проблемы:
Сам по себе котёл работает (включается/выключается/управляется кнопками с панели)
Стоит только соединить его кабелем по интерфейсу Opentherm с модулем WBE2-I-OPENTHERM - котёл почти сразу (несколько секунд) выключается. Пишет на экранчике ‘OFF’ и перестаёт реагировать на нажатие кнопок на панели.
Если кабель выдернуть, и перезапустить (выкл/вкл питания) котёл - он оживает, и нормально работает в ручном режиме.
При подключённом кабеле, и демонстрируемой надписи OFF на экранчике, котёл (с оговорками) откликается на воздействия, производимые через интерфейс WirenBoard (в т.ч. команды “прямого обмена”), однако при этом не работает, независимо от задаваемых значений и передаваемых команд (не зажигает горелку, не включает насос и вентилятор),
но, опять же, с одной оговоркой: если послать котлу “прямым обменом” команду чтения ячейки (data-id) 0, задав параметр (Data) с установленным битом 8 (CH Enable), то котёл на краткий миг включается (надпись OFF гаснет, и он чаще всего даже успевает зажечь горелку), но сразу после окончания обмена (т.е. прихода последнего значения (‘4’) в mqtt топик ‘TR Command’) выключается в режим OFF снова.

Рискну предположить, что модуль WBE2-I-OPENTHERM постоянно считывает opentherm ячейку (data-id) 0, передавая при этом данные (data-value) со сброшенным битом 8, что сигнализирует котлу выключиться.

Соответственно, хочется понять, какова логика работы модуля с ячейкой 0, и как можно повлиять на данные, которые передаются модулем в котёл при её чтении?

Прошло уже более 10 дней… Хотелось бы получить ответ хоть на какие-нибудь вопросы…

Добрый день. Я снова на форуме. Болезнь, не мог отвечать. Проблему вашу вижу. Посмотрю как точно работает прозрачный обмен в модулю, отпишусь. Прошу прощения за ожидания.

Выдалась возможность ещё поэкспериментировать с модулем Невотона и котлом. Результаты противоречивые… Но, может быть, они помогут @Vladimir_Nev_Sup всё-таки разобраться с проблемами модуля.

Самое главное: после холодной перезагрузки (по питанию, или через shutdown -P) модуль-таки включает котёл. Т.е. если на котёл подано питание, и он подключен через opentherm к модулю, то котёл включается, и более-менее откликается на управление через WebUI (зажигается, принимает уставку температуры и отдаёт статус).
Это из хорошего. А из плохого: любая попытка чтения ячёйки 0 через регистры “прямого обмена” в итоге приводит к переходу котла в состояние OFF. Как я и писал ранее, если при чтении передавать установленнй бит 8, то котёл на мгновение всё-таки включается, но потом снова уходит в OFF.

Неприятно то, что при этом явно происходят какие-то стохастические процессы. Так, при чтении нулевой ячейки, биты состояния котла, в частности, первый и третий, совершенно не отражают его реальное состояени на момент чтения. Они могут быть установлены, когда котёл, на самом деле находится в состоянии OFF и не горит, или сброшены, когда котёл работает и греет воду (в любом сочетании). Аналогично, после первого же чтения нулевой ячейки, перестаёт нормально работать входной регистр 205 модуля (т.е. то, что приходит в топик Boiler Status перестаёт коррелировать с реальным состоянием котла).

Саможе же тревожное - непредсказуемость результата и “богатая внутренняя жизнь” модуля. Так, из ~20-30 опреаций чтения нулевой ячейки два раза котёл не выключился, как обычно, а продолжал работать. А а один раз он самопроизвольно включился (вышел из состояния OFF) при чтении совершенно посторонней ячейки (если интересно - ячейки 213, которой вообще нет в котле), но повторить этот фокус мне так и не удалось… А “внутреннюю жизнь” можно отследить, запустив команду mosquitto_sub -v -t '#'|grep opentherm, и оставив её поработать некоторое время. Вот один из результатов её работы:

/devices/wbe2-i-opentherm_11/controls/Error Code 252
/devices/wbe2-i-opentherm_11/controls/Error Code 1
/devices/wbe2-i-opentherm_11/controls/Heating Temperature 14
/devices/wbe2-i-opentherm_11/controls/Hot Water Setpoint Min 220
/devices/wbe2-i-opentherm_11/controls/Hot Water Setpoint Min 35
/devices/wbe2-i-opentherm_11/controls/Heating Temperature 13
/devices/wbe2-i-opentherm_11/controls/Heating Temperature 11
/devices/wbe2-i-opentherm_11/controls/Heating Setpoint Min 2
/devices/wbe2-i-opentherm_11/controls/Heating Setpoint Min 30
/devices/wbe2-i-opentherm_11/controls/TR Command 4
/devices/wbe2-i-opentherm_11/controls/Heating Setpoint Min 194
/devices/wbe2-i-opentherm_11/controls/Heating Setpoint Min 30
/devices/wbe2-i-opentherm_11/controls/Heating Temperature 5
/devices/wbe2-i-opentherm_11/controls/Boiler Status 8126
/devices/wbe2-i-opentherm_11/controls/Boiler Status 65
/devices/wbe2-i-opentherm_11/controls/Hot Water Temperature 228
/devices/wbe2-i-opentherm_11/controls/Hot Water Setpoint Min 71
/devices/wbe2-i-opentherm_11/controls/Hot Water Setpoint Max 48
/devices/wbe2-i-opentherm_11/controls/Hot Water Setpoint Max 60
/devices/wbe2-i-opentherm_11/controls/Hot Water Setpoint Min 35
/devices/wbe2-i-opentherm_11/controls/Hot Water Temperature 21
/devices/wbe2-i-opentherm_11/controls/Hot Water Temperature 244
/devices/wbe2-i-opentherm_11/controls/Heating Temperature 5
/devices/wbe2-i-opentherm_11/controls/Hot Water Temperature 201
/devices/wbe2-i-opentherm_11/controls/Hot Water Temperature 244
/devices/wbe2-i-opentherm_11/controls/Error Code 252
/devices/wbe2-i-opentherm_11/controls/Error Code 1

Специально подчеркну, что я, в тот период времени, ни с котлом, ни с модулем, вообще ничего не делал. И если постепенное снижение Heating Temperature - соответствует реальности, то самопроизвольное изменение Setpoint’ов, “взбрыки” Boiler Status и Error Code - абсолютно нет. Но если их изменение ещё можно попытаться списать на проблемы котла или “помехи в линии” (у меня, увы, нет анализатора, и проверить, что в реальности происходит на линии opentherm я не могу), то изменение значения TR Command - точно касается функций самого модуля.

1 лайк

И да, я, наконец-то собрался причесать свой NOTExplorer - думаю, всем, кто мучается со своими котлами и невотоновским модулем, она может оказаться полезной…

Добрый день. Вижу в логах у вас скачки. Это странно. Сейчас ставлю на сутки модуль в WB 7 и котёл Thermona:
image
Потом возьму логи, сравним. Длина кабеля ~12м, сигнальный, экранированный. Если не повторится, 2 варианта, либо неисправный модуль, можно прислать нам, я его поставлю и также проверю, попытаюсь повторить, либо помехи появляются ещё до вхождения данных в модуль.

Насчёт прозрачного обмена. Проверил его в Node-Red сейчас на WB. Порядок такой. Последовательно записываю 209 ячейку 2 (чтение данных) 210 - 18 (ID команды (давление)), 211 - 0 (поскольку чтение). Результат на последним скриншоте.


image
image


512/256 = 2 бар. Как на виджете выше.

Теперь сразу же запрос на чтение статуса котла:


P.S. 4 - Read Acknowledged. Согласно протоколу Opentherm.

1 лайк

То есть в моей связки я, к сожалению, не вижу проблем в работе прозрачного обмена. Если со стороны котла модулю ничто не мешает считывать/записывать параметры, модуль это без проблем сделает

Мн-э-э-э… может это, конечно, я как-то не так спрашиваю, но ни на одну из проблем, которые я описал, и ни на один из вопросов, которые задал, я не получил вообще никакого ответа. Попробую ещё раз, предельно конкретно.

  1. У меня котёл выключается (переходит в состояние OFF), при чтении с помощью прямого обмена ячейки 0, с передачей в качестве данных любого ненулевого значения. Конкретно, после выполнения команд
mosquitto_pub -t '/devices/wbe2-i-opentherm_11/controls/TR Command/on' -m '2'
mosquitto_pub -t '/devices/wbe2-i-opentherm_11/controls/TR ID/on' -m '0'
mosquitto_pub -t '/devices/wbe2-i-opentherm_11/controls/TR Data/on' -m '256'
  1. Модуль невотон производит неконтролируемые спонтанные действия. Отследить их у меня получается задав команду
mosquitto_sub -v -t '#'|grep opentherm

и оставив её поработать некоторое время (30-60 минут) в терминальной сессии. В моём случае выводятся изменения значений параметров управления, которые я не менял.

  1. Опишите, пожалуйста, логику работы модуля с ячейкой 0 ведомого устройства по протоколу opentherm. Как можно повлиять на данные, которые передаются модулем в ведомое устройство при её чтении (например, чтобы включить/выключить контуры отопления и горячего водоснабжения)?

P.S. Буду блаодарен, если другие обладатели модуля WBE2-I-OPENTHERM смогут провести эти нехитрые опыты на своём оборудовании, и поделятся результатами.

P.P.S. Сейчас между модулем и котлом используется экранированная витая пара, 24AWG, по одной паре на каждую линию (т.е. всего используется 4 провода из 8), общей длиной около 1.7 метра.

Логика работы с ID0. Вы всегда её читаете. В отличии от всех команд, даже на чтение, вы можете в Data записать желаемые значения.

Пример. Сейчас у меня на котле.
image

Это 0001 0011 0000 1010. Либо:

Я хочу отключить контур ГВС. Это 0001 0001 0000 1010 либо 4362

.
Записал. Смотрю статус.
image

Как видите, он изменился. Котёл принял новые данные через прозрачный обмен.

Тут описаны биты и их назначение (стр 24):


Протокол OT

Владимир, давайте всё-таки исходить из того, что я представляю себе логику работы opentherm протокола, а в этом общении пытаюсь понять логику работы вашего шлюза.

Вы как-то постоянно пытаетесь уйти от прямых ответов на мои конкретные вопросы, и это меня, честно говоря, расстраивает… Но я обещаю быть терпеливым и понятливым.

Итак, в третий раз переформулирую свои вопросы, чтобы (как мне кажется) облегчить вам их понимание, и, соответственно, увеличить свои шансы на получение ответа.

  1. Я хочу включить у своего котла контур отопления. Для этого я передаю в шлюз команду прозрачного обмена на чтение ячейки котла 0, с установленным битом 1 старшего байта в пакете данных на чтение. Чтобы исключить влияние посторонних программ (типа NodeRed) а также плохо контролируемых и документируемых действий в WebUI, я использую утилиты командной строки, предназначенные для отслеживания и публикации данных в mqtt. А именно: в одной терминальной сессии я запускаю команду mosquitto_sub -v -t '#'|grep opentherm для отслеживания обмена с модулем по интерфейсу mqtt, а в другой - последовательно команды
mosquitto_pub -t '/devices/wbe2-i-opentherm_11/controls/TR Command/on' -m '2'
mosquitto_pub -t '/devices/wbe2-i-opentherm_11/controls/TR ID/on' -m '0'
mosquitto_pub -t '/devices/wbe2-i-opentherm_11/controls/TR Data/on' -m '256'

У меня после этих действий котёл переходит в состояние OFF, и статус его (как правило) становится 0. Повторите, пожалуйста, у себя эти действия, и напишите тут, какой будет результат (конкретно, как прореагировал котёл, и какой вывод дала команда в первой терминальной сессии)

  1. Оставьте, пожалуйста, эту самую первую терминальную сессию с командой mosquitto_sub -v -t '#'|grep opentherm поработать 60 минут (само собой, при условии, что котёл включен, и подключен к модулю WBE2-I-OPENTHERM). Приведите тут, пожалуйста, результаты её работы.

  2. Опишите, пожалуйста, логику работы модуля с ячейкой (data-id) 0 ведомого устройства (котла) по протоколу opentherm. Конкретно, меня интересует, какое значение (DATA-VALUE) передаётся модулем в котёл при чтении (выполнении команды READ-DATA) ячейки (DATA-ID) 0 сразу после подачи питания на модуль (т.е. до любых операций с модулем по шине modbus)? Запоминает ли модуль данные, передававшиеся через команду прозрачного обмена на чтение ячейки 0? Если нет, то как можно проинструктировать модуль включить/выключить контуры отопления и горячего водоснабжения (а также Cooling, OTC и CH2, которые тоже управляются через старший байт DATA-VALUE при чтении DATA-ID 0)? Если да, то где хранится запомненное значение (оперативная память/энергонезависимая память)?

@Vladimir_Nev_Sup, если вам будет удобнее, давайте я разделю три вопроса на отдельные посты.

Тут не совсем понятно.
256 - это поднятый восьмой бит (0b100000000)
Драйвер запишет в регистр 0x100
То есть это нулевой бит старшего байта (CH).

Да, @hamster всё правильно делает. нулевой бит старшего байта чтобы включить контур ЦО.

1 лайк

Повторил, как вы и просили. Отправил 256, получил 258. Дал разрешение на использование контура и котёл тут же его включил. Повторюсь. В своей связки модуля котла (Thermona) я не вижу проблем с прозрачным обменом.

Cпасибо! На часть вопросов ответы я получил, хотелось бы прояснить и остальные (вопросы 2 и 3 из моего предыдущего сообщения в этой ветке обсуждения, и вопросы в WBE2-I-OPENTHERM проблема 2 - #5 от пользователя hamster и WBE2-I-OPENTHERM проблема 3 - #11 от пользователя hamster

В качестве замечания: в приведённом вами протоколе обмена последнее значение ‘TR Data’ == 0, хотя должно было быть 258 (если предположить, что input регистр CD/0205 (aka топик “Boiler Status”) соответствует значению ячейки 0 котла). Это, на мой взгляд, всё-таки свидетельствует либо о том, что модуль работает не совсем так, как описано в документации, либо в документации описано не всё, и не совсем так, как оно есть на самом деле…

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

P.P.S. Было бы, конечно, здорово, чтобы сюда заглянули, и попробовали воспроизвести мои тесты, другие обладатели модулей Невотон. Например, @borg, @Alex_Jet, @vpiyanov, @Shurup, @zelenenkiy, @blog, @vaprol, @bzzeke, @svipsa, @Haggard (это только некотороые ники пользователей, которые писали сюда, на форум поддержки, о схожих проблемах с модулями Невотона…)

1 лайк

Насчёт этого момента. TR Data и Boiler Status это не одно и тоже. Если все данные обнулились (Command и Data), это значит, что пакет прошёл валидность и отправился в котёл. Этот момент указан в инструкции:


Дальше уже в пустых ячейках прозрачного обмена мы ждём ответ от котла.

Доброго дня, коллеги!

@hamster, я рад бы повторить и воспроизвести Ваши “нехитрые” тесты, но у нас на объекте установлен модуль с прошивкой 1.05, там прозрачного обмена ещё не было. Может, я ошибаюсь, не уверен. На команды “TR Command” и остальные две модуль не реагирует, а если принудительно новый шаблон загрузить, они не работают.

При выводе
mosquitto_sub -v -t '/devices/wbe2-i-opentherm_11/#'
не наблюдается хаотичных значений, всё ровно и чётко работает. Да и вообще в логах не было проблем.

У нас другая проблема: периодически (раз в пару дней - раз в неделю) связь отваливается. Модуль при этом якобы работает, команды якобы отправляются, но котёл на них не реагирует, переходит в ручной режим. Но если отключить шину на 30 и более секунд, то котёл уходит в ошибку E31, которая решается перезагрузкой котла по питанию. Связь “приваливается” снова через час (или пять часов, или день, по-разному). Либо если быстро переткнуть шину или перезагрузить WB.
Я тоже думал попробовать прозрачный обмен, но модуль на этой прошивке его, к сожалению, не поддерживает.

Если я чем-то могу помочь в плане тестов - пишите, буду рад поспособствовать. Но подобных проблем как у Вас не наблюдалось у нас от слова совсем.

У меня модуль Невотон работает в связке с Baxi Luna Duo-Tec 1.24 (отопление и бойлер косвенного нагрева). Честно - я намучился с модулем, а более менее он стал работать в связке с моим котлом только с прошивкой 1.3.
От функционала использование регистров “прозрачного обмена” отказался из-за того что котел не адекватно реагировал на команды, а регистр 205 начинал выдавать совершенно не актуальные данные. В итоге - управлять температурой теплоносителя могу, включать/отключать нагрев бойлера - только косвенным образом (изменяя температуру ГВС - либо 55 градусов, либо 25). А “артефакты” в считывании данных очень напрягают!!!
Но я никого не смог убедить в проблемах с прошивкой модуля поскольку не использую WB - у меня связка intraHouse + MegaD-2561 + WBE2-I-Opentherm. Соответственно, разработчики списали на то что я, построив профессиональную систему умного дома, не могу разобраться с помехами/подключить нормально модуль к котлу/плохо работает MegaD-2561 как шлюз UART-HTTP.
Вообще, разочаровался в модуле - архитектура выбрана очень ограниченная, прошивку тестировали плохо (с ограниченным числом котлов), клиентоориентированность - на 3 балла, а сейчас еще и модуль стоит как крыло от самолета!

1 лайк

Добрый день. Да, прошивка старая. В ней ещё много не реализовано. В последней версии есть регистр потери связи с котлом (1 когда нет связи более 5 секунд). Если у вас есть возможность прислать модуль, я могу обновить до 1.4. Да и в целом новая версия должна быть более стабильной. Да, к сожалению возможности самостоятельного программирования пока нет.
image

1 лайк

Был у меня модуль ОТ только внешний, попытался использовать в связке baxi eco4s-овен. При использовании прямых регистров выкл-вкл котла, горячей воды итд прибор нереагировал, отключение котла можно было только уставкой температуры 5градусов, притом контур отопления был всегда на “взводе”. Dwh отключить так и не получилось, Регистры прозрачного обмена работали но через какоето место если честно, т.е если мы ему отправляли команду на отключения, котел отключается показывал off и через какоето время заново включался, было очень много мусора, что просто свело на нет все идеи. Тех поддержка да это что с чемто, даже писать не стоит.

2 лайка