ioBroker.harvia-fenix
Hier geht es zur deutschen Version der Dokumentation.
Адаптер ioBroker для интеграции и управления блоком управления сауны Harvia Fenix через облачную инфраструктуру MyHarvia.
Для получения более подробной информации о компании Harvia и ее блоках управления сауной, пожалуйста, посетите официальный сайт Harvia .
⚠️ ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ И ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
Дистанционное управление нагревателем для сауны подлежит строгим правилам безопасности! В соответствии с европейским стандартом безопасности EN 60335-2-53 в сочетании с EN 60335-1 , для систем дистанционного управления обязательны меры противопожарной защиты. Сауна должна быть оборудована сертифицированным датчиком открытия двери или системой аварийного отключения. Это гарантирует, что нагреватель не сможет быть запущен дистанционно или по таймеру, если на нагревателе или рядом с ним оставлен легковоспламеняющийся предмет (например, полотенце).
- Отсутствие ответственности: Разработчик данного адаптера не несет никакой ответственности, не предоставляет никаких гарантий и не несет никакой ответственности за любые убытки, пожары, травмы или юридические проблемы, возникшие в результате использования или неправильной настройки данного программного обеспечения. Вы используете эту интеграцию исключительно на свой страх и риск.
- Торговые марки: Harvia и MyHarvia 2 являются зарегистрированными товарными знаками Harvia Group. Этот адаптер — независимый проект с открытым исходным кодом, разрабатываемый сообществом, и не имеет официальной поддержки, одобрения или спонсорства со стороны Harvia.
Установка
Адаптер доступен в официальном репозитории ioBroker. Вы можете установить его непосредственно через веб-интерфейс администратора ioBroker.
Через ioBroker Admin
- Откройте веб-интерфейс ioBroker в браузере (например,
192.168.1.33:8081). - Перейдите на вкладку «Адаптеры» .
- Введите "harvia-fenix" в фильтр.
- Чтобы добавить экземпляр, нажмите на три точки, а затем на символ «+» адаптера Harvia Fenix .
Настраивать
Помимо установки адаптера, необходимо настроить экземпляр адаптера, указав данные вашей учетной записи MyHarvia.
Предварительные требования
- Node.js >= 22
- Зарегистрированный аккаунт в официальном приложении MyHarvia 2 для смартфонов.
- Ваши действительные учетные данные для входа:
- Адрес электронной почты
- Пароль
Примечание: Мы рекомендуем создать отдельную учетную запись для ioBroker в приложении Harvia 2 и использовать эти учетные данные для входа в систему.
Конфигурация ioBroker
- Откройте интерфейс ioBroker в браузере (например,
192.168.1.33:8081). - Перейдите на вкладку « Экземпляры» и щелкните значок настроек вашего экземпляра.
harvia-fenix.0пример. - Введите свой адрес электронной почты и пароль от учетной записи MyHarvia.
- Если оставить поле «Идентификатор устройства» пустым, адаптер автоматически выполнит поиск устройств, связанных с вашей учетной записью, при запуске. В качестве активного устройства будет использоваться первое найденное устройство.
- Настройте дополнительные параметры: интервал опроса (секунды), минимальный/максимальный предел целевой температуры (°C) и максимальная продолжительность нагрева (минуты).
- Нажмите «Сохранить и закрыть» .
Настройка устройства и поддержка нескольких устройств
Автоматическое обнаружение
Если оставить поле « Идентификатор устройства» в настройках адаптера пустым, адаптер автоматически выполнит поиск устройств, связанных с вашей учетной записью, при запуске. В качестве активного устройства будет использоваться первое найденное устройство. Обнаруженный идентификатор будет выведен в журнал ioBroker.
Ручной идентификатор устройства
Для большинства пользователей с одной сауной достаточно автоматического обнаружения. Однако рекомендуется скопировать обнаруженный ID из журнала и вставить его в конфигурацию, чтобы обеспечить стабильное соединение с конкретным оборудованием.
Несколько саун
Если ваша учетная запись MyHarvia управляет несколькими блоками управления (например, одним дома и одним в дачном домике):
- Создайте отдельный экземпляр адаптера для каждой сауны (например)
harvia-fenix.0иharvia-fenix.1). - В конфигурации соответствующего экземпляра вручную введите идентификатор устройства (Device ID) для каждого блока. Это позволит вам независимо отслеживать и контролировать обе сауны, используя собственный набор параметров.
Общие/гостевые учетные записи и идентификатор партнера
🟢 Сценарий по умолчанию (Основной аккаунт / Владелец сауны)
Если вы настраиваете адаптер, используя основную учетную запись MyHarvia (учетную запись, которая изначально зарегистрировала сауну в мобильном приложении):
- В настройках оставьте поля «Идентификатор устройства» и «Идентификатор партнера» пустыми .
- Адаптер автоматически обнаружит вашу сауну и подключится к ней при включении.
🟡 Сценарий использования общего/гостевого аккаунта (например, выделенный аккаунт ioBroker)
Если доступ к сауне был предоставлен с учетной записи владельца на дополнительную гостевую учетную запись через приложение MyHarvia 2, точка автоматического обнаружения Harvia возвращает пустой список устройств. {"devices":[]}) для гостевых токенов.
В этом случае необходимо вручную указать идентификатор устройства (Device ID) и идентификатор партнера владельца (Wonder's Partner ID) в настройках адаптера:
Способ получения обоих идентификаторов за 60 секунд:
- В настройках адаптера временно введите учетные данные для входа в систему основной/владельческой учетной записи и нажмите «Сохранить» .
- Откройте лог ioBroker. Адаптер мгновенно подключается и выводит строки, содержащие оба идентификатора:
Found device: ... (ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)➡️ Это идентификатор вашего устройства .Using partner ID from user token: ORG/prod:0:6656➡️ Это ваш партнерский идентификатор (обычно)ORG/prod:0:6656илиORG/prod:0:6656:0).
- Скопируйте оба значения.
- Откройте настройки заново, вернитесь к учетным данным гостевой учетной записи , вставьте скопированные идентификатор устройства и идентификатор партнера в соответствующие необязательные поля и нажмите «Сохранить и закрыть» .
Теперь гостевой аккаунт может напрямую и надёжно управлять общей сауной!
Примечание о совместимости
- Поддерживаются: блоки управления Harvia Fenix , управляемые через мобильное приложение MyHarvia 2 .
- НЕ поддерживается: серия Harvia Xenio (например, Xenio WiFi / CX001WIFI). Серия Xenio использует устаревшую аппаратную экосистему и старое приложение "MyHarvia for Xenio" , которое принципиально несовместимо с API, используемым этим адаптером.
Использование
Адаптер преобразует облачные состояния вашей сауны в структурированные данные ioBroker. harvia-fenix.0.*.
Доступные точки данных
| Точка данных | Тип | Роль | Доступ | Описание |
|---|---|---|---|---|
info.connection | логический | indicator | Только для чтения | Состояние подключения адаптера к облаку MyHarvia. |
info.minTemp | число | value.temperature | Только для чтения | Минимальный предел целевой температуры (40 °C). |
info.maxTemp | число | value.temperature | Только для чтения | Максимально допустимая целевая температура (110 °C). |
info.avgHeatingRate | число | value | Только для чтения | Узнанная средняя историческая скорость нагрева в °C в минуту (°C/min). |
info.heatingAnomaly | логический | indicator | Только для чтения | Повороты true если эффективность работы системы отопления значительно отклоняется от исторического среднего значения (слишком низкая или слишком высокая). |
info.heatingAnomalyType | нить | text | Только для чтения | Тип аномалии: 'none' (нормальный), 'too_slow' (ниже 50% от среднего показателя), или 'too_fast' (выше 180% от среднего показателя). |
info.heatingAnomalyDesc | нить | text | Только для чтения | Удобочитаемое описание диагностики и рекомендуемые шаги по устранению неполадок. |
estimatedHeatingTimeRemaining | число | value.interval | Только для чтения | Примерное оставшееся время нагрева в минутах до достижения целевой температуры (min). |
online | логический | indicator.reachable | Только для чтения | Состояние подключения блока управления к облаку. |
doorSafety | логический | indicator.safety | Только для чтения | Состояние контура безопасности (например, true (если дверь надежно закрыта / безопасна для использования). |
remoteControl | логический | indicator | Только для чтения | Статус готовности к дистанционному запуску. Если false Дистанционный запуск обогревателя (через адаптер) заблокирован. |
errorMsg | нить | text | Только для чтения | Текущие сообщения об ошибках или текстовое сообщение о состоянии нагревателя. |
heatOn | логический | switch.power | Чтение/Запись | Главный переключатель для включения нагревателя сауны (true) или ВЫКЛ. false). |
heaterPower | число | value.power | Только для чтения | Примечание: Этот объект предоставляется через структуру API MyHarvia, но в настоящее время поставляется в виде 0 kW (незаполнено). По всей видимости, это поле зарезервировано для будущих обновлений оборудования или приложений. |
lightOn | логический | switch.light | Чтение/Запись | Переключатель позволяет включить или выключить встроенное освещение сауны. |
maxDuration | число | level.timer | Чтение/Запись | Максимально допустимая продолжительность нагрева сауны в минутах (min). |
panelTemp | число | value.temperature | Только для чтения | Показания температуры, измеренные на физическом блоке управления. |
targetTemp | число | level.temperature | Чтение/Запись | Заданная целевая температура для сауны (например, 90 °C). |
temp | число | value.temperature | Только для чтения | Текущая температура внутри сауны (например, 17 °C). |
readyNotified10Min | логический | indicator | Только для чтения | Повороты true когда до достижения целевой температуры в сауне остается примерно 10 минут (на 13°C ниже целевой). |
targetReachedNotified | логический | indicator | Только для чтения | Повороты true когда сауна успешно достигнет заданной целевой температуры. |
totalBathingHours | число | value.number | Только для чтения | Общее суммарное количество часов активного использования сауны за всю историю наблюдений (h). |
totalOperatingHours | число | value.hours | Только для чтения | Общее время работы системы в рабочем состоянии (h). |
totalSessions | число | value.count | Только для чтения | Счетчик общего количества проведенных сеансов индивидуального нагревания сауны. |
readyAt | нить | text | Только для чтения | Примерное время суток, когда достигается целевая температура (например, 17:57). |
readyAtMessage | нить | text | Только для чтения | Удобочитаемое сообщение о готовности (например, Ready at 17:57 if turned on now). |
timeToTargetFormatted | нить | text | Только для чтения | Отформатированное время, необходимое для достижения целевой температуры (например, 39 min 30 sec). |
heatingCurve | нить | json | Только для чтения | JSON-массив с интервалами нагрева в секундах на каждые 10 °C для построения графиков/визуализации. |
profiles | нить | json | Только для чтения | JSON-массив доступных профилей саун (например, Cozy и т. д.). |
activeProfile | число | level | Чтение/Запись | Указатель профиля текущей активной сауны (0 = мягкий, 1 = уютный, 2 = горячий). |
events.lastEvent | нить | text | Только для чтения | Код или идентификатор последнего события, полученного от службы организации мероприятий Harvia Events Service. |
events.lastEventType | нить | text | Только для чтения | Категория последнего события (SAFETY, ERROR, SYSTEM, и т. д.). |
events.lastEventSeverity | нить | text | Только для чтения | Уровень серьезности последнего инцидента (info, warn, error, critical). |
events.lastEventMessage | нить | text | Только для чтения | Удобочитаемое сообщение или описание последнего события. |
events.lastEventTime | нить | date | Только для чтения | ISO-метка времени последнего события. |
events.safetyTripped | логический | sensor.alarm | Только для чтения | Указывает, произошло ли срабатывание активного защитного отключения или блокировки. |
events.safetyReason | нить | text | Только для чтения | Причина/основание срабатывания системы активной безопасности. |
events.history | нить | json | Только для чтения | Массив JSON, содержащий историю последних событий (до 15 событий). |
Интеллектуальные функции и автоматизация
1. Адаптивное прогнозирование нагрева и обнаружение аномалий
- Продолжительность нагрева, изученная в ходе исследования (
estimatedHeatingTimeRemaining&info.avgHeatingRate):
Адаптер запоминает скорость нагрева салона (°C в минуту). Во время активной сессии он объединяет исторические данные с динамикой изменения температуры в реальном времени, чтобы точно рассчитать оставшееся время обогрева. - Двунаправленное обнаружение аномалий (
info.heatingAnomaly,info.heatingAnomalyType,info.heatingAnomalyDesc):
После как минимум 10 минут активного нагрева адаптер сравнивает текущую скорость нагрева с усредненным историческим значением:- Слишком медленно (
too_slowЕсли уровень нагрева падает ниже 50% от среднего (например, из-за открытой двери или неисправности нагревательного элемента),info.heatingAnomalyпереключается наtrue. - Слишком быстро (
too_fastЕсли температура нагрева превышает 180% от средней (например, смещение датчика температуры, образование теплового кармана у датчика или залипание реле),info.heatingAnomalyпереключается наtrue. info.heatingAnomalyDescПредоставляет удобочитаемые диагностические данные для push-уведомлений или информационных панелей.
- Слишком медленно (
2. Уведомления (push-триггеры)
Адаптер автоматически рассчитывает степень нагрева и предоставляет индикаторные данные, специально разработанные для запуска push-уведомлений (например, через Telegram, Pushover или Alexa):
// Trigger for the 10-minute pre-warning
on({ id: 'harvia-fenix.0.readyNotified10Min', change: 'ne', val: true }, function () {
const targetTemp = getState('harvia-fenix.0.targetTemp').val;
sendTo('telegram.0', 'send', { text: `🧖 The sauna will reach its target temperature (${targetTemp}°C) in about 10 minutes.` });
});
// Trigger when the sauna is fully ready
on({ id: 'harvia-fenix.0.targetReachedNotified', change: 'ne', val: true }, function () {
const targetTemp = getState('harvia-fenix.0.targetTemp').val;
sendTo('telegram.0', 'send', { text: `♨️ The sauna has reached the target temperature of ${targetTemp}°C and is ready!` });
});
// Trigger on heating anomaly (too slow or too fast)
on({ id: 'harvia-fenix.0.info.heatingAnomaly', change: 'ne', val: true }, function () {
const desc = getState('harvia-fenix.0.info.heatingAnomalyDesc').val;
sendTo('telegram.0', 'send', { text: desc });
});
Примечание: Эти состояния будут автоматически сброшены до исходного состояния. false когда обогреватель выключен или когда начинается новый сеанс обогрева.
3. Профили саун (profiles &activeProfile)
- Доступные профили (
profiles):
Отображает предварительно настроенные программы сауны из вашего приложения MyHarvia 2 (например, «Мягкий» , «Уютный» , «Горячий» ) в виде массива JSON, включающего предустановленные целевые температуры и таймеры. - Профили переключения (
activeProfile):
Данные доступны для чтения/записи с использованием индекса, начинающегося с 0:0= мягкий1= уютный2= горячий- Написание числа для
activeProfileотправляет запрос на изменение профиля непосредственно в облако Harvia (PATCH /devices/profile), автоматически применяя заданную в профиле целевую температуру и продолжительность сеанса к сауне. - Пример (скрипта):
// Switch to the cozy sauna profile setState('harvia-fenix.0.activeProfile', 1);
4. Центр мероприятий и безопасности (events.*)
- Система контроля аварийной остановки (
events.safetyTripped&events.safetyReason):
Адаптер отслеживает работу защитных контуров дверей, термопредохранителей и блокировок предохранительных выключателей от службы Harvia Events Service. Если во время обогрева срабатывает активный предохранительный выключатель,events.safetyTrippedпереключается наtrueс четким объяснением вevents.safetyReason. - История событий (
events.history):
Сохраняет историю последних 15 событий, связанных с системой, дверями, ошибками и безопасностью, в виде структурированного массива JSON для панелей мониторинга VIS и ведения журналов аудита.
Поиск неисправностей
Типичные ошибки API и сообщения о состоянии в errorMsg
- **
Action blocked (403 Forbidden). Remote start authorization (Safety Loop) at panel might not be active.**- Причина: Европейский стандарт безопасности требует, чтобы дистанционный запуск мог быть активирован только в том случае, если защитная петля/датчик двери замкнуты и дистанционный запуск физически активирован на панели управления сауны.
- Решение: Закройте дверь сауны и нажмите кнопку дистанционного запуска / Fernstart на физической панели управления Harvia. Значок пульта на экране должен быть активен. После этого вы сможете управлять сауной через адаптер.
- **
Cloud lock: Device busy, command discarded.(Записано как отладочная информация)**- Причина: API Harvia ограничивает скорость отправки команд, если они отправляются с большой частотой (например, при быстром нажатии кнопок в пользовательском интерфейсе), чтобы защитить оборудование.
- Решение: Подождите несколько секунд между командами. Адаптер автоматически отбрасывает команды, отправленные слишком быстро, чтобы предотвратить блокировку API.
Задачи
- Программа автоматически напоминала о необходимости выпить прохладительный напиток после сауны 🍺❄️
- Создайте роботизированного помощника с искусственным интеллектом, который будет размахивать полотенцем, для идеального Aufguss 🧖♂️🪣
Changelog
WORK IN PROGRESS
- (meistermopper) Document activeProfile standard index mapping (0=mild, 1=cozy, 2=hot)
1.1.0 (2026-09-17)
- (meistermopper) Add Events & Safety Hub with dedicated events channel and states
- (meistermopper) Add safety trip detection, alarm indicators, and sliding history
- (meistermopper) Fix activeProfile endpoint to use PATCH /devices/profile per API spec
- (meistermopper) Document profiles and activeProfile switching behavior in README
1.0.0 (2026-09-17)
- (meistermopper) Add AWS AppSync WebSocket real-time push client
- (meistermopper) Add token refresh via /auth/refresh using refreshToken
0.6.0 (2026-09-16)
- (meistermopper) Add readyAt, readyAtMessage, timeToTargetFormatted states
- (meistermopper) Implement Harvia native 13-interval heating curve calculation
- (meistermopper) Add profiles, activeProfile, and standby time prognosis
- (meistermopper) Increase adapter logo display size in README files to 200px
- (meistermopper) Add breaking change callouts and older tag support to release notes
- (meistermopper) Add automated release notes generator for GitHub releases
- (meistermopper) Add check:repo script and integrate repochecker into test:local
- (meistermopper) Restore email in license copyright lines (S4050, S4051)
- (meistermopper) Fix license section in README to satisfy repo-checker rule W6034
0.5.1 (2026-09-12)
- (meistermopper) Replace adapter logo with custom MyFenix homage logo
- (meistermopper) Update @iobroker/adapter-core to 3.4.3 and @iobroker/testing to 6.2.1
- (meistermopper) Fix Mocha 12 instantiation in unit test runner on Node 22
0.5.0 (2026-09-09)
- (meistermopper) Add bidirectional heating anomaly detection (too slow / fast)
- (meistermopper) Update @alcalzone/release-script-plugin-license to 5.2.2
- (meistermopper) Add Node.js 26 to test matrix
License
MIT License
Copyright (c) 2026 meistermopper meister.mopper@gmail.com
See the LICENSE file for the full license text.