Обзор
Адаптер ioBroker.hoymiles-ms интегрирует системы хранения энергии Hoymiles MicroStorage (в настоящее время поддерживается модель Hoymiles MS-A2) в платформу ioBroker. Этот адаптер позволяет осуществлять мониторинг и управление вашей системой хранения энергии Hoymiles MS-A2 через платформу ioBroker.
Hoymiles MS-A2 — это микронакопительное устройство, сочетающее в себе возможности солнечного инвертора и аккумуляторного хранения энергии. Более подробную информацию об устройстве можно найти в разделе здесь.
Примечание: Этот адаптер не связан с Hoymiles и является независимым проектом, созданным местным сообществом.
Функции
- Мониторинг в реальном времени: состояние батареи, потребление энергии, взаимодействие с сетью.
- Отслеживание энергопотребления: Мониторинг производства, потребления и хранения энергии.
- Мониторинг сети: отслеживание работы энергосистемы, подключенной к сети и автономной от нее.
- Системная статистика: Подробный обзор производительности системы.
- Управление мощностью: Установка и регулировка уровней выходной мощности.
- Поддержка нескольких устройств: одновременная работа с несколькими устройствами MS-A2.
- Связь по протоколу MQTT: Надежная связь по протоколу MQTT.
Предварительные условия
Перед настройкой адаптера убедитесь, что у вас есть:
- Система ioBroker запущена (Node.js >= 20)
- Микрохранилище Hoymiles MS-A2
- На вашем мобильном устройстве должно быть установлено приложение S-Miles Home.
- Сетевое соединение между ioBroker и устройством MS-A2
- Свободный TCP-порт для связи по протоколу MQTT (по умолчанию: 1881)
Настройка и конфигурация адаптера
Шаг 1: Установите адаптер
Установите адаптер через административный интерфейс ioBroker:
- Откройте административный интерфейс ioBroker в веб-браузере.
- Перейдите на вкладку «Адаптеры».
- Найдите "hoymiles-ms" в репозитории адаптера.
- Нажмите кнопку «Установить» рядом с адаптером.
Важно: Никогда не устанавливайте адаптеры ioBroker напрямую через npm. Всегда используйте административный интерфейс ioBroker для правильной установки и управления зависимостями.
Шаг 2: Настройка адаптера
- Откройте административный интерфейс ioBroker.
- Перейдите в раздел «Адаптеры» и найдите «hoymiles-ms».
- Нажмите на значок настроек (шестерёнка).
- Настройте следующие параметры:
Конфигурация MQTT-сервера
| Параметр | Описание | Значение по умолчанию | Примечания |
|---|---|---|---|
| Клиентский режим | Включить режим клиента MQTT | false | В настоящее время не реализовано |
| Порт MQTT | TCP-порт для MQTT-сервера | 1881 | Во избежание конфликтов с другими MQTT-сервисами |
| Порт MQTT | TCP-порт для сервера MQTT | 1881 | Избегайте конфликтов с другими службами MQTT |
Важные примечания:
— В настоящее время адаптер работает только в режиме MQTT-сервера.
- Поддержка аутентификации пока отсутствует - убедитесь в безопасности вашей сети.
- Порт 1881 выбран во избежание конфликтов с ioBroker.mqtt (1883) и ioBroker.shelly (1882).
Шаг 3: Сохраните и запустите адаптер
- В диалоговом окне настроек нажмите «Сохранить и закрыть».
- Включите экземпляр адаптера.
- Адаптер запустится и начнет принимать соединения MQTT.
Настройка устройства Hoymiles MS-A2
Для подключения устройства MS-A2 к адаптеру ioBroker необходимо выполнить его настройку с помощью приложения S-Miles Home.
Шаг 1: Откройте приложение S-Miles Home
- Запустите приложение S-Miles Home на своем мобильном устройстве.
- Убедитесь, что вы подключены к той же сети, что и ваше устройство MS-A2.
Шаг 2: Доступ к конфигурации MQTT
- Перейдите на страницу Настройки (значок шестеренки в правом верхнем углу).
- Прокрутите вниз, чтобы найти раздел "MQTT-Service".
- Включите службу MQTT.
Шаг 3: Настройка параметров MQTT
| Настройка | Значение | Описание |
|---|---|---|
| Адрес сервера | <ioBroker-IP> | IP-адрес вашей системы ioBroker |
| Префикс клиента | MSA | Необязательный префикс идентификатора (по умолчанию: MSA) |
| Аутентификация | Disabled | Должна быть отключена (пока не поддерживается) |
| Аутентификация | Отключено | Должно быть отключено (пока не поддерживается) |
Пример конфигурации:
- Адрес сервера:
192.168.1.100(замените на IP-адрес вашего ioBroker) - Порт:
1881 - Префикс клиента:
MSA - Имя пользователя: (оставьте пустым)
- Пароль: (оставьте пустым)
Шаг 4: Примените настройки
- Сохраните конфигурацию MQTT в приложении S-Miles Home.
- Устройство MS-A2 перезапустит службу MQTT.
- Проверьте журналы ioBroker для подтверждения подключения.
Операции и поток данных
Интервалы обновления данных
Устройство MS-A2 отправляет данные с различными интервалами (эти интервалы определяются API Hoymiles и не могут быть настроены):
- Конфигурационные данные: Отправляются один раз при установлении соединения.
- Данные в реальном времени: обновляются каждые 1 секунду
- Системная статистика: Обновляется каждые 5 минут
Состояние подключения устройства
- Адаптер автоматически отслеживает подключение устройства. — Устройства считаются отключенными, если в течение 30 секунд не поступают данные.
- Статус подключения отображается в состоянии
info.online.
Состояния, созданные адаптером
Адаптер динамически создает состояния на основе данных, полученных от вашего устройства MS-A2. Состояния организованы в иерархическую структуру:
Состояния информации об устройстве
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
device.manufacturer | строка | - | текст | Производитель устройства |
device.name | строка | - | info.name | Имя устройства |
device.sw_version | строка | - | info.firmware | Версия программного обеспечения |
device.identifiers | массив | - | список | Идентификаторы устройств |
device.identifiers | массив | - | список | Идентификаторы устройств |
Состояния батареи
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
device.bat_i | число | A | значение.текущее | Ток батареи |
device.bat_temp | число | °C | значение.температура | Температура батареи |
device.bat_v | число | В | значение напряжения | Напряжение батареи |
device.bat_sts | строка | - | текст | Состояние батареи |
device.soc | число | % | значение | Состояние заряда |
device.soc | число | % | значение | Уровень заряда |
Состояния подключения к сети (сеть включена)
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
device.grid_on.v | число | В | значение напряжения | Напряжение сети (в сети) |
device.grid_on.f | число | Гц | значение.частота | Частота сети (в сети) |
device.grid_on.p | число | Вт | значение.мощность.активная | Активная мощность (в сети) |
device.grid_on.q | число | Var | значение.мощность.реактивная | Реактивная мощность (в сети) |
device.grid_on.ein | число | Вт·ч | значение.энергия.потреблено | Потребленная энергия (в сети) |
device.grid_on.eout | число | Вт·ч | значение.энергии.произведено | Произведенная энергия (в сети) |
device.grid_on.etin | число | Вт·ч | значение.энергия.потреблено | Общее количество потребленной энергии (в сети) |
device.grid_on.etout | число | Вт·ч | значение произведенной энергии | Общая произведенная энергия (в сети) |
device.grid_on.etout | число | Вт·ч | значение.энергия.произведено | Общая произведенная энергия (в сети) |
Состояния подключения к сети (сеть отключена)
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
device.grid_off.v | число | В | значение напряжения | Напряжение сети (автономное) |
device.grid_off.f | число | Гц | значение.частота | Частота сети (вне сети) |
device.grid_off.p | число | Вт | значение.мощность.активная | Активная мощность (автономный режим) |
device.grid_off.q | число | Var | значение.мощность.реактивная | Реактивная мощность (автономная) |
device.grid_off.ein | число | Вт·ч | значение.энергия.потреблено | Потребленная энергия (автономная) |
device.grid_off.eout | число | Вт·ч | значение.энергии.произведено | Произведенная энергия (автономная) |
device.grid_off.etin | число | Вт·ч | значение.энергия.потреблено | Общее потребление энергии (автономное энергоснабжение) |
device.grid_off.etout | число | Вт·ч | значение произведенной энергии | Общее количество произведенной энергии (автономная система) |
device.grid_off.etout | число | Вт·ч | значение.энергия.произведено | Общее количество произведенной энергии (в автономном режиме) |
Состояния инвертора
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
device.inv.v | число | В | значение напряжения | Напряжение инвертора |
device.inv.p | число | Вт | значение.мощность.активная | Активная мощность инвертора |
device.inv.q | число | Var | значение.мощность.реактивная | Реактивная мощность инвертора |
device.inv.ein | число | Вт·ч | значение.энергия.потреблено | Потребляемая энергия инвертора |
device.inv.eout | число | Вт·ч | значение.энергии.произведено | Энергия, произведенная инвертором |
device.inv.etin | число | Вт·ч | значение.энергия.потреблено | Общее количество потребленной энергии инвертора |
device.inv.etout | число | Вт·ч | значение.энергия.произведено | Общая произведенная инвертором энергия |
device.inv.etout | number | Вт·ч | value.energy.produced | Общая произведенная инвертором энергия |
Состояния данных в реальном времени
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
realtime.bat_p | число | Вт | значение.мощность | Заряд батареи в реальном времени |
realtime.grid_on_p | число | Вт | значение.мощность | Мощность сети в реальном времени (в сети) |
realtime.grid_off_p | число | Вт | значение.мощность | Мощность сети в реальном времени (автономная) |
realtime.soc | число | % | значение | Состояние заряда в реальном времени |
realtime.sys_bat_p | число | Вт | значение.мощность | Заряд батареи системы в реальном времени |
realtime.sys_grid_p | число | Вт | значение.мощность | Мощность энергосистемы в реальном времени |
realtime.sys_load_p | число | Вт | значение.мощность | Мощность нагрузки системы в реальном времени |
realtime.sys_plug_p | число | Вт | значение.мощность | Мощность системы в реальном времени |
realtime.sys_pv_p | число | Вт | значение.мощность | Мощность фотоэлектрической системы в реальном времени |
realtime.sys_soc | число | % | значение | Состояние заряда системы в реальном времени |
realtime.sys_sp_p | число | Вт | значение.мощность | Уставка мощности системы в реальном времени |
realtime.sys_sp_p | число | Вт | значение.мощность | Мощность, заданная системой в реальном времени |
Статистические данные системы (состояния)
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
system.bat_p | число | Вт | значение.мощность | Мощность батареи системы |
system.dchg_e | число | Вт·ч | значение.энергии.производства | Энергия разряда системы |
system.grid_p | число | Вт | значение мощности | Мощность сети |
system.ems_mode | строка | - | состояние | Режим системы управления энергопотреблением |
system.plug_in_e | число | Вт·ч | значение.потребленной.энергии | Энергия, потребляемая системой |
system.plug_out_e | число | Вт·ч | значение.энергии.производства | Выходная энергия системы |
system.pv_e | число | Вт·ч | произведенная энергия | Энергия фотоэлектрической системы |
system.pv_p | число | Вт | значение.мощность | Мощность фотоэлектрической системы |
system.soc | число | % | значение | Состояние заряда системы |
system.sp_p | число | Вт | значение мощности | Уставка мощности системы |
system.sp_p | число | Вт | значение.мощности | Уставка мощности системы |
Состояния управления мощностью
| Штат | Тип | Подразделение | Роль | Доступ | Описание |
|---|---|---|---|---|---|
power_ctrl.min | число | Вт | значение мощности | Чтение | Минимальная настройка мощности |
power_ctrl.set | число | Вт | уровень мощности | Чтение/Запись | Уставка мощности (регулируемая) |
power_ctrl.step | число | Вт | значение мощности | Чтение | Шаг регулировки мощности |
power_ctrl.step | число | Вт | значение мощности | Чтение | Шаг регулировки мощности |
Информационные состояния
| Штат | Тип | Подразделение | Роль | Описание |
|---|---|---|---|---|
info.online | логическое значение | - | indicator.reachable | Статус подключения устройства |
info.timestamp | номер | - | дата | Отметка времени последних данных |
device.rssi | число | дБ | значение | уровень сигнала Wi-Fi |
device.rssi | число | база данных | значение | уровень сигнала Wi-Fi |
Штаты, находящиеся под контролем службы скорой медицинской помощи
| Состояние | Тип | Роль | Доступ | Значения | Описание |
|---|---|---|---|---|---|
ems_mode.command | строка | состояние | Чтение/Запись | general, mqtt_ctrl | Управление режимом EMS |
Функциональность управления питанием
Адаптер обеспечивает возможности управления питанием посредством определенных состояний, допускающих запись:
Настройка выходной мощности
Для регулировки выходной мощности вашего устройства MS-A2:
- Установка режима EMS: Сначала установите
ems_mode.commandв значениеmqtt_ctrl. - Установка уровня мощности: Запишите желаемое значение мощности в функцию
power_ctrl.set. - Допустимый диапазон: значение мощности должно находиться в диапазоне от
power_ctrl.minдоpower_ctrl.max. - Шаг: Используйте
power_ctrl.stepдля выбора соответствующего шага.
Пример управления мощностью
// Enable MQTT control mode
setState('hoymiles-ms.0.MSA_12345.ems_mode.command', 'mqtt_ctrl');
// Set power output to 500W (example)
setState('hoymiles-ms.0.MSA_12345.power_ctrl.set', 500);
Примечания по управлению питанием
- Управление питанием доступно только тогда, когда устройство находится в режиме
mqtt_ctrl. - Настройки мощности применяются блоком MS-A2 немедленно.
- Отслеживание состояния в реальном времени для проверки изменений мощности. — Вернитесь в «общий» режим, чтобы восстановить автоматическую работу.
Поддержка нескольких устройств
Адаптер автоматически поддерживает работу нескольких устройств MS-A2:
Каждое устройство идентифицируется своим уникальным идентификатором клиента.
- Состояния создаются динамически для каждого подключенного устройства. — Объекты устройств организованы в отдельных папках. — Статус подключения к сети отслеживается индивидуально для каждого устройства.
Поиск неисправностей
Распространенные проблемы
Устройство не подключается:
- Проверьте сетевое соединение между ioBroker и MS-A2.
- Проверьте конфигурацию MQTT-сервера в настройках адаптера.
- Убедитесь, что порт 1881 не заблокирован брандмауэром.
- Проверьте настройки MQTT в приложении S-Miles Home.
Информация по штатам не обновляется:
- Проверьте онлайн-статус устройства (
info.online) - Проверка обновлений метки времени (
info.timestamp) - Проверьте журналы адаптера на наличие сообщений об ошибках.
- При необходимости перезагрузите адаптер.
Управление питанием не работает:
- Убедитесь, что режим EMS установлен на
mqtt_ctrl. - Убедитесь, что значение мощности находится в пределах минимального/максимального диапазона.
- Убедитесь, что устройство подключено к сети и отвечает.
- Отслеживайте изменения состояния в режиме реального времени.
Анализ логов
Включите подробное логирование, установив уровень логирования адаптера на "debug" или "silly":
- Уровень информации: События подключения и основные операции
- Уровень отладки: Подробная информация о взаимодействии по протоколу MQTT.
- Уровень "для развлечения": Все сообщения MQTT и обновления состояния.
Требования к сети
- Порт 1881/TCP: Должен быть доступен из MS-A2 для ioBroker.
- Брандмауэр: Убедитесь, что трафик MQTT разрешен.
- Стабильность сети: Для надежной работы необходимо стабильное соединение.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
В: Могу ли я использовать другой порт MQTT? О: Да, настройте любой свободный порт в параметрах адаптера и обновите конфигурацию MS-A2 соответствующим образом.
В: Поддерживает ли адаптер аутентификацию? О: Пока нет. Поддержка аутентификации планируется в будущих версиях.
В: Могу ли я отслеживать состояние нескольких устройств MS-A2 одновременно? О: Да, каждое устройство будет отображаться как отдельное устройство со своим собственным состоянием.
В: Как часто обновляются данные? О: Данные обновляются в режиме реального времени каждую секунду, системная статистика — каждые 5 минут (управляется через API Hoymiles).
В: Могу ли я управлять графиком зарядки/разрядки? О: В настоящее время поддерживается только управление выходной мощностью. Расширенные возможности планирования могут быть добавлены в будущих версиях.
В: Что произойдет, если сетевое соединение будет потеряно? О: Адаптер обнаружит устройства, находящиеся в автономном режиме, и пометит их соответствующим образом. Передача данных возобновится после восстановления соединения.
В: Есть ли какие-либо ограничения? О: В настоящее время адаптер ограничен мониторингом только для чтения и базовым управлением питанием. Расширенные функции зависят от возможностей API Hoymiles.
Поддержка и вклад
По вопросам, проблемам или предложениям:
- Проблемы на GitHub: Сообщайте о проблемах здесь
- Форум ioBroker: Поддержка сообщества и обсуждения
- Документация: Этот документ и комментарии к коду.
Если вам понравился этот адаптер, пожалуйста, рассмотрите возможность пожертвования:
[
Этот адаптер — независимый проект, созданный силами местного сообщества, и не связан с компанией Hoymiles.
Changelog
0.2.2 (2026-01-10)
- (mcm1957) Subscription code has been fixed to allow operation with hoymiles mqtt v3.0
- (mcm1957) NOTE: TOU topics are not yet supported and raising warnings currently.
0.2.1 (2026-01-09)
- (mcm1957) ignore empty and invalid payloads. [#90]
- (mcm1957) Dependencies have been updated
0.2.0 (2025-08-23)
- (mcm1957) States are created dynamically now. So no states should be created if a system does not provide data for it (i.e slave micro storage).
- (mcm1957) State values are reset during startup now to prevent stale information.
- (mcm1957) Support to control power consumption and delivery has been added.
- (mcm1957) Dependencies have been updated
0.1.2 (2025-08-03)
- (mcm1957) Warnings raised from slave systems have been removed
- (mcm1957) Dependencies have been updated
0.1.1 (2025-07-27)
- (mcm1957) Handling of configuration has been corrected
- (mcm1957) Translations have been adapted
0.1.0 (2025-07-26)
- (mcm1957) initial release
License
MIT License
Copyright (c) 2025-2026 mcm1957 mcm57@gmx.at
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.