Термостат OpenTherm на ESP8266

Diminator
Offline
Зарегистрирован: 15.09.2015

Да, спасибо! Уже посмотрел, вроде ничего сложно, можно собрать или заказать у автора, вроде аккуратно все разведено, только боюсь будет долго идти.

а далее вся логика скетч на esp?

knt58dualtv
Offline
Зарегистрирован: 08.01.2019

вы из Украины ?

 

Diminator
Offline
Зарегистрирован: 15.09.2015

из РФ, МО. на митьку завтра сгоняю куплю все что надо, попробую на макетке собрать.

Еще вопрос, а почему так много обсуждается ГВС в регулировках?

miks69
Offline
Зарегистрирован: 16.02.2020

knt58dualtv, пожалуйста, не забивайте тему картинками по азам работы с Arduino IDE

Diminator
Offline
Зарегистрирован: 15.09.2015

miks69 пишет:

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

Даже прочитав, все стало совсем не понятно, в итоге есть нормальный скетч или нет? Или брать с первой страницы и пытаться что-то докрутить?

miks69
Offline
Зарегистрирован: 16.02.2020

Diminator пишет:

Даже прочитав, все стало совсем не понятно, в итоге есть нормальный скетч или нет? Или брать с первой страницы и пытаться что-то докрутить?

Смотря что вам нужно в итоге. Универсального кода нету, каждый пишет под себя и под свои задачи. Можете для начала просто взять пример из библиотеки OpenTherm, а дальше уже докручивать под свои задачи. Здесь, в теме, есть примеры ПИД-управления, есть ссылки на примеры ПЗА-управления.

Diminator
Offline
Зарегистрирован: 15.09.2015

miks69 пишет:

Смотря что вам нужно в итоге. Универсального кода нету, каждый пишет под себя и под свои задачи. Можете для начала просто взять пример из библиотеки OpenTherm, а дальше уже докручивать под свои задачи. Здесь, в теме, есть примеры ПИД-управления, есть ссылки на примеры ПЗА-управления.

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

На самом деле хотелось устройство управляющее котлом по openTherm с веб страницей для конфигурирования (базовая конфигурация) и возможность настроить и получить внешние данные по mqtt от комнатного термостата и уличного датчика для работы низкотемпературного отопления. Т.е. запрос тепла, уставка температуры носителя на основе внешней температуры с последующим обучением на основе скорости теплопотерь здания. Если данных нет или проблемы со связью включать базовые установки чтобы не замерзнуть.

Но это на уровне новичка который до сих пор в битве с BME280 )))

miks69
Offline
Зарегистрирован: 16.02.2020

Diminator пишет:

Но это на уровне новичка который до сих пор в битве с BME280 )))

А что не получается с BME280? У меня все прекрасно работает с библиотекой Adafruit.

miks69
Offline
Зарегистрирован: 16.02.2020

Diminator пишет:

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

На самом деле хотелось устройство управляющее котлом по openTherm с веб страницей для конфигурирования (базовая конфигурация) и возможность настроить и получить внешние данные по mqtt от комнатного термостата и уличного датчика для работы низкотемпературного отопления. Т.е. запрос тепла, уставка температуры носителя на основе внешней температуры с последующим обучением на основе скорости теплопотерь здания. Если данных нет или проблемы со связью включать базовые установки чтобы не замерзнуть.

Ну в целом задача понятная, но многое зависит от нюансов. В процессе проработки алгоритмов вы сами поймете, что вам нужно, а что нет. Я, например, тоже для себя решаю похожую задачу, но со своими заморочками. Пишите вопросы, которые возникают, народ всегда поможет советом или примером кода. У вас какая модель котла? Комнатный термостат и уличный датчик на чем? Можно и с программированием помочь, если надо...

Diminator
Offline
Зарегистрирован: 15.09.2015

miks69 пишет:

А что не получается с BME280? У меня все прекрасно работает с библиотекой Adafruit.

Я использую EasyESP (что-то подобное и хотел с котлом), но пробовал и Adafruit, сложнее и я не разобрался как учитывать высоту над уровнем моря. С EasyESP проще, но показания этого датчика оставляют желать лучшего :( Из 5 только один начал показывать что-то подходящее. Потом температура упала до -27 и он застрял на -19. Сейчас отстает на 2 градуса. Ну и добавить вынос датчика минимум на 10см от питания... не соскучишься. 

miks69
Offline
Зарегистрирован: 16.02.2020

Diminator пишет:

miks69 пишет:

А что не получается с BME280? У меня все прекрасно работает с библиотекой Adafruit.

Я использую EasyESP (что-то подобное и хотел с котлом), но пробовал и Adafruit, сложнее и я не разобрался как учитывать высоту над уровнем моря. С EasyESP проще, но показания этого датчика оставляют желать лучшего :( Из 5 только один начал показывать что-то подходящее. Потом температура упала до -27 и он застрял на -19. Сейчас отстает на 2 градуса. Ну и добавить вынос датчика минимум на 10см от питания... не соскучишься. 

У меня только один такой датчик, и он оработает с самого начала без проблем, в т.ч. на днях показывал реальные -27 в МО. Высоту над уровнем моря вам никак учитывать не надо, т.к. датчик измеряет и показывает фактическое давление в точке установки. Если нужна моя помощь, пишите в личку, т.к. здесь это офф-топ...

Diminator
Offline
Зарегистрирован: 15.09.2015

miks69 пишет:

Ну в целом задача понятная, но многое зависит от нюансов. В процессе проработки алгоритмов вы сами поймете, что вам нужно, а что нет. Я, например, тоже для себя решаю похожую задачу, но со своими заморочками. Пишите вопросы, которые возникают, народ всегда поможет советом или примером кода. У вас какая модель котла? Комнатный термостат и уличный датчик на чем? Могу и с программированием помочь, если надо...

У меня Bosch WBN-6000 без ничего, есть еще Baxi на в нем все это встроено и он не интересный. К этому у меня есть самосборный электрический котел на симисторах которым управляет ПЛК, там я все сам писал и запихнул туда включение газового котла простой перемычкой. Электрический работает идеально, газовый, особенно в межсезонье, просто жопа. Вот и хочу от ПЛК уйти, он хоть и надежный как лом но управлять OpenTherm'om так задача посадки на марс, +единственный доступный протокол это ModBus, что тоже геморрой.

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

Diminator
Offline
Зарегистрирован: 15.09.2015

miks69 пишет:

Если нужна моя помощь, пишите в личку, т.к. здесь это офф-топ...

по ходу я совсем дубовый, как на этом форуме писать в личку?

miks69
Offline
Зарегистрирован: 16.02.2020

Diminator пишет:

miks69 пишет:

Если нужна моя помощь, пишите в личку, т.к. здесь это офф-топ...

по ходу я совсем дубовый, как на этом форуме писать в личку?

Походу это форум дубовый

tsv_33
Offline
Зарегистрирован: 11.04.2019

Diminator, я когда создавал эту тему, то был в самом начале своих познаний. Сейчас имею законченное устройство, как в железе, так и в его мозгах. Всё, о чём вы писали у меня реализовано, web, mqtt, дистанционные датчики, том числе на BME280 и множество повторений единомышленниками.

Diminator
Offline
Зарегистрирован: 15.09.2015

tsv_33 пишет:

Diminator, я когда создавал эту тему, то был в самом начале своих познаний. Сейчас имею законченное устройство, как в железе, так и в его мозгах. Всё, о чём вы писали у меня реализовано, web, mqtt, дистанционные датчики, том числе на BME280 и множество повторений единомышленниками.

Это действительно очень круто! Но не могли бы вы поделиться наработками?

(И все-же, на этом форуме можно писать в личку или я еще не дорос?)

tsv_33
Offline
Зарегистрирован: 11.04.2019

Diminator, так я уже поделился, ссылку ранее давал https://yadi.sk/d/Qcu-3S7WqdUTHg

Diminator
Offline
Зарегистрирован: 15.09.2015

tsv_33 пишет:

Diminator, так я уже поделился, ссылку ранее давал https://yadi.sk/d/Qcu-3S7WqdUTHg

Почему-то ссылку прозевал в потоке коллективного сознания! Спасибо, буду изучать! А есть какой-то способ понадоедать глупыми вопросами напрямую?

tsv_33
Offline
Зарегистрирован: 11.04.2019

Diminator пишет:

А есть какой-то способ понадоедать глупыми вопросами напрямую?

Да, на почту.

miks69
Offline
Зарегистрирован: 16.02.2020

Залил прошивку BME280_3.05_weather_station.ino.d1_mini.bin в Wemos D1 mini, подключился к WiFi manager, указал свою сеть для подключения, перезагрузка... опять перезагрузка.... опять перезагрузка... и т.д.

Serial log:

Монтируем файловую ÑиÑтему...
Чтение конфигурационного файла...
Открытие конфигурационного файла
{"hostname":"outdoor","mqtt_server":"","mqtt_port":"","mqtt_username":"","mqtt_password":""} парÑинг json
Загружено из EEPROM
zero = 0.00

*WM: [3] allocating params bytes: 20
*WM: [2] Added Parameter: hostname
*WM: [2] Added Parameter: server
*WM: [2] Added Parameter: port
*WM: [2] Added Parameter: mqtt_username
*WM: [2] Added Parameter: mqtt_password
*WM: [1] AutoConnect
*WM: [2] Connecting as wifi client...
*WM: [3] STA static IP:
*WM: [2] setSTAConfig static ip not set, skipping
*WM: [1] Connecting to SAVED AP: MT-WiFi-98F4
*WM: [3] Using Password: XXXXXXXXX
*WM: [3] WiFi station enable
*WM: [3] enableSTA PERSISTENT ON
*WM: [1] connectTimeout not set, ESP waitForConnectResult...
*WM: [2] Connection result: WL_CONNECTED
*WM: [3] lastconxresult: WL_CONNECTED
*WM: [1] AutoConnect: SUCCESS
*WM: [1] STA IP Address: 192.168.88.170
Wi-Fi, ОК! ЕÑÑ‚ÑŒ Ñоединение... :-)
HTTPUpdateServer ready! Open http://outdoor.local/update in your browserÐе удалоÑÑŒ найти датчик BME280, проверьте правильноÑÑ‚ÑŒ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð½Ð¸Ð¼!
--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Soft WDT reset

>>>stack>>>

ctx: cont
sp: 3ffffdb0 end: 3fffffc0 offset: 01a0
3fffff50:  3ffefde0 3ffefc0c 3ffe84dd 4020711d  
3fffff60:  00706300 00657461 80000000 00000000  
3fffff70:  70747400 76616600 802277c4 402277b0  
3fffff80:  3fff1dc8 00000000 feefeffe feefeffe  
3fffff90:  feefeffe feefeffe feefeffe 3ffeff2c  
3fffffa0:  3fffdad0 00000000 3ffefeec 4021daa0  
3fffffb0:  feefeffe feefeffe 3ffe8508 401011bd  
<<<stack<<<

tsv_33
Offline
Зарегистрирован: 11.04.2019

miks69, перед заливкой прошивки нужно полностью очистить память в Wemos D1 mini.

miks69
Offline
Зарегистрирован: 16.02.2020

tsv_33 пишет:

miks69, перед заливкой прошивки нужно полностью очистить память в Wemos D1 mini.

Если прошивка стартует (а судя по логу она стартует), то должна быть как минимум сделана корректная обработка содержимого памяти.

После заливки прошивки 22.05_myOpenTherm.ino.d1_mini.bin даже WiFi manager не загрузился...

tsv_33
Offline
Зарегистрирован: 11.04.2019

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

Diminator
Offline
Зарегистрирован: 15.09.2015

tsv_33 пишет:

Да, на почту.

В фаиле "Прочти меня.txt" ваш адрес?

tsv_33
Offline
Зарегистрирован: 11.04.2019

Да.

dizzel
Offline
Зарегистрирован: 21.03.2016

tsv_33

Подскажите у вас графики в web-морде (линк "Лог")реализованы через home assistant/mqtt функционал?

mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021

Old Navi, за основу построения термостата для своего котла Ferolli Domiproject F24 взял ваш код.  Сегодня обнаружил такой баг: при пропадании интернета термостат не работает. В чем может быть проблема? MQTT или wifi

OldNavi
Offline
Зарегистрирован: 22.08.2019

А сервер MQTT тоже в интернете ? Или локально запущен ?

mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021

Короче , после восстановления электроснабжения , wifi роутер не запустился , ну и соответственно интернета тоже не было. MQTT в интернете. Я прикрутил LCD дисплей и в функции setup прописал инициализацию LCD и вывод на дисплей надписи. Так вот судя по этой надписи, esp  затыкается на функции  setup_wifi();

  display.print("OT init");
  display.display();
  delay(2000);
  menu = LCD_IDLE;
  Serial.println("LCD init");
  setup_wifi();

 

OldNavi
Offline
Зарегистрирован: 22.08.2019

Я бы все таки сервер MQTT использовал локальный, по множеству соображений и безопасность в том числе. ESPшка не использует SSL шифрование для MQTT и оставлять дыру в управлении котлом не найс. Рекомендую home assistant в нем тоже есть MQTT сервер интеграция, а если надо ходить из интернета у них есть за небольшие деньги облачный доступ.  Или, пробросить морду своего Home Assistant в интернет (ессно с SSL и пароли не типа 123456).

tsv_33
Offline
Зарегистрирован: 11.04.2019

dizzelл, лог независимый, самого термостата.

mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021

У меня есть Home Assistant сконфигурированный, настроенный , но вместе с ESP и смартфоном (mqtt dash) они работают через интернет MQTT сервер.  У меня пока нет малины или лишнего компа c линуксом, чтобы круглосуточно гонять HA сервак.

 

 

mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021
LCD init
 
mounting FS...
mounted file system
reading config file
opened config file
{"mqtt_server":"node02.myqtthub.com","hostname":"opentherm","mqtt_port":"1883","mqtt_user":"ххххххх","mqtt_password":"хххххххх","mqtt_prefix":"opentherm"}
parsed json
Загружено из EEPROM
Режим = 0
Уставка отопления = 23.00
Уставка ГВС = 48.00
Компенсация внешней Температуры = 0
Отопление = 1
Наклон кривой = 1.50
Мониторинг = 0
Цикл обновления MQTT = 120000
Рециркуляция = 1
*WM: [3] allocating params bytes: 20
*WM: [2] Added Parameter: hostname
*WM: [2] Added Parameter: server
*WM: [2] Added Parameter: port
*WM: [2] Added Parameter: user
*WM: [2] Added Parameter: passwd
*WM: [1] AutoConnect 
*WM: [2] Connecting as wifi client... 
*WM: [3] STA static IP:
*WM: [2] setSTAConfig static ip not set, skipping 
*WM: [1] Connecting to SAVED AP: Mistert83_2
*WM: [3] Using Password: хххххххх
*WM: [3] WiFi station enable 
*WM: [3] enableSTA PERSISTENT ON 
*WM: [1] connectTimeout not set, ESP waitForConnectResult... 
*WM: [2] Connection result: WL_CONNECTED
*WM: [3] lastconxresult: WL_CONNECTED
*WM: [1] AutoConnect: SUCCESS 
*WM: [1] STA IP Address: 192.168.10.104
WiFi connected...
local ip
192.168.10.104
*WM: [3] freeing allocated params! 
*WM: [3] unloading 
HTTPUpdateServer ready! Open http://opentherm.local/update in your browser
Соединяемся с  MQTT сервером ...
 
и дальше тишина в эфире
OldNavi
Offline
Зарегистрирован: 22.08.2019

Ну видимо что то с сетью, соединение с сервером MQTT не установлено. Что то зависло на уровне соединения. Попробуйте с другим брокером.

mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021

Так это я понял, я  специально отключил инет от точки доступа чтобы, сэмитировать ситуацию. Я просто думаю , как сделать обход соединения MQTT (в случае его отсутствия)  и переход программы к работе opentherm при отсутствии подключения к инету. 

Котёл после восстановления электропитания ждёт команд от термостата, а термостат  (программа) не может дойти до управления котлом , так как после перезагрузки повис на соединении с mqtt. Если котёл не получает этих команд , то он работает по минимально допустимой температуре теплоносителя 30 градусов и квартира плавно охлаждается до 16 градусов, пока я на работе :))) Неприятная ситуация. 

OldNavi
Offline
Зарегистрирован: 22.08.2019

Вы симитировали плохой вариант недоступности, у вас первым делом завис DNS ресловинг на таймаут поскольку вы отрубили интернет и как следствие  DNS. Как минимум пропишите просто IP адрес, это уже обсуждалось. Прошивка будет пытаться переконектится  каждые 5 секунд, так прошито в прошивке (можно исправить) и в промежутках там все остальные потоки успевают отрабатывать. А поскольку включили ресолвинг имен - то нужно ждать таймаут DNS что ощутимо дольше 5 секунд. А вызов MQTT connect() в библиотеки - блокирующий на уровне TCPIP.

Но лучший совет - разоритесь на малинку,это не те деньги чтобы экономить и поднимите там все (HA, MQTT и тд)

tsv_33
Offline
Зарегистрирован: 11.04.2019

OldNavi пишет:

Но лучший совет - разоритесь на малинку,это не те деньги чтобы экономить и поднимите там все (HA, MQTT и тд)

Откажитесь от применяемой в проекте библиотеки PubSubClient в пользу AsyncMqttClient.

OldNavi
Offline
Зарегистрирован: 22.08.2019

Если честно, то лень переписывать - в моем сетапе текущего функционала мне достаточно.  Может когда нибудь руки дойдут, но вообще это же OpenSource - кто мешает сделать форк, переписать используя AsyncMqtt и потом предложить Pull Request. Или автор должен бесконечно переписывать код для всех кому хочется иной функциональности ?

tsv_33
Offline
Зарегистрирован: 11.04.2019

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

mistert83
mistert83 аватар
Offline
Зарегистрирован: 24.01.2021

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

Кстати, после  допиливания вашей прошивки и  регулировки ПИД регулятора , достиг точности поддержания температуры в квартире в +/- 0,2 градуса. После этого выкинул нафиг китайский термостат POER RTC 10.   

leonzone
Offline
Зарегистрирован: 31.12.2019

OldNavi пишет:
Или автор должен бесконечно переписывать код для всех

вот реально, поддерживаю. зафлудили тему конкретно! пора отписываться от темы... мне было надо - от корки до корки сто раз перечитал и добился желаемого на основе твоего кода, ещё раз спасибо)

tsv_33 пишет:
законченное устройство, как в железе, так и в его мозгах

и вам спасибо за адаптер!

Сейчас перешел на ESPHome, всё таки для Home Assistant куда удобнее использоваться нативные средства, чем каждый раз расчехлять Arduino IDE и вылавливать очередные баги в MQTT или коде (особенно когда Си впервые тут и увидел). И всю логику перенес в Home Assistant, ни к чему это на контроллере. Получилась простейшая и рабочая прошивка с идеальной интеграцией в "умный дом".

Кто хочет взглянуть, набросал архивчик

Diminator
Offline
Зарегистрирован: 15.09.2015

leonzone пишет:

и вам спасибо за адаптер!

Сейчас перешел на ESPHome, всё таки для Home Assistant куда удобнее использоваться нативные средства, чем каждый раз расчехлять Arduino IDE и вылавливать очередные баги в MQTT или коде (особенно когда Си впервые тут и увидел). И всю логику перенес в Home Assistant, ни к чему это на контроллере. Получилась простейшая и рабочая прошивка с идеальной интеграцией в "умный дом".

Кто хочет взглянуть, набросал архивчик

Совершенно верно и полностью согласен. Я именно так и буду делать. Учитывая что у меня два котла, электрический и газовый иметь два различных отдельно настраиваемых устройства нет смысла. На самом деле мне от OpenTherm контроллера нужно только работать непосредственно с котлом и общение с MQTT. Да, нужна примитивная страница для подключения к WiFi и основная уставка, температура которая сообщается котлу в случае аварии, недоступности сервисов или еще каких-то ситуациях.

На просторах я встретил решение где espпишка держала питанием релюшку которая в случае сбоя отключалась тем самым тупо замыкала контакты котла, превращая его в обычный тупой обогреватель по теплоносителю, не экономно, но не замерзнешь. На сколько я понимаю у котла OpenTherm реализован именно на этих контактах. По крайней мере у меня именно так.

Все остальное надо делать на центральном контроллере, это правильно и удобно в плане нативного конфигурирования. Если еще добавить раздельного отопления теплым полом и радиаторным отоплением то реализация на esp становиться проблемой или совсем кастомным решением.

Я посмотрел в вашем примере ПЗА но не очень его понял. Не могли бы вы коротко логику описать?

Давно смотрел вебинар инженеров бакси, где те обсуждали идеальный ПЗА, если я тогда правильно понял, то идеальный ПЗА это заставить котел работать непрерывно выровняв его мощность с теплопотерями строения. И если я не напутал, делается это вводом динамического коэффициента: улица - скорость набора тепла в помещении. Но и тут проблема, все это актуально для радиаторного отопления а вот когда вы отапливаетесь раздельно, теплый пол и радиаторное отопление наступают проблемы.

Для новичка, подскажите, для управления котлом хватит OpenTherm адаптера и ESP-01? И для чего в примерах OpenTherm Gateway, Master и Slave?

OldNavi
Offline
Зарегистрирован: 22.08.2019

Master - это когда термостат управляет котлом.  Slave это когда он в принципе только мониторит котел, либо другое устройство со статусом Master (другой термостат например)

Diminator
Offline
Зарегистрирован: 15.09.2015

OldNavi пишет:

Master - это когда термостат управляет котлом.  Slave это когда он в принципе только мониторит котел, либо другое устройство со статусом Master (другой термостат например)

Спасибо. А gateway для чего?

tsv_33
Offline
Зарегистрирован: 11.04.2019

Diminator пишет:

OldNavi пишет:

Master - это когда термостат управляет котлом.  Slave это когда он в принципе только мониторит котел, либо другое устройство со статусом Master (другой термостат например)

Спасибо. А gateway для чего?

Собственно, из перевода сего слова - шлюз. Устройство, которое взаимодействует как с котлом, так и с термостатом. Можно мониторить, а можно перехватить связь.

miks69
Offline
Зарегистрирован: 16.02.2020

Наблюдая за работой своего устройства заметил, что периодически получаю Request Timeout в ответ на очередной запрос по OpenTherm. В среднем 1-2 раза за 5 минут. Какой-то закономерности или взаимосвязи с другими событиями пока не нашел.

Кроме того, иногда приходят ошибочные ответы на запросы (Invalid Response), в которых видно, что 1-2 бита ответа считаны неверно.

Интересно, только мой котел так себя ведет или у всех такая история?

knt58dualtv
Offline
Зарегистрирован: 08.01.2019

какой способ доступит до эти настройки

ID=10: Number of Transparent-Slave-Parameters supported by slave

Data: 18
miks69
Offline
Зарегистрирован: 16.02.2020

miks69 пишет:

Наблюдая за работой своего устройства заметил, что периодически получаю Request Timeout в ответ на очередной запрос по OpenTherm. В среднем 1-2 раза за 5 минут. Какой-то закономерности или взаимосвязи с другими событиями пока не нашел.

Кроме того, иногда приходят ошибочные ответы на запросы (Invalid Response), в которых видно, что 1-2 бита ответа считаны неверно.

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

Кому интересно доработки можно найти в моем форке библиотеки на гитхабе - https://github.com/miksumin/OpenTherm/

Там же можно найти дополнительные примеры использования библиотеки, включая примеры использования библиотеки в асинхронном редиме и примеры тестирования OpenTherm ID.

golosun
Offline
Зарегистрирован: 31.10.2016

Добрый день Гуру.

Имеется котел Viessmann VITOPEND 100-W, и пытаюсь подружить его с девайсом. Читает все, почти без проблем (напр. дата и год - надо поменять местами байты), но это не проблема. А вот записать - при установке температуры бойлера в НОЛЬ ( ot.setBoilerTemperature(0) ), нагрев отключается, в любое другое значение -  включается, и работает, как установлено на пульте котла, независимо от передаваемой температуры. Есть лог:

 

21:09:13.172 -> -----------------------------------------------------------------------------------------
21:09:13.377 -> Central Heating: on
21:09:13.377 -> Hot Water: off
21:09:13.377 -> Flame: on
21:09:13.825 -> Boiler temperature is 65.00 degrees C
21:09:14.033 -> Температура теплоносителя = 65.00градусов С
21:09:14.033 -> Отопление выключено
21:09:14.033 -> --------------------------------------------------------------------------------------------
21:09:15.038 -> ID=0: OpenTherm status request
21:09:15.244 -> Fault status: off
21:09:15.244 -> CH mode: on
21:09:15.244 -> DHW mode: off
21:09:15.244 -> Flame status: on
21:09:15.244 -> Cooling status: off
21:09:15.244 -> CH2 mode: off
21:09:15.244 -> Diagnostic event: off
21:09:15.658 -> Boiler temperature is 65.00 degrees C
21:09:15.658 -> ID=5: Fault flags & code
21:09:15.866 -> OEM-specific fault/error code (HEX): 0
21:09:15.866 -> Service request: off
21:09:15.866 -> Lockout-reset: off
21:09:15.866 -> Low water press: off
21:09:15.866 -> Gas/flame fault: off
21:09:15.866 -> Air press fault: off
21:09:15.900 -> Water over-temp: off
21:09:15.900 -> ID=115: OEM diagnostic code
21:09:16.904 -> Error: Response timeout
21:09:16.904 -> ID=3: Slave configuration & MemberID code
21:09:17.144 -> MemberID code (HEX): 21
21:09:17.144 -> DHW present: on
21:09:17.144 -> Control type modulating: off
21:09:17.144 -> Cooling supported: off
21:09:17.144 -> DHW config: off
21:09:17.144 -> Master low-off&pump control function allowed: on
21:09:17.144 -> CH2 present: off
21:09:17.144 -> ID=125: OpenTherm protocol version
21:09:17.352 -> Error: Invalid response f07d0000
21:09:17.352 -> ID=127: Slave product version
21:09:17.556 -> Product type: 1
21:09:17.556 -> Product version: 87
21:09:17.556 -> ID=17: Relative Modulation Level, %
21:09:17.764 -> Data: 0.0
21:09:17.764 -> ID=18: CH water pressure, bar
21:09:17.971 -> Error: Invalid response f0120000
21:09:17.971 -> ID=19: DHW flow rate, L/min
21:09:18.178 -> Data: 0.0
21:09:18.178 -> ID=20: Day of Week & Time of Day
21:09:18.418 -> Day of week: 0
21:09:18.418 -> Hours: 7
21:09:18.418 -> Minutes: 37
21:09:18.418 -> ID=21: Date
21:09:18.626 -> Month: 8
21:09:18.626 -> Day of month: 3
21:09:18.626 -> ID=22: Year
21:09:18.833 -> Year: 58631 
21:09:18.833 -> ID=25: Boiler water temp (°C)
21:09:19.041 -> Data: 62.0
21:09:19.041 -> ID=26: DHW temperature (°C)
21:09:19.248 -> Data: 58.0
21:09:19.248 -> ID=27: Outside air temperature (°C)
21:09:19.486 -> Error: Invalid response f01b0000
21:09:19.486 -> ID=28: Return water temperature (°C)
21:09:19.690 -> Error: Invalid response 701c0000
21:09:19.690 -> ID=29: Solar storage temperature (°C)
21:09:19.897 -> Error: Invalid response f01d0000
21:09:19.897 -> ID=30: Solar collector temperature (°C)
21:09:20.104 -> Error: Invalid response f01e0000
21:09:20.104 -> ID=31: Flow water temperature CH2 circuit (°C)
21:09:20.310 -> Error: Invalid response 701f0000
21:09:20.344 -> ID=32: Domestic hot water temperature 2 (°C)
21:09:20.550 -> Error: Invalid response 70200000
21:09:20.550 -> ID=33: Boiler exhaust temperature (°C)
21:09:20.757 -> Error: Invalid response f0210000
21:09:20.757 -> ID=116: Number of starts burner
21:09:20.964 -> Data: 19252
21:09:20.964 -> ID=117: Number of starts CH pump
21:09:21.170 -> Data: 3890
21:09:21.170 -> ID=118: Number of starts DHW pump/valve
21:09:21.375 -> Data: 21357
21:09:21.375 -> ID=119: Number of starts burner during DHW mode
21:09:21.615 -> Data: 21357
21:09:21.615 -> ID=120: Number of hours that burner is in operation (i.e. flame on)
21:09:21.823 -> Data: 1
21:09:21.823 -> ID=121: Number of hours that CH pump has been running
21:09:22.030 -> Data: 3890
21:09:22.030 -> ID=122: Number of hours that DHW pump has been running or DHW valve has been opened
21:09:22.239 -> Error: Invalid response 707a0000
21:09:22.239 -> ID=123: Number of hours that burner is in operation during DHW mode
21:09:22.447 -> Error: Invalid response f07b0000
21:09:22.447 -> ID=6: Remote boiler parameter transfer-enable & read/write flags
21:09:22.655 -> DHW setpoint read/write: off
21:09:22.655 -> max CHsetpoint read/write: on
21:09:22.655 -> DHW setpoint transfer-enable: on
21:09:22.689 -> max CHsetpoint transfer-enable: off
21:09:22.689 -> ID=48: DHW setpoint upper & lower bounds for adjustment (°C)
21:09:22.897 -> DHWsetp low-bound: 40
21:09:22.897 -> DHWsetp upp-bound: 80
21:09:22.897 -> ID=49: Max CH water setpoint upper & lower bounds for adjustment (°C)
21:09:23.102 -> Error: Invalid response e0310000
21:09:23.102 -> ID=50: OTC heat curve ratio upper & lower bounds for adjustment  (°C)
21:09:23.309 -> Error: Invalid response e0310000
21:09:23.309 -> ID=56: Domestic hot water temperature setpoint (°C)
21:09:23.515 -> Data: 42.0
21:09:23.515 -> ID=57: Maximum allowable CH water setpoint (°C)
21:09:23.722 -> Data: 80.0
21:09:23.722 -> ID=58: OTC heat curve ratio (°C)
21:09:23.931 -> Error: Invalid response f03a0000
21:09:23.966 -> ID=10: Number of Transparent-Slave-Parameters supported by slave
21:09:24.175 -> Data: 0
21:09:24.175 -> ID=12: Size of Fault-History-Buffer supported by slave
21:09:24.382 -> Data: 10
21:09:24.382 -> ID=15: Maximum boiler capacity (kW) / Minimum boiler modulation level(%)
21:09:24.590 -> Error: Invalid response f00f0000
21:09:24.590 -> ID=9: Remote override room setpoint
21:09:24.798 -> Data: 0.0
21:09:24.798 -> ID=100: Remote override function
21:09:25.002 -> Manual change priority: off
21:09:25.002 -> Program change priority: off
21:09:25.002 -> Finished
 
Есть идеи, опыт, мысли ... с этим котлом?
tsv_33
Offline
Зарегистрирован: 11.04.2019

golosun, марка котла, а равно и девайс не причём. Причём прошивка в девайсе. Приведённый лог только больше вопросов вызывает...