Перейти к содержанию
Искать в
  • Ещё...
Поиск контента, содержащего...
Поиск результатов в...

Удаленное управление котлом Vaillant по шине eBus + CalorMatic 470

alexob

Рекомендуемые сообщения

Всем привет.

 

У меня в доме установлено оборудование Vaillant: котел Vaillant ecoTEC + бойлер Vaillant VIH R 150/5 + Vaillant CalorMatic 470. Система работает все норм. Но у меня есть желание управлять отоплением удаленно, т.е. через интернет. На первом этапе хочу сделать это пока что с компьютера в доме, а там уже не сложно и выйти "наружу" :)

 

Покопавшись в интернете, нашел несколько тем, где люди пытались и делали такое, вот несколько ссылок:

 

Учет расхода газа или дальнейшее изучение протокола Vaillant и e-Bus

 

Подключение котла Vaillant atmoVIT к компьютеру

 

Управление котлом по eBUS. Часть 1

 

но все останавливалось на каком-то этапе и подробностей было не очень много.

 

Автор первых двух статей подключился к котлу по RS 232, (не во всех котлах эта шина есть), но о шине eBus упоминает немного.

 

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

 

После пары-тройки недель изучения протокола eBus и принципов работы, я разобрался и у меня все получилось. :)

 

Буду в этой ветке выкладывать мои наблюдения и результаты работы, возможно еще кому-то будет полезна эта тема.

 

В итоге хочу получить простой способ управления отоплением дома. Это будет веб сайт (в будущем - приложение под iOs, Android), на который я смогу зайти откуда угодно и проконтролировать состояние отопления дома, и при необходимости, подрегулировать температуры, управлять бойлером и т.п.

  • Лайк 10
Ссылка на комментарий
Поделиться на другие сайты

возможно еще кому-то будет полезна эта тема.

Очень интересно. Протокол Е-бас закрытый, но с Вайлантовским оборудованием интересно в этом плане играться (просторы для почти умного дома рисуются)

 

Очень интересно будет

 

А вы осцилографом расшифровывали?

Ссылка на комментарий
Поделиться на другие сайты

Почему сразу закрытый? Там кромшредеровская база, а на ней куча всего построено.

 

Не такая уж и тайна этот протокол, просто вайлант не видит целесообразности выводить на рынок продукт, позволяющий удаленно управлять аппаратом.

 

Бош/будерус увидел и на рынок выводит. Скоро и вайлант подтянется

Ссылка на комментарий
Поделиться на другие сайты

eBus протокол открытый, но... каждый производитель, кто на нем связывает аппаратные части системы, использует свои команды. Вот команды у вайланта закрыты, вернее он их не афиширует в массы.

 

Но реверс-инжиниринг никто не отменял, и поэтому многие копали и копают в сторону открытия команд. Некоторые достигли очень хороших результатов. Лично мне очень помогла работа вот этого парня github.com/john30.

  • Лайк 1
Ссылка на комментарий
Поделиться на другие сайты

Для начала необходимо было подключится компьютером к шине eBus.

Я выбрал адаптер USB-eBus по немецкой схеме с опторазвязкой, т.к. подключаться планировал просто "врезаясь" в существующую шину между котлом и CalorMatic-ом.

 

attachment.php?attachmentid=494430&stc=1&d=1457558345

 

attachment.php?attachmentid=494431&stc=1&d=1457558412

 

По изготовлению самого адаптера мне помог форумчанин Денис (Denz), за что ему огромное спасибо. Платы заказывались в Китае, тут собирались и приводились в человеческий вид.

 

Вот так получилось:

 

attachment.php?attachmentid=494429&stc=1&d=1457558204

 

Адаптер заработал сразу, без каких-либо настроек и т.п.

Пр подключении его к USB порту ноутбука, драйвера устанавливаются автоматически (Windows 10), в общем все как по маслу :)

560807247_MagicalSnap-2016_03_0923.16-002.jpg.169021d1f1760648585714f9a313f9b9.jpg

1089404755_MagicalSnap-2016_03_0923.18-003.png.aa2254cbb0b4a63e253d0a93adba0a59.png

981998092_MagicalSnap-2016_03_0923.19-004.png.00fa9de4c2ff64407c8042d7843eb05a.png

  • Лайк 9
Ссылка на комментарий
Поделиться на другие сайты

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

 

Но существует штатное решение этого вопроса если кто не захочет иметь дело с кулибинством...

VAILLANT COMDIALOG

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

  • Лайк 3
Ссылка на комментарий
Поделиться на другие сайты

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

 

Но существует штатное решение этого вопроса если кто не захочет иметь дело с кулибинством...

VAILLANT COMDIALOG

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

 

Да, я знаю о таком решении, но на самом деле не все так просто как хотелось бы. Для пользования этой системой необходимо воспользоваться услугами датацентра Vaillant. У них есть свои сервера, через которые собственно и идет обмен информацией самого устройства comDialog и оконечным пользователем. Чтобы подключится к ней, необходимо закупить оборудование, заключить договор с вайлант, они произведут вам настройки, и по всей видимости за использование их серверов будут взымать какую-то абонплату. Опять же, это скорее всего в Украине не работает, максимум Россия. И доступ предоставлен к далеко не всем настройкам котла (хотя конечно самое важное там есть).

 

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

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

 

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

 

Но это же безумно ДОЛГО :) но и я думаю будет дорого :)

 

К тому же, они врядли дадут доступ к более точным и глубоким настройкам котла. К примеру я сейчас умею с компьютера меня все, что есть в настройках котла, даже такие вещи как ограничить максимальную мощность, управлять работой внутреннего насоса, устанавливать время блокировки горелки и т.п. Я понимаю что, рядовому пользователю оно в принципе и не нужно, главное уметь менять температуры подачи, включать-выключать бойлер, и всякое такое - ну в общем то, что вынесено в CalorMatic. Хотя CalorMatic сам предоставляет много функций, которые уже в нем заложены, типа настройки временных зон, подбор температуры теплоносителя по кривой отопления, "Тупой котел" этого делать естественно сам не умеет, главное правильно и красиво им управлять.

 

Что-то я многа букав понипасывал :) Я просто это делаю для себя, в свободное время, информацией поделюсь - не жалко. Затраты мизерные - это идет на уровне хобби. Кто-то вышивает крестиком в свободное время, кто-то телик смотрит, а я вот протокол вайлант ламаю :D

  • Лайк 7
Ссылка на комментарий
Поделиться на другие сайты

Сразу выложу документацию, по которой можно почитать о протоколе eBus.

Ну во первых на вики-страничках, для тех кто владеет языками. Тут практически всю документацию можно найти, но также я выкладываю файлик, который относится конкретно к командам Vaillant.

 

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

eBus Specifications - Physical Layer - OSI 1 - Data-Link Layer - OSI 2 v.1.3.1.pdf

eBus Specifications - Applications Layer - OSI 7 v.1.6.1.pdf

Appendex to eBus Specifications - Applications Layer - OSI 7 v.1.4.1.pdf

eBus Specifications - Applications Layer - OSI 7 - Vaillant specific extensions v.0.6.0.pdf

  • Лайк 4
Ссылка на комментарий
Поделиться на другие сайты

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

 

Запустил на компе снифер, установил настройки виртуального COM-порта: обязательно 2400 бод (это стандартная скорость работы eBus протокола).

 

Как и ожидал снифер показал череду байтов "АА". Это байты синхронизации. Между этими байтами проскакивают периодически пакеты, которые CalorMatic шлет котлу. В общем все отлично, связь установлена.

 

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

Потом попробовал сам вкинуть пакет на шину. Самым сложным было правильно его сформировать, т.к. там нужно вставлять байт CRC для верификации пакета. Вот расчет CRC на языке C#

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Vaillant.Common {

   public static class CRCUtils {

       private static byte CRC8Calc(byte data, byte crcInit) {
           
           var crc = crcInit;
           byte polynom;
           for (var i = 0; i < 8; i++) {
               
               polynom = ((crc & 0x80) != 0) ? (byte)0x9B : (byte)0x00;
               crc = (byte)((crc & ~0x80) << 1);

               if ((data & 0x80) != 0)
                   crc = (byte)(crc | 1);

               crc = (byte)(crc ^ polynom);
               data = (byte)(data << 1);
           }
           return crc;
       }

       public static byte CalculateCRC(byte[] buffer) {

           byte uc_crc = 0;
           for (var i = 0; i < buffer.Length; i++)
               uc_crc = CRC8Calc(buffer[i], uc_crc);
           return uc_crc;
       }

       public static bool CheckCRC(byte[] buffer, byte crc) {
           return CalculateCRC(buffer) == crc;
       }

   }
}

  • Лайк 5
Ссылка на комментарий
Поделиться на другие сайты

иногда проблема црц становится камнем преткновения для реинжиниринга.

Вам удалось двинутся дальше. :good:

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
Как и ожидал снифер показал череду байтов "АА". Это байты синхронизации.
У меня - Ochsner. Подключился к eBus. Но AAh не шлет, вместо(?) них - 00h.

[spoiler=череда байтов]

F8 38 00

00

00

00

00

00

F8 00

00

00

00

00

08 00

00

00

18 00

00

00 00

00

00

00

00

00

00

08 08 00

08 00

38 00

00

00

00

F8 38 00

00

00

00

18 00

00

00

00

F8 00

00

00

00

00

00

00

00 00

00

 

 

Затем написал программку, которая фильтрует входящие данные и вычленяет из них отдельные пакеты.

Начало/конец пакета как определяете?

UPD: Разобрался - по AAh, которых у меня нет почему-то :(

Изменено пользователем InSAn
Ссылка на комментарий
Поделиться на другие сайты

У меня - Ochsner. Подключился к eBus. Но AAh не шлет, вместо(?) них - 00h.

PS: Собирал по схеме на LM393.

 

PS: Как можно без осциллографа понять, что на шине eBus?

 

Добавлено через 16 минут

PPS: Тему перенес в раздел "Умный дом". alexob, Вы не против?

Ссылка на комментарий
Поделиться на другие сайты

а у мну сегодня ехуу!!!

короче, автор демона оказался таки прав мой адаптер глючил:(

а т.к. у мну получились запасніе платі, то собрал на другом биполярном транзисторе и... епта оно заработало как надо, а не просто в режиме сниффера(сканера)

т.е. посілаю запросі на те данніе какие хачу и получаю вразумительніе ответі

и.... даже пруха раскодировал "проблемніе" ціклі и часі наработки

чуток правда нестабильно пока работает подстроечник на пределе, но то думаю не вопрос, подберу другой резистор, чтобі подстроечник работал в диапазоне

зі т.к. скрипт получения данніх с єсчетчика гтн работает стабильно, то осталось, отрегулировать балансиром проток по ультрозвуковому расходомеру и... будем сомтреть сор, sсор в реальном времени, ... о как я себя накрутил:)

  • Лайк 1
Ссылка на комментарий
Поделиться на другие сайты

Адаптер заработал сразу, без каких-либо настроек и т.п.

поздравляю!

Пр подключении его к USB порту ноутбука, драйвера устанавливаются автоматически (Windows 10), в общем все как по маслу :)

не пойму почему Windows 10?

зачем приложение под iOs, Android?

имхо оптимальное хорошее решение: raspberry + демон от John + fhem, тем более для Vaillant, который изучен довольно таки хорошо

например @Reinhart 07 Februar 2016, 15:46:44

index.php?action=dlattach;topic=46098.0;attach=45989;image

сразу веб морда умного дома с ebusом (Vaillant)

и наверно у вас белый ip

я бы с Vaillant так и поступил, поставил все готовое или просто хочется поиграться повозиться для удовольствия?

 

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

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

  • Лайк 4
Ссылка на комментарий
Поделиться на другие сайты

После прочтения прекрасной темы Александра, чешутся руки тоже поковырять E-bus Vaillant. Только адаптера не хватает.

 

Подскажите, кто может собрать или где купить переходник E-bus USB или RS-232

Ссылка на комментарий
Поделиться на другие сайты

После прочтения прекрасной темы Александра, чешутся руки тоже поковырять E-bus Vaillant. Только адаптера не хватает.

 

Подскажите, кто может собрать или где купить переходник E-bus USB или RS-232

 

The following hardware interfaces are known to work with ebusd (c):

E-Service GmbH: eBus Koppler USB

E-Service GmbH: eBUS Koppler Ethernet

Mikrocontroller.net: eBus USB Adapter

Prof. Dr. Peter A. Henning: EBUSD-Interface USB, Example layout

  • Лайк 2
Ссылка на комментарий
Поделиться на другие сайты

имхо оптимальное хорошее решение: raspberry + демон от John + fhem

если кому не нравится fhem + демон (ebusd) , то (для vaillant) можно всем известный openhab - "It works" (с)

все перечисленные ранее устройства (hardware interfaces) будут работать

Ссылка на комментарий
Поделиться на другие сайты

извините за столь поздний ответ, очень много работы, да еще и фасад делают.

 

У меня - Ochsner. Подключился к eBus. Но AAh не шлет, вместо(?) них - 00h.

 

Каким адаптером подключились? Скорость COM-порта какую поставили? (скажите все настройки COM-порта: битность, четность и т.п.)

 

Начало/конец пакета как определяете?

UPD: Разобрался - по AAh, которых у меня нет почему-то :(

 

да, именно по ним и определял. Только по подряд идущим AAh, т.к. один может быть и в контрольной сумме, или где-то еще. Хотя если парсить пакет правильно, выкусывая по очереди части пакета, согласно спецификации протокола, то проблем с определением конца не будет.

 

Проблема больше в посылке сформированного пакета устройству. Тут нужно поймать промежуток времени, когда закончился очередной пакет с какого-нибудь устройства, и через определенный таймаут слать свой. Если слать в любой момент времени, то просто появятся очень частые ситуации "битых" пакетов, когда на шину eBus вместе с вашей отправкой, в этот же момент отправит другое устройство. Пакеты тогда "сольются" и парсер (у меня именно так) просто удалит эту неопознанную череду байт. Вам же нужно будет повторно слать пакет, т.к. все принимающие устройства также примут на вход неопознанный пакет. Хуже если случайно сформируется "опознанный" пакет и еще что-то запишет в устройство :grin: (что теоретически может быть, а практически вряд ли).

 

Добавлено через 6 минут

PS: Собирал по схеме на LM393.

 

упсс, сразу не заметил этого поста. Тогда дайте только параметры порта.

 

PS: Как можно без осциллографа понять, что на шине eBus?

 

только по синхронизирующим байтам

 

Добавлено через 16 минут

PPS: Тему перенес в раздел "Умный дом". alexob, Вы не против?

 

конечно же, без проблем, наверное это даже правильно :) главное чтобы форумчанам доступно было.

Ссылка на комментарий
Поделиться на другие сайты

дайте только параметры порта.

baud 2400, 8 bit, 1 stop-bit, parity - none

 

Проблема в том, что нет четкой границы переключения оптрона - она плавает. В промежуточных состояниях оптрон переключается как ему захочется, теряя быстрые переходы между нулем и единицей (10101010). Поэтому вместо 0хАА я получал 0х00 :(

Более подробно описал у себя в теме - www.stroimdom.com.ua/forum/showthread.php?p=3913679

Сейчас собираю другую схему. Уже опробовал на макетке - все гуд.

Ссылка на комментарий
Поделиться на другие сайты

baud 2400, 8 bit, 1 stop-bit, parity - none

 

Проблема в том, что нет четкой границы переключения оптрона - она плавает. В промежуточных состояниях оптрон переключается как ему захочется, теряя быстрые переходы между нулем и единицей (10101010). Поэтому вместо 0хАА я получал 0х00 :(

Более подробно описал у себя в теме - www.stroimdom.com.ua/forum/showthread.php?p=3913679

Сейчас собираю другую схему. Уже опробовал на макетке - все гуд.

 

пропустил темку, спасибо. :)

Да, видимо проблема у вас со схемой.

Если вам поможет, могу дать на пару дней свой адаптер для пробы, ну чтобы удостовериться в реальном eBus.

Ссылка на комментарий
Поделиться на другие сайты

пропустил темку, спасибо. :)

Да, видимо проблема у вас со схемой.

Если вам поможет, могу дать на пару дней свой адаптер для пробы, ну чтобы удостовериться в реальном eBus.

Спасибо, уже не нужно - я другой адаптер начал собирать. Байты синхронизации уже получил :)

Ссылка на комментарий
Поделиться на другие сайты

Проблема больше в посылке сформированного пакета устройству. Тут нужно поймать промежуток времени, когда закончился очередной пакет с какого-нибудь устройства, и через определенный таймаут слать свой. Если слать в любой момент времени, то просто появятся очень частые ситуации "битых" пакетов, когда на шину eBus вместе с вашей отправкой, в этот же момент отправит другое устройство. Пакеты тогда "сольются" и парсер (у меня именно так) просто удалит эту неопознанную череду байт. Вам же нужно будет повторно слать пакет, т.к. все принимающие устройства также примут на вход неопознанный пакет. Хуже если случайно сформируется "опознанный" пакет и еще что-то запишет в устройство :grin: (что теоретически может быть, а практически вряд ли).

это очень важный момент

имхо, если писать код самому, то нужно внимательно прочитать про "arbitration" в Spec_Prot_12_V1_3_1_E, иначе вероятность передать ошибочные данные, по каким либо причинам, не такая и маленькая

и чем больше устройств (Master, Slave) на шине, тем больше вероятность ошибки

зы будьте внимательны и удачи:beer:

  • Лайк 1
Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...
  • 1 месяц спустя...

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...