BLUETTI

Телеметрия электростанции BLUETTI

Текущий релиз
1.0.0
Разработчик
Percy2Live
Лицензия
MIT
BLUETTI

ioBroker.bluetti

Адаптер ioBroker только для чтения для электростанций BLUETTI — телеметрия аккумуляторов, солнечных батарей, сети и нагрузки из облака BLUETTI.


Перенесите данные с вашей электростанции BLUETTI в режиме реального времени в ioBroker: состояние заряда, входное напряжение от солнечных панелей/сети и выходная мощность переменного/постоянного тока, а также индикаторы подключения и состояния для автоматизации в стиле ИБП. Аутентификация использует тот же облачный вход BLUETTI, что и официальная интеграция с Home Assistant — никаких паролей от приложений, никакого сбора данных.

Статус: работает и проверено от начала до конца на реальном аккаунте BLUETTI (Elite 30 V2) на js-controller 7.0.7. Пока не опубликовано в репозиториях ioBroker. Основная телеметрия стабильна; более подробная телеметрия для каждой модели все еще проверяется на реальных данных.

✨ Особенности

  • 🔋 Телеметрия батареи и источника питания — уровень заряда, входное напряжение от фотоэлектрических панелей, входное напряжение от сети, выходная мощность переменного/постоянного тока.
  • 🔐 Безопасный вход в облако — BLUETTI OAuth со встроенными учетными данными; токен хранится в зашифрованном виде и автоматически обновляется.
  • 🔎 Обнаружение устройств — выберите свое устройство из списка после входа в систему.
  • 🩺 Состояние работоспособности и подключения — доступность, последовательные сбои и консервативный сигнал подозрения на отключение для автоматизированных систем ИБП
  • 👀 Только для чтения и безопасно — адаптер никогда не записывает данные на ваше устройство (никаких изменений режима работы/переменного тока/постоянного тока/прошивки).

🔌 Поддерживаемые устройства

МодельКоды товаровСтатус
BLUETTI Elite 30 V2EL30V2 ,PR30V2✅ Подтверждено

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

📦 Требования

  • ioBroker с js-controller ≥ 6.0.11 и admin ≥ 7.6.20
  • Учетная запись BLUETTI, привязанная к вашему устройству в приложении BLUETTI.
  • Устройство подключено к облаку BLUETTI (в режиме онлайн через приложение).

🚀 Установка и настройка

Адаптер пока отсутствует в репозитории ioBroker. После его принятия вы сможете установить его непосредственно из административного интерфейса ioBroker ( Адаптер → найдите "bluetti").

  1. Установите адаптер и создайтеbluetti.0 пример.
  2. Откройте конфигурацию экземпляра в административной панели ioBroker.
  3. Нажмите «Аутентификация с помощью BLUETTI» и завершите вход в систему в открывшемся окне браузера. Адаптер использует встроенные учетные данные клиента BLUETTI, поэтому поля идентификатора/секрета клиента в административном интерфейсе не отображаются.
  4. Выберите своё устройство в меню выбора устройств .
  5. Сохранить. Опрос начнётся автоматически;info.connection поворотыtrue как только первый опрос пройдет успешно.

Аутентификация выполняется только один раз — токен хранится в зашифрованном виде.auth.tokenJson Состояние обновляется в фоновом режиме.

Примечание по безопасности: токен OAuth хранится в зашифрованном состоянии ioBroker.auth.tokenJson ) сread: false, write: false Шифрование защищает от случайного доступа и доступа к резервным копиям/файловой системе. Любой администратор ioBroker по-прежнему может читать и расшифровывать состояние с помощью скриптов или REST API, поскольку ключ шифрования является общим для всего экземпляра. Это приемлемый компромисс: администраторы ioBroker уже имеют полный доступ к системе, поэтому зашифрованное состояние не ослабляет общую безопасность.

Если вам необходимо переопределить встроенные учетные данные клиента для использования в режиме эксперта/отладки, отредактируйте собственный объект экземпляра непосредственно в ioBroker. Адаптер по-прежнему будет использовать свои стандартные настройки, если эти собственные значения пусты.

📊 Объекты и состояния

Все данные доступны только для чтения .

info

СостояниеТипОписание
info.connectionbooleanВозвращает значение true, если аутентификация пройдена и выбранное устройство возвращает пригодные для использования данные.

device

СостояниеТипОписание
device.serialstringсерийный номер устройства
device.modelstringмодель устройства
device.namestringНазвание устройства
device.onlinebooleanПроверяет, подключено ли устройство к облаку BLUETTI.
device.workModestringТекущий режим работы, сообщаемый устройством (необработанное перечисление, например)workmode_3 )

battery

СостояниеТипОписание
battery.socnumber %Уровень заряда батареи
battery.dischargeRemainingnumber minПримерное время до опустошения при текущей нагрузке (в минутах)
battery.chargeRemainingnumber minПримерное время до полной зарядки (в минутах); 0, когда зарядка не производится.

power

СостояниеТипОписание
power.pvInputnumber WВходная мощность фотоэлектрической (солнечной) энергии
power.gridInputnumber WВходная мощность сети
power.acOutputnumber WВыходная мощность переменного тока (нагрузка)
power.dcOutputnumber WВыходная мощность постоянного тока (нагрузка)
power.acOutputActivebooleanВключен ли в данный момент выход переменного тока?
power.dcOutputActivebooleanВключен ли в данный момент выход постоянного тока?
power.acEcobooleanВключен ли режим энергосбережения AC ECO?
power.dcEcobooleanВключен ли режим энергосбережения DC ECO?

health

СостояниеТипОписание
health.outageSuspectedbooleanКонсервативный триггер подозрения на отключение электроэнергии
health.consecutiveFailuresnumberПоследовательные сбои при проведении опросов
health.authFailedbooleanБыла ли последняя ошибка связана с проблемой аутентификации?

status

СостояниеТипОписание
status.lastUpdatestringОтметка времени последнего успешного опроса
status.lastErrorstringПоследнее очищенное сообщение об ошибке

⚙️ Конфигурация

ВариантПо умолчаниюОписание
Интервал опроса300 sКак часто облако BLUETTI опрашивается для получения новых телеметрических данных?
Идентификатор/секрет клиента OAuthвстроенныйВ административной панели это не отображается; экспертные настройки остаются доступными через прямое редактирование объектов.

⚠️ Предупреждение о зависимости от облачных сервисов и наличии источников бесперебойного питания

Этот адаптер считывает данные из облака BLUETTI , поэтому его работа зависит от вашего интернет-соединения и доступности серверов BLUETTI.

Адаптер, работающий только с облаком, сам по себе не может доказать отключение электроэнергии . Он может лишь предоставить доказательства — устаревшие данные телеметрии, доступность облака/устройства и повторяющиеся сбои опроса. Для надежной автоматизации действий при отключении электроэнергии необходимо объединить эти состояния как минимум с одним локальным сигналом, таким как проверка маршрутизатора/ping, интеллектуальный счетчик, счетчик Shelly/энергопотребления или выделенный сигнал ИБП.

🛠️ Развитие

Адаптер представляет собой TypeScript-адаптер ioBroker на основе классов с JSON-конфигурацией администратора, созданный с помощью генератора кода.@iobroker/create-adapter .

СценарийЦель
npm run buildКомпиляция исходных файлов TypeScript
npm run checkПроверка типов без вывода кода
npm run lintЗапустите ESLint
npm testЗапустите модульные и пакетные тесты.
npm run test:integrationЗапустите тест интеграции запуска ioBroker.
npm run test:repoЗапустите средство проверки репозитория ioBroker локально.

Заметки по архитектуре и исследованиям:

До тех пор, пока адаптер не будет опубликован и помечен тегами,npm run test:repo Сообщается об ожидаемых результатах предварительного тестирования (пакет отсутствует в npm, релиз не помечен тегом, адаптер еще не добавлен в репозиторий ioBroker).

Changelog

WORK IN PROGRESS

  • (ioBroker-Bot) Adapter requires admin >= 7.8.23 now.

1.0.0

  • First stable release: full repochecker compliance, OIDC trusted publishing with provenance signing.
  • All pre-release repochecker findings resolved (#103–#107, #123, #124).
  • Object structure dump validated and attached to ioBroker repository submission (#108).
  • Adapter submitted to ioBroker latest repository (#81).

0.0.2

  • Trusted publishing setup: OIDC-based npm publish with provenance signing, registry-url and npm 11 in CI.
  • Populate device.model and device.name from getUserProducts cache; resolve workMode labels via supportModeValues.
  • Device selector always visible; empty list signals unauthenticated state.
  • Degrade gracefully when persisted OAuth token is corrupt instead of crashing the adapter.
  • Refresh device list after OAuth completes without reopening the config dialog.
  • Redact device serial in info-level polling log line.
  • Repo cleanup: remove non-adapter files, redundant publishConfig, and GitHub/npm install instructions from README.
  • Remove prepare lifecycle script and set common.nogit to suppress repochecker warnings.
  • Add local repochecker audit results and prepare ioBroker.repositories submission entry.

0.0.1

  • Initial release: BLUETTI cloud OAuth login, device discovery/selection, and read-only telemetry polling for the Elite 30 V2.
  • Added verified Elite 30 V2 telemetry from a real deviceStates payload: battery discharge/charge time remaining, AC/DC output and ECO status, and working mode.

Older entries are kept in CHANGELOG_OLD.md.

License

MIT License

Copyright (c) 2026 Percy2Live