Этот адаптер использует библиотеки Sentry для автоматического сообщения разработчикам об исключениях и ошибках в коде. Более подробную информацию, а также инструкции по отключению отправки сообщений об ошибках см. в документации Sentry-Plugin ! Система отчетности Sentry используется начиная с js-controller 3.0.
Если вам понравилось, пожалуйста, рассмотрите возможность пожертвования:
Документация
Мне нужна помощь в создании/обновлении пользовательской документации и раздела часто задаваемых вопросов (FAQ). Если кто-то заинтересован, пожалуйста, свяжитесь со мной...
Перевод
Адаптер переводится с помощью Weblate, веб-инструмента, упрощающего перевод как для разработчиков, так и для переводчиков. Примите участие в проекте ioBroker Adapters.
Нажмите здесь, чтобы перейти непосредственно к переводам.
Адаптер для управления вашей системой отопления.
Функции:
- Настройте заданные значения температуры на всех термостатах в соответствии с расписанием.
- Настройте несколько периодов обогрева для каждого дня и ночи.
- Поддерживает все типы термостатов (предварительное условие: он должен быть доступен в ioBroker).
- Автоматическое определение устройства Homematic
- поддерживает несколько профилей
- Если между термостатом и приводом нет прямой связи, привод можно заменить непосредственно через адаптер.
- В настоящее время исполнительный механизм отключается сразу же при достижении заданной температуры. Как только заданная температура опустится ниже фактической, исполнительный механизм включится. (Задача: реализовать улучшенное управление)
- Поддерживается неограниченное количество термостатов, исполнительных механизмов и датчиков в каждой комнате.
- Термостат, исполнительный механизм и датчик могут автоматически определяться для каждой комнаты (только в устройствах Homematic). Для этого используется соответствующая функция (например, «отопление»).
- В административном интерфейсе можно исключить из списка помещений, если в помещении установлен термостат, но управлять им не следует.
- Датчик используется для снижения целевой температуры (например, если окно открыто); опционально с функцией SensorDelay.
- Интерфейс для адаптера Feiertag или любого другого адаптера для определения государственных праздников. Государственным праздником может быть обычный день или, например, воскресенье. (настройка администратора)
- ручное управление температурой на определенное время
- предопределенный период нагрева
- Перехват управления изменениями от термостата (опционально)
- Поддерживается визуализация из Pittini . Спасибо!
- Поддержка Vis-2 с помощью vis-2-widgets-weather-and-heating
Установка
Настройки
основной
- Функция = Функция, используемая для определения термостатов, исполнительных механизмов и датчиков в каждой комнате. Это один из перечислений системы.
- Путь к адаптеру Feiertag: если вы хотите использовать адаптер Feiertag для автоматического определения сегодняшнего государственного праздника, укажите здесь путь (например, feiertage.0).
- Используемый датчик = если у вас установлены оконные датчики и вы хотите понижать целевую температуру при открытом окне, включите эту опцию.
- Используемые актуаторы = если вы хотите управлять актуаторами напрямую с адаптера. На всякий случай, если нет прямой связи между термостатом и актуатором.
- Использовать исполнительные механизмы, если нет периода обогрева = действительно только с исполнительными механизмами. Определяет, как настраиваются исполнительные механизмы, когда период обогрева неактивен.
- Используйте актуаторы, если термостат недоступен = это возможно только с актуаторами. Если у вас есть комнаты без термостата, но с отопительным актуатором, вы можете включать или выключать их постоянно.
профиль
- Поддерживаются три различных типа профиля (понедельник - воскресенье, понедельник - пятница и суббота/воскресенье или каждый день).
- Количество профилей = если вам нужно больше, увеличьте это значение для каждого профиля. Затем вы сможете выбрать, какой профиль будет использоваться.
- Количество периодов = определите, сколько ежедневных интервалов с разной температурой вам нужно. Чем больше вы зададите, тем больше точек данных будет создано. Лучше использовать небольшое значение (например, 5).
- «В праздничные дни, например, в воскресенье, если вы хотите установить целевую температуру в праздничные дни, например, в воскресенье, включите эту опцию. В противном случае настройки для праздничных дней остаются такими же, как и в обычные дни».
- HeatingPeriod = дата начала и окончания отопительного периода. Используется для установки параметра "HeatingPeriodActive".
устройства
- Сначала выберите комнату и включите её.
- Ниже вы найдете все настройки комнаты.
Конфигурация номера
- Здесь вы можете проверить и установить идентификаторы объектов для термостатов, исполнительных механизмов и датчиков.
- Вы можете вручную добавлять новые термостаты, исполнительные механизмы или датчики. Просто нажмите кнопку «+». После этого появится пустая строка, которую необходимо заполнить. Кнопка «Редактировать» открывает список доступных устройств в системе.
- термостаты: ** необходимо установить имя, OID целевого значения температуры и OID текущей температуры.
- Исполнительные механизмы ** должны быть заданы по имени и OID состояния
- Необходимо задать имя датчика и OID для текущего состояния.
точки данных
| Имя пользователя DP | описание |
|---|---|
| Период нагреваАктивный | Если профиль отключен, он использоваться не будет. |
| Текущий профиль | Выберите текущий профиль (начиная с 1, это означает, что для профиля 1 используются точки данных из папки heatingcontrol.0.Profiles.0). |
| LastProgramRun | показывает время последнего запуска адаптера. |
понижение/повышение температуры
| Имя пользователя DP | описание | целевая температура для относительного снижения | целевая температура для абсолютного снижения |
|---|---|---|---|
| ГостиПрисутствуют | Повысить температуру, потому что гости хотят потеплее. | увеличить текущую температуру профиля на Profiles.0.room.relative.GuestIncrease | установить целевое значение на Profiles.0.room.absolute.GuestIncrease |
| PartyNow | «Снизьте температуру, потому что становится жарко». | уменьшить текущую температуру профиля на Profiles.0.room.relative.PartyDecrease | установить целевое значение на Profiles.0.room.absolute.PartyDecrease |
| Подарок | Мы присутствуем, если нас нет, понизьте температуру. | уменьшить текущую температуру профиля на Profiles.0.room.relative.AbsentDecrease | установить целевое значение Profiles.0.room.absolute.AbsentDecrease |
| Отсутствующий отпуск | Мы отсутствуем, поэтому снижение показателей происходит и в выходные дни. | уменьшить текущую температуру профиля на Profiles.0.room.relative.VacationAbsentDecrease | установить целевое значение Profiles.0.room.absolute.VacationAbsentDecrease |
| Режим камина Активен | Снижение температуры из-за использования камина приведет к ее автоматической установке в регулируемое время. | уменьшить текущую температуру профиля на Profiles.0.room.relative.FireplaceModeDecrease | установить целевое значение Profiles.0.room.absolute.FireplaceModeDecrease |
- Данные доступны только в том случае, если установлен параметр «Общие настройки профиля, понижение температуры».
- В обоих сценариях используется только одно обезжиривание (в предыдущей версии адаптера можно было использовать более одного обезжиривания).
- В сценарии абсолютного снижения температуры используются только целевые значения, не равные 0°C. Если для определенного помещения снижение температуры не требуется, поддерживайте значения снижения на уровне 0°C.
без периода отопления
Есть три варианта.
- Если выбрана опция «Зафиксировать температуру для каждой комнаты», в дереве объектов для каждой комнаты появится новая точка данных. Здесь вы можете установить фиксированную целевую температуру, которая будет устанавливаться, когда период отопления не активен.
- Фиксированная температура для всех комнат. С помощью этой опции вы можете установить одну целевую температуру для каждой комнаты, когда отопительный режим не активирован.
- При использовании этой опции ничего не будет отправлено на термостат, если не активен отопительный период. Целевая температура останется такой же, как и при последнем достижении целевой температуры во время активного отопительного периода. В этом случае, если вы используете исполнительные механизмы от адаптера, у вас есть возможность определить, как должны быть настроены исполнительные механизмы (выкл., включен. или оставлены как есть).
другие
- HolidayPresent / PublicHolidyToday Если вы включите в административной панели параметр "Праздничный подарок, например, воскресенье" или "Государственный праздник, например, воскресенье", то при уведомлении адаптера о том, что сегодня государственный праздник или вы находитесь дома в отпуске, будет использоваться профиль для воскресенья.
окно открыто
Если функция "Использовать датчики" активна и датчик(и) для помещения настроен(ы), то
- уменьшить текущую температуру профиля при открытом окне (true) на значение Profiles.0.room.WindowOpenDecrease, если настроено относительное уменьшение.
- Установите целевое значение Profiles.0.room.absolute.WindowOpenDecrease, когда окно открыто (true), если настроено абсолютное уменьшение.
При желании можно использовать задержку. Если окно открыто лишь на короткое время, задержка срабатывания датчика может предотвратить уменьшение окна и его возвращение в нормальное состояние за очень короткое время.
икаль поддержка
Вы можете использовать свой календарь или любую другую точку данных для изменения точек данных в адаптере. Просто настройте события из iCal или других точек данных в административной панели. Поддерживаются следующие типы данных:
| точка данных | описание |
|---|---|
| heatingcontrol.0.Present | Установите значение true (в случае логического значения) или число больше значения limit (в случае числового значения). |
| heatingcontrol.0.HolidayPresent | Установите значение true, когда будете дома во время отпуска. |
| heatingcontrol.0.VacationAbsent | Установите значение true, когда вы не дома во время отпуска. |
| heatingcontrol.0.GuestsPresent | Установите значение true (в случае логического значения) или число больше значения limit (в случае числового значения). |
| heatingcontrol.0.PartyNow | Установите значение true (в случае логического значения) или число больше значения limit (в случае числового значения). |
Подсказка: используя числовые данные, вы можете подсчитать, сколько человек находится в доме, а затем решить, например, хватит ли нам еды на вечеринку...
изменения использования термостата
Многие пользователи просили добавить возможность переноса изменений с термостата на адаптер. Теперь реализованы четыре варианта:
| вариант | описание |
|---|---|
| нет | Изменения, вносимые термостатом, игнорируются. |
| в качестве переопределения | Изменения, внесенные термостатом, считаются приоритетными; время приоритета необходимо установить заранее в параметре heatingcontrol.0.Rooms.RoomName.TemperaturOverrideTime |
| Если время переопределения не задано, то переопределение не выполняется. | |
| в качестве новой настройки профиля | Изменения температуры, вносимые термостатом, принимаются за целевую температуру для текущего периода профиля. |
| до следующей точки профиля | Изменения температуры, зафиксированные термостатом, принимаются за целевую температуру до следующей точки профиля. Это ручной режим, поэтому используются только датчики температуры окон. Все остальные датчики... |
| Увеличение/уменьшение игнорируется. В каждой комнате есть точка данных, позволяющая отключить ручной режим перед достижением следующей точки профиля. |
Расширение возможности принудительного изменения температуры
Стандартное поведение режима принудительного регулирования температуры заключается в том, что при изменении температуры время принудительного регулирования не изменяется. Например, если вы запустили режим принудительного регулирования на 20 минут при 25°C и через 15 минут изменили температуру на 28°C, то 28°C будет использоваться только в течение последних 5 минут. При таком варианте режим принудительного регулирования перезапускается при каждом изменении температуры. В приведенном выше примере 28°C будет использоваться в течение 20 минут, что приведет к 15 минутам при 25°C и 20 минутам при 28°C.
режим переопределения
В административной панели для всех комнат доступны два настраиваемых режима.
- Функция с таймером — хорошо известная функция, использующая температуру и продолжительность. Заданная температура используется в течение заданного времени, после чего целевая температура возвращается к исходному значению в автоматическом режиме.
- До следующей точки профиля это новая функция. Здесь мы можем использовать переопределение температуры до следующей точки профиля. Длительность будет игнорироваться, но должна быть ненулевой!
Термостат реагирует на сигнал «окно открыто».
Некоторые термостаты могут самостоятельно обрабатывать состояние «окно открыто». В таких случаях настраивается прямое соединение между датчиком окна и термостатом, и термостат самостоятельно снижает целевую температуру при открытии окна. В сочетании с опцией «использование изменений от термостата» / «до следующей точки профиля» это может привести к неожиданному ручному режиму. В этой ситуации пониженная температура будет использоваться до следующей точки профиля. Но адаптер может обрабатывать такое поведение. Необходимо включить опцию «Термостат обрабатывает состояние «окно открыто»», а также можно настроить датчики окна в адаптере. Когда окно открыто, адаптер ожидает максимум 3 секунды новой целевой температуры от термостата. Если за это время он получает новую целевую температуру, она будет использоваться в качестве пониженной абсолютной температуры. В этом случае статус будет «автоматическое открытие окна». Как только окно закрыто, статус возвращается к автоматическому, и термостат устанавливает исходную целевую температуру. Внимание: в этом случае не используйте задержку открытия датчика. Если вы её используете, событие открытия окна появится после получения целевой температуры от термостата. Это приведет к ручному режиму.
Период копирования и профиль копирования
heatingcontrol.0.Profiles.1.CopyProfile heatingcontrol.0.Profiles.1.Room.CopyProfile
и
heatingcontrol.0.Profiles.1.Küche.Fri.CopyPeriods
Функция CopyProfile копирует всё содержимое профиля, в котором нажата кнопка, в следующий профиль. В приведенном выше примере кнопка находится в профиле 1. Кнопка копирует всё из профиля 1 в профиль 2. Если вы хотите скопировать только одну комнату, используйте кнопку в определенной комнате.
Функция CopyPeriods доступна для каждого дня или для каждого помещения с понедельника по пятницу. Это позволяет скопировать периоды в следующий раздел. В приведенном выше примере функция CopyPeriods копирует все периоды с пятницы в кухонном помещении в периоды субботы в кухонном помещении. Таким образом, вы можете, например, в профиле «каждый день отдельно» скопировать периоды с понедельника по воскресенье...
режим технического обслуживания
сделать
режим камина
сделать
обработка исполнительных механизмов
сделать
Переключение между линейным и линейным режимами с гистерезисом
Опишите две новые точки данных: heatingcontrol.0.Rooms.TestRaum.Regulator.HysteresisOffOffset и heatingcontrol.0.Rooms.TestRaum.Regulator.HysteresisOnOffset.
расширенная обработка исполнительных механизмов
Проверяет, правильно ли установлено значение и подтверждено ли его наличие, в противном случае повторяет попытку...
сделать
EVU Sperrzeit / Прерывание питания
Когда истекает время блокировки, установленное поставщиком электроэнергии, все исполнительные механизмы отключаются и снова включаются по окончании времени блокировки. Статус переходит в состояние "EVU Sperrzeit" / "PowerInterruption". Цель: целенаправленное отключение и повторное включение электрических нагревателей для минимизации нагрузки на контакторы и пусковых токов. Конфигурация: время начала/окончания времени блокировки EVU, можно настроить несколько периодов.
Проблемы и пожелания по улучшению
- Если вы обнаружили какие-либо ошибки или у вас есть пожелания по улучшению этого адаптера, пожалуйста, создайте заявку в разделе Issues на GitHub . Любые отзывы приветствуются и помогут улучшить этот адаптер.
известные проблемы
Адаптер с Homematic IP Fußbodenheizungsaktor HmIP-FAL230-C10 – 10fach, 230 В
Похоже, что HmIP-FAL230-C10 нельзя использовать напрямую в качестве исполнительного механизма в сочетании с этим адаптером. Если использовать HmIP-FAL230-C10 вместе с термостатами Homematic, всё должно работать. См. также форум.
Функция открытия окна в термостатах HM
Термостаты HM имеют функцию открытия окна в двух вариантах. С одной стороны, это определение падения температуры, а с другой — использование оконного датчика. Эта функция приводит к переключению адаптера в ручной режим при открытии окна. В идеале эту функцию следует отключить, чтобы она не мешала работе адаптера. Если термостат использует информацию от оконного датчика, то следует включить опцию «термостат обрабатывает открытие окна».
Когда адаптер выходит из строя или возникает другая ошибка в коде, это сообщение об ошибке, которое также появляется в журнале ioBroker, отправляется в Sentry. Все это помогает мне предоставлять безошибочные адаптеры, которые практически никогда не выходят из строя.
Changelog
3.3.1 (2026-09-12)
- (René) dependencies updated
- (GermanBluefox) readme updated
- (arteck) add TemperatureIfNoHeatingPeriod to Pittini Script
- (arteck) redesign Settings
- (arteck) add descaling trip
3.2.0 (2026-06-03)
- (copilot) Adapter requires node.js >= 22 now
- (René) see issue #810: HeatingPeriod configurable via datapoint (like in admin) as option
- (René) dependencies updated
3.1.4 (2026-04-26)
- (Eistee82 + Claude Opus 4.6) fix visualization step width: selecting 0.5°C stored 1.5 instead of 0.5 (#785)
- (Eistee82 + Claude Opus 4.6) fix admin UI field name mismatch: ExtHandlingRepTime renamed to ExtHandlingActorRepTime (#787)
- (Eistee82 + Claude Opus 4.6) fix off-by-one error in thermostat ID assignment (#788)
- (Eistee82 + Claude Opus 4.6) add guard for GetRoomId returning -1 to prevent negative array index (#789)
- (Eistee82 + Claude Opus 4.6) add null checks for getStateAsync results in SaveProfile (#790)
- (Eistee82 + Claude Opus 4.6) fix copy-paste error: UseFixHeatingPeriod had label UseFireplaceMode (#791)
- (Eistee82 + Claude Opus 4.6) fix typo in types.d.ts: strin → string (#792)
- (Eistee82 + Claude Opus 4.6) fix onChange field name mismatch for customized notification window close (#793)
- (Eistee82 + Claude Opus 4.6) fix type mismatch: notificationsType should be string not number (#794)
- (Eistee82 + Claude Opus 4.6) add missing Discord notification defaults to io-package.json (#795)
- (Eistee82 + Claude Opus 4.6) add missing config key defaults to io-package.json (#796)
- (Eistee82 + Claude Opus 4.6) fix hysteresis debug log showing wrong calculation (+ instead of -) (#798)
- (Eistee82 + Claude Opus 4.6) fix duplicate variable in hysteresis error message (#799)
- (Eistee82 + Claude Opus 4.6) remove dead code: identical if/else branches in notification functions (#800)
- (Eistee82 + Claude Opus 4.6) fix wrong typeof in error message in support_tools.js (#802)
- (Eistee82 + Claude Opus 4.6) fix package.json bugs URL missing /issues suffix (#803)
- (Eistee82 + Claude Opus 4.6) simplify redundant null check in main.js (#805)
- (Eistee82 + Claude Opus 4.6) fix typo in error message: userTage → userTag (#808)
3.1.3 (2026-04-11)
- (René) fix in migrate data: wait, until room list is available and check if room list is empty, otherwise do not migrate data to avoid removing rooms
- (René) changelog_old.md added
3.1.1 (2026-04-08)
- (René) some logs in migrate data
- (René) issue #781: fix upload configuration
License
MIT License
Copyright (c) 2019-2026 René G. info@rg-engineering.eu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
