Перейти до публікації
Пошук в
  • Додатково...
Шукати результати, які містять...
Шукати результати в...

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

alexob

Рекомендовані повідомлення

що саме цікавить? приатачів

всього потроху, "один день не вдома" та інше

 

Приветствую! А можете показать конфигурацию ebusd?

/usr/bin/ebusd --enabledefine --enablehex --updatecheck=off --accesslevel=* -d /dev/ttyUSB0 --configpath=/etc/ebusd/en --mqtthost=127.0.0.1 --mqttport=1883 -l /var/log/ebusd.log

 

Никак не пойму, как его заставить постоянно выдавать параметры в mqtt-брокер...

Для цього використовуються poll priority для параметрів, почитайте тут в темі було.

В мене в конфігурації вони теж встановлюються, шукайте по слову poll

Взагалі Home Assistant це пасивна система, тобто ХА не опитує датчики самостійно, а очікує що датчики самі оновлюють свій стан. MQTT не оновлює, якщо значення не змінювалось (не розглядаємо persistent message).

Тому я примусово встановлюю приіоритети полінгу на старті. Також пол пріорітет можливо встановити в csv файлі конфігурації: дивиться формат файлу.

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

Подскажите, пожалуйста, как через канал TCP или MQTT заставить ebusd отправить broadcast-сообщение (например vdatetime)?
Посилання на коментар
Поділитися на інших сайтах

заставить ebusd отправить broadcast-сообщение (например vdatetime)

Мені здається змусити відправити не вийде. З цим кодом я регулярно отримую броадкасти і без цього:

 

cat sensor/sensor_ebusd.yaml
################################################################################
# broadcast sensors
################################################################################
- platform: mqtt
 name: "ebusd outside temperature"
 device_class: temperature
 unit_of_measurement: "°C"
 state_topic: "ebusd/broadcast/outsidetemp"
 availability_topic: "ebusd/global/signal"
 payload_available: "true"
 payload_not_available: "false"
 qos: 1
 # value: 16.0
 value_template: >
   {{ '%0.1f' | format(value | float) }}

- platform: mqtt
 name: "ebusd system time"
 state_topic: "ebusd/broadcast/vdatetime"
 availability_topic: "ebusd/global/signal"
 payload_available: "true"
 payload_not_available: "false"
 qos: 1
 # value: 22:26:32;26.10.2019
 value_template: >
   {% set values = value.split(";") %}
   {{ '%s %s' | format(values[1], values[0]) }}

 

Посилання на коментар
Поділитися на інших сайтах

С броадкастом уже разобрался - в файле broadcast.csv необходимо добавить опцию разрешающую отправку. Только формат даты установленный там для vdatetime - BDA не правильный, так как подразумевает день недели в формате Sunday=0x06, а надо чтобы был в ISO-формате Sunday=0x07. А такого формата данных в ebusd нет. Я написал разработчику - посмотрим, что ответит.
Посилання на коментар
Поділитися на інших сайтах

в файле broadcast.csv необходимо добавить опцию разрешающую отправку

Гм, я не змінював і все ок...

Посилання на коментар
Поділитися на інших сайтах

Эти факторы никак не влияют на нормальный приём и расшифровку этих сообщений. Только если вы хотите отправить своё сообщение vdatetime.
Посилання на коментар
Поділитися на інших сайтах

Для цього використовуються poll priority для параметрів, почитайте тут в темі було.

В мене в конфігурації вони теж встановлюються, шукайте по слову poll

Взагалі Home Assistant це пасивна система, тобто ХА не опитує датчики самостійно, а очікує що датчики самі оновлюють свій стан. MQTT не оновлює, якщо значення не змінювалось (не розглядаємо persistent message).

Тому я примусово встановлюю приіоритети полінгу на старті. Також пол пріорітет можливо встановити в csv файлі конфігурації: дивиться формат файлу.

 

Так и не разобрался ((( перебрал всю доку ebusd, но так и не понял как его заставить публиковать параметры в mqtt переодически... раз в 30 сек к примеру. В структуре csv тоже не нашел столбца, который за это отвечает

Посилання на коментар
Поділитися на інших сайтах

Так и не разобрался ((( перебрал всю доку ebusd, но так и не понял как его заставить публиковать параметры в mqtt переодически... раз в 30 сек к примеру. В структуре csv тоже не нашел столбца, который за это отвечает

 

В csv-файлах можно заменить r в столбце "# type (r[1-9];w;u)" на r1 по r9 в зависимости от желаемой частоты опроса. Или, по MQTT удобнее всего выставлять эту частоту отправив на адрес параметра, который необходимо обновлять "ebusd/устройство/параметр/get" значение "?1" или "?9" - в зависимости от желаемой частоты опроса. Во обеих случаях цифра обозначает, что этот параметр будет обновляться 1 - каждый цикл, 2 - каждый второй, и т.д. Но если этот параметр выставлен через команду MQTT, его необходимо пере выставлять после перезапуска ebusd.

  • Лайк 2
Посилання на коментар
Поділитися на інших сайтах

отправив на адрес параметра, который необходимо обновлять "ebusd/устройство/параметр/get"

Я викладав свою повну конфігурацію, там це є...

Посилання на коментар
Поділитися на інших сайтах

В csv-файлах можно заменить r в столбце "# type (r[1-9];w;u)" на r1 по r9 в зависимости от желаемой частоты опроса. Или, по MQTT удобнее всего выставлять эту частоту отправив на адрес параметра, который необходимо обновлять "ebusd/устройство/параметр/get" значение "?1" или "?9" - в зависимости от желаемой частоты опроса. Во обеих случаях цифра обозначает, что этот параметр будет обновляться 1 - каждый цикл, 2 - каждый второй, и т.д. Но если этот параметр выставлен через команду MQTT, его необходимо пере выставлять после перезапуска ebusd.

 

Спасибо огромное, заработало!

 

В продолжение, Вы уже реализовали управление котлом? Если правильно понял, то реализовывать нужно через SetModeOverride.

В терминале команда отправляется вроде...

 

Нашел даже скрипт для Home Assistant для реализации кривой обогрева

github.com/john30/ebusd-configuration/issues/170#issuecomment-709592197

 

Но пока не соображу как это все связать вместе...

Нет серьезного опыта в Home Assistant

Посилання на коментар
Поділитися на інших сайтах

Спасибо огромное, заработало!

 

В продолжение, Вы уже реализовали управление котлом? Если правильно понял, то реализовывать нужно через SetModeOverride.

 

Эти все манипуляции нужны если у вас нет комнатного термостата подключенного по e-bus, и вы хотите из Home Assistant эмулировать его работу. Если такой термостат имеется, то правильнее отдавать команды ему, изменяя необходимые параметры, а работой котла будет уже управлять он.

Посилання на коментар
Поділитися на інших сайтах

Эти все манипуляции нужны если у вас нет комнатного термостата подключенного по e-bus, и вы хотите из Home Assistant эмулировать его работу. Если такой термостат имеется, то правильнее отдавать команды ему, изменяя необходимые параметры, а работой котла будет уже управлять он.

 

Такой термостат отсутствует...

Оценив стоимость всех компонентов Vaillant для нормального управления (термостат, модуль управления насосами, модуль удаленного управления), думал как раз реализовать все на home assistant (raspberry с ebusd, raspberry с haas, esphome для управления насосами и датчики температуры).

 

Полноценно имитировать термостат vaillant еще никто не умеет? Если нет, то видимо придется покупать хотя бы простой...

Посилання на коментар
Поділитися на інших сайтах

Полноценно имитировать термостат vaillant еще никто не умеет?

https://www.stroimdom.com.ua/forum/showpost.php?p=5182100&postcount=62

Можливо буде корисним

Посилання на коментар
Поділитися на інших сайтах

Такой термостат отсутствует...

Полноценно имитировать термостат vaillant еще никто не умеет? Если нет, то видимо придется покупать хотя бы простой...

 

Можно использовать термостат Protherm Thermolink P - он дешевле моделей Vaillant.

 

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

 

Можно управлять котлом из Home Assistant как будто это термостат - как раз эта тема затронута в процитированной вами ссылке.

 

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

По поводу управлением отоплением - есть разные методы:

 

  • Фиксированная температура теплоносителя в котле. Котёл просто поддерживает заданную температуру теплоносителя - базовая функция которую умеет котёл "из коробки".

  • Фиксированная температура теплоносителя в котле, в термостатом вкл/выкл. Котёл поддерживает заданную температуру теплоносителя, когда замкнуты контакты термостата (термостат замыкает их, когда температура в комнате ниже необходимой), и ничего не делает, когда контакты разомкнуты.

  • Как предыдущий, но если термостат подключен по шине e-bus, он будет корректировать температуру теплоносителя.

  • Погодо-зависимое регулирование (с уличным датчиком, можно и без термостата). Котёл выбирает температуру теплоносителя по кривой отопления. Угол кривой необходимо выбрать исходя из теплопотерь помещения, а базу - исходя из желаемой температуры в помещении.

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

 

Все эти варианты управления можно организовать на базе Home Assistant, просто с разной сложностью.

Посилання на коментар
Поділитися на інших сайтах

  • 3 тижні потому...

Приехала моя прелессссссттть (ebus-usb адаптер)

Исполнение отличное, завелась без бубнов. Спасибо, @Denz

Котёл у меня Valliant TurboTEC plus с баком для воды.

Сервис ebusd поднял на четвёртой малинке, котёл нашёлся, на опросы отвечает. Дальше буду вникать в сервисы типа Home Assistent и прочие чудеса автоматизации и мониторинга.

 

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

У меня, кстати, тоже нет комнатных термостатов, тоже буду шаманить без них

  • Лайк 2
Посилання на коментар
Поділитися на інших сайтах

  • 3 тижні потому...
Ну в целом получилось повторить термостат eBus на Home Assistant

 

Спасибо за помощь

 

Нормуль. Все четко. Я тож перешёл на mqtt - работает система как часики.

Посилання на коментар
Поділитися на інших сайтах

Конфигурационные файлы покажете?

 

я не большой спец в hass. Ногами не пинать, если что

hass_home_config-master.zip

  • Лайк 2
Посилання на коментар
Поділитися на інших сайтах

  • 1 місяць потому...
я не большой спец в hass

Спасибо, очень помогли ваши конфиги!

 

На текущий момент у меня:

- Развернут hass

- Реализовано выключение котла по питанию через реле, заведённое на рубильник HASS. Делал наспех на розетке. В след версии заведу внутрь котла на прерыватель специальный. Делал уезжая с дачи, на случай неудачи с управлением по EBUS.

- Cервис ebusd по MQTT передаёт параметры котла, буду настраивать красивый экран управления и мониторинга

- Вот только что получилось передать управляющую команду по EBUS, котёл по команде вырубился. Управление по питанию уже не очень актуально.

 

Текущие вопросы в проработке:

- Котёл "забывает" настройку SetModeOverride и заново включается. Это что получается, HASS (или внешний термостат) должен долбить настройкой по котлу постоянно, чтоб тот не своевольничал?!

 

- Управление по питанию настраивал простыми триггерами на температуру в зале:

a) если менее 10 - перевести реле подачи питания на котёл ВКЛ

б) если выше 15 - перевести реле подачи питания на котёл ВЫКЛ

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

Посилання на коментар
Поділитися на інших сайтах

Спасибо, очень помогли ваши конфиги!

 

На текущий момент у меня:

- Развернут hass

- Реализовано выключение котла по питанию через реле, заведённое на рубильник HASS. Делал наспех на розетке. В след версии заведу внутрь котла на прерыватель специальный. Делал уезжая с дачи, на случай неудачи с управлением по EBUS.

- Cервис ebusd по MQTT передаёт параметры котла, буду настраивать красивый экран управления и мониторинга

- Вот только что получилось передать управляющую команду по EBUS, котёл по команде вырубился. Управление по питанию уже не очень актуально.

 

Текущие вопросы в проработке:

- Котёл "забывает" настройку SetModeOverride и заново включается. Это что получается, HASS (или внешний термостат) должен долбить настройкой по котлу постоянно, чтоб тот не своевольничал?!

 

- Управление по питанию настраивал простыми триггерами на температуру в зале:

a) если менее 10 - перевести реле подачи питания на котёл ВКЛ

б) если выше 15 - перевести реле подачи питания на котёл ВЫКЛ

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

 

Чтобы понять в чем дело нужно автоматизации ваши смотреть

Посилання на коментар
Поділитися на інших сайтах

Это не совсем тема про конфиги HASS, спрячу под спойлер

 

- id: '1616499389833'
 alias: Включение тестового реле
 description: ''
 trigger:
 - platform: numeric_state
   above: input_number.t_for_boiler_lock_on
   entity_id: sensor.narodmon_temperature
 - platform: state
   entity_id: input_number.t_for_boiler_lock_on
 condition:
 - condition: numeric_state
   entity_id: sensor.narodmon_temperature
   above: input_number.t_for_boiler_lock_on
 action:
 - type: turn_on
   device_id: fb9e9e347ec5b2af7f6fa81ad4652c57
   entity_id: switch.relay_2
   domain: switch
 mode: single
- id: '1616583769146'
 alias: Выключение тестового реле
 description: ''
 trigger:
 - platform: numeric_state
   entity_id: sensor.narodmon_temperature
   below: input_number.t_for_boiler_lock_off
 - platform: state
   entity_id: input_number.t_for_boiler_lock_off
 condition:
 - condition: numeric_state
   entity_id: sensor.narodmon_temperature
   below: input_number.t_for_boiler_lock_off
 action:
 - type: turn_off
   device_id: fb9e9e347ec5b2af7f6fa81ad4652c57
   entity_id: switch.relay_2
   domain: switch
 mode: single

Вот эти две тестовые автоматизации должны триггерить при переходе порога с датчика (а порог вынесен input_number) или при смене порога input_number.t_for_boiler_lock_off в новое значение, если новое значение уже под/над порогом триггера.

В результате триггер должен переключать тестовое реле.

 

 

Хм. Конечно можно дёргать триггер безусловно по датчику t, при каждом его изменении. Также, как он дёргается безусловно по смене input_number.

А в action пускать только если condition выполнен...

Попробую...

Посилання на коментар
Поділитися на інших сайтах

Мне кажется у вас конфликтует условие below в в секции trigger и условие below в секции condition.

Попробуйте сократить автоматизацию, временно выбросив реакцию на изменени input_number, как я показал под спойлером. Если все будет работать, то для input_number лучше создать отдельную автоматизацию с секцией condition. А чтобы не плодить одинаковые action - вынесите его в скрипт и дергайте этот скрипт с обеих, получившихся автоматизаций

 

 

 

- id: '1616499389833'
 alias: Включение тестового реле
 description: ''
 trigger:
 - platform: numeric_state
   above: input_number.t_for_boiler_lock_on
   entity_id: sensor.narodmon_temperature
 action:
 - type: turn_on
   device_id: fb9e9e347ec5b2af7f6fa81ad4652c57
   entity_id: switch.relay_2
   domain: switch
 mode: single

 

 

Посилання на коментар
Поділитися на інших сайтах

- Котёл "забывает" настройку SetModeOverride и заново включается. Это что получается, HASS (или внешний термостат) должен долбить настройкой по котлу постоянно, чтоб тот не своевольничал?!

Да, требуется постоянно посылать команду.

Тут тема интересная... Сам управляющий контур котла состоит из двух частей: плата управления и внешний блок управления (крутилка с дисплеем). Так вот как я понял, они соединены также по ebus, ну или по аналогии. И внешний блок также с периодичностью посылает команде плате. Как показал мой котел на практике - раз в 5 минут. Также работает и комнатный блок управления по ebus - постоянной посылает сигналы.

 

И еще: если на панели котла поставить допустим t носителя 50, то функцией SetModeOverride больше 50 поставить не удастся. Имейте ввиду.

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

- Управление по питанию настраивал простыми триггерами на температуру в зале:

a) если менее 10 - перевести реле подачи питания на котёл ВКЛ

б) если выше 15 - перевести реле подачи питания на котёл ВЫКЛ

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

Попробуй посмотреть в сторону механизма запуска python скриптов средствами haas.

 

Я сделал так:

# Температура кривой нагрева внутри
if 7 <= datetime.datetime.now().hour <= 22:
   ti = float(hass.states.get('input_number.heating_curve_temp_inside_day').state)
else:
   ti = float(hass.states.get('input_number.heating_curve_temp_inside_night').state)

# Коэффициент кривой нагрева
#factor = 0.6
factor = float(hass.states.get('input_number.heating_curve_factor').state)

# Температура на улице
ta = float(hass.states.get('sensor.ebusd_bai_outdoors_temperature').state)
#ta = float(hass.states.get('weather.home').attributes['temperature'])

#logger.info("ti = {0}; factor = {1}; ta = {2}".format(ti,factor,ta))

# Требуемая температура носителя
flow_temp = float(round(ti*factor-ta*factor+ti,1))

flowtempdesired = str(flow_temp)

hwctempdesired = str(hass.states.get('input_number.hwc_temp_desired').state)

disablehc = "0" if hass.states.get('input_boolean.heating_disable').state == "off" else "1"

disablehwcload = "0" if hass.states.get('input_boolean.heating_hwc_disable').state == "off" else "1"

service_data = {'name': 'SetModeOverride', 'value': '0;{};{};-;-;{};0;{};-;0;0;0'.format(flowtempdesired,
                                                                               hwctempdesired,
                                                                               disablehc,
                                                                               disablehwcload)}

logger.info("==== Flow temp {0} for conditions: ti={1}, factor={2}, ta={3}. Other data: disablehc={4}, disablehwcload={5}".format(flow_temp,ti,factor,ta,disablehc,disablehwcload))

hass.services.call('ebusd', 'ebusd_write', service_data, False)

logger.info(service_data)

 

И в автоматизации запуск этого скрипта раз в минуту.

2021-03-29_14-45-45.thumb.png.31a749f9d616468a6c6cfc8484d6d66c.png

  • Лайк 1
Посилання на коментар
Поділитися на інших сайтах

Створіть акаунт або увійдіть у нього для коментування

Ви маєте бути користувачем, щоб залишити коментар

Створити акаунт

Зареєструйтеся для отримання акаунта. Це просто!

Зареєструвати акаунт

Увійти

Вже зареєстровані? Увійдіть тут.

Увійти зараз
×
×
  • Створити...