BLUETTI

BLUETTI Power-Station-Telemetrie

Aktueller Release
1.0.0
Entwickler
Percy2Live
Lizenz
MIT
BLUETTI

ioBroker.bluetti

ioBroker-Adapter mit Lesezugriff für BLUETTI- Kraftwerke – Telemetrie von Batterie, Solarstrom, Netz und Last aus der BLUETTI-Cloud.


Integrieren Sie die Live-Daten Ihrer BLUETTI-Powerstation in ioBroker: Ladezustand, PV-/Netzeingang und AC/DC-Ausgangsleistung sowie Verbindungs- und Statusanzeigen für USV-ähnliche Automatisierungen. Die Authentifizierung erfolgt über denselben BLUETTI-Cloud-Login wie bei der offiziellen Home Assistant-Integration – keine App-Passwörter, kein Scraping.

Status: Funktioniert einwandfrei und wurde umfassend mit einem Live-BLUETTI-Konto (Elite 30 V2) auf js-controller 7.0.7 verifiziert. Noch nicht in den ioBroker-Repositories veröffentlicht. Die Kerntelemetrie ist stabil; die detailliertere modellspezifische Telemetrie wird derzeit noch mit realen Daten validiert.

✨ Funktionen

  • 🔋 Batterie- und Leistungstelemetrie – Ladezustand, PV-Eingang, Netzeingang, AC/DC-Ausgangsleistung
  • 🔐 Sichere Cloud-Anmeldung – BLUETTI OAuth mit integrierten Anmeldeinformationen; das Token wird verschlüsselt gespeichert und automatisch aktualisiert
  • 🔎 Geräteerkennung – Wählen Sie Ihr Gerät nach dem Anmelden aus einer Liste aus.
  • 🩺 Gesundheits- und Verbindungsstatus – Erreichbarkeit, aufeinanderfolgende Ausfälle und ein konservatives Ausfallverdachtssignal für USV-Automatisierungen
  • 👀 Nur lesend & sicher – der Adapter schreibt niemals auf Ihr Gerät (keine Modus-/AC/DC-/Firmware-Änderungen).

🔌 Unterstützte Geräte

ModellProduktcodesStatus
BLUETTI Elite 30 V2EL30V2 ,PR30V2✅ Verifiziert

Andere BLUETTI-Modelle, die dieselbe Cloud-API bereitstellen, funktionieren wahrscheinlich, sind aber noch nicht validiert. Bereinigtere, reale Nutzdaten sind willkommen, um die Unterstützung zu erweitern.

📦 Anforderungen

  • ioBroker mit js-controller ≥ 6.0.11 und admin ≥ 7.6.20
  • Ein BLUETTI-Konto, dessen Gerät in der BLUETTI-App verknüpft ist.
  • Das Gerät ist mit der BLUETTI-Cloud verbunden (online in der App).

🚀 Installation & Einrichtung

Der Adapter ist noch nicht im ioBroker-Repository verfügbar. Nach der Genehmigung können Sie ihn direkt über die ioBroker-Admin-Oberfläche installieren ( Adapter → nach „bluetti“ suchen).

  1. Installieren Sie den Adapter und erstellen Sie einebluetti.0 Beispiel.
  2. Öffnen Sie die Instanzkonfiguration in ioBroker Admin.
  3. Klicken Sie auf „Mit BLUETTI authentifizieren“ und schließen Sie die Anmeldung im sich öffnenden Browserfenster ab. Der Adapter verwendet seine integrierten BLUETTI-Client-Anmeldeinformationen, daher werden in der Administratoroberfläche keine Felder für Client-ID/Client-Geheimnis angezeigt.
  4. Wählen Sie Ihr Gerät im Geräteauswahlmenü aus.
  5. Speichern. Die Umfrage startet automatisch;info.connection Wendungentrue sobald die erste Abstimmung erfolgreich war.

Sie authentifizieren sich nur einmal – das Token wird verschlüsselt gespeichert.auth.tokenJson Status und Aktualisierung im Hintergrund.

Sicherheitshinweis: Das OAuth-Token wird in einem verschlüsselten ioBroker-Status gespeichert (auth.tokenJson ) mitread: false, write: false Die Verschlüsselung schützt vor versehentlichem Zugriff und dem Zugriff auf Backups/Dateisysteme. Jeder ioBroker-Administrator kann den Status weiterhin per Skript oder über die REST-API lesen und entschlüsseln, da der Verschlüsselungsschlüssel instanzweit gilt. Dies ist ein akzeptabler Kompromiss: ioBroker-Administratoren haben bereits vollen Systemzugriff, daher schwächt der verschlüsselte Status die allgemeine Sicherheitslage nicht.

Wenn Sie die integrierten Client-Anmeldeinformationen für die Verwendung im Experten-/Debug-Modus überschreiben müssen, bearbeiten Sie das native Objekt der Instanz direkt in ioBroker. Der Adapter greift weiterhin auf seine Standardeinstellungen zurück, wenn diese nativen Werte leer sind.

📊 Objekte & Zustände

Alle Zustände sind schreibgeschützt .

info

ZustandTypBeschreibung
info.connectionbooleanTrifft zu, wenn die Authentifizierung erfolgreich war und das ausgewählte Gerät verwendbare Daten liefert.

device

ZustandTypBeschreibung
device.serialstringGeräteseriennummer
device.modelstringGerätemodell
device.namestringGerätename
device.onlinebooleanOb das Gerät in der BLUETTI-Cloud online ist
device.workModestringAktueller Betriebsmodus, wie vom Gerät gemeldet (Roh-Enumeration, z. B.workmode_3 )

battery

ZustandTypBeschreibung
battery.socnumber %Batterieladezustand
battery.dischargeRemainingnumber minGeschätzte Restlaufzeit bei aktueller Beladung
battery.chargeRemainingnumber minGeschätzte Ladezeit in Minuten; 0 Minuten, wenn nicht geladen wird

power

ZustandTypBeschreibung
power.pvInputnumber WPhotovoltaische (solare) Eingangsleistung
power.gridInputnumber WNetzeingangsleistung
power.acOutputnumber WWechselstromausgangsleistung (Last)
power.dcOutputnumber WGleichstromausgangsleistung (Last)
power.acOutputActivebooleanOb der Wechselstromausgang aktuell eingeschaltet ist
power.dcOutputActivebooleanOb der Gleichstromausgang aktuell eingeschaltet ist
power.acEcobooleanOb der AC ECO-Energiesparmodus aktiviert ist
power.dcEcobooleanOb der DC ECO-Energiesparmodus aktiviert ist

health

ZustandTypBeschreibung
health.outageSuspectedbooleanAuslöser für konservativen Stromausfallverdacht
health.consecutiveFailuresnumberAufeinanderfolgende Fehlschläge bei Umfragen
health.authFailedbooleanOb der letzte Fehler ein Authentifizierungsproblem war

status

ZustandTypBeschreibung
status.lastUpdatestringZeitstempel der letzten erfolgreichen Umfrage
status.lastErrorstringLetzte bereinigte Fehlermeldung

⚙️ Konfiguration

OptionStandardBeschreibung
Umfrageintervall300 sWie oft die BLUETTI-Cloud nach aktuellen Telemetriedaten abgefragt wird
OAuth-Client-ID / -GeheimniseingebautIm Adminbereich nicht sichtbar; Expertenüberschreibungen bleiben über die direkte Bearbeitung nativer Objekte verfügbar.

⚠️ Cloud-Abhängigkeit & USV-Hinweis

Dieser Adapter liest Daten aus der BLUETTI-Cloud , daher ist er davon abhängig, dass Ihre Internetverbindung besteht und die Server von BLUETTI erreichbar sind.

Ein reiner Cloud-Adapter kann einen Stromausfall nicht allein nachweisen . Er kann lediglich Indizien liefern – veraltete Telemetriedaten, Erreichbarkeit von Cloud und Gerät sowie wiederholte Abfragefehler. Für zuverlässige Automatisierungen bei Stromausfällen sollten diese Zustände mit mindestens einem lokalen Signal kombiniert werden, beispielsweise einem Router-/Ping-Test, einem Smart Meter, einem Shelly-/Energiezähler oder einem dedizierten USV-Signal.

🛠️ Entwicklung

Der Adapter ist ein TypeScript-basierter, klassenbasierter ioBroker-Adapter mit einer JSON-Admin-Konfiguration, der mit folgendem Code erstellt wurde:@iobroker/create-adapter Die

SkriptZweck
npm run buildTypeScript-Quellen kompilieren
npm run checkTypüberprüfung ohne Ausgabe
npm run lintESLint ausführen
npm testFühren Sie Unit- und Pakettests durch
npm run test:integrationFühren Sie den ioBroker-Startintegrationstest aus
npm run test:repoFühren Sie den ioBroker-Repository-Checker lokal aus.

Architektur- und Forschungsnotizen:

Bis der Adapter veröffentlicht und getaggt ist,npm run test:repo Berichtet über erwartete Ergebnisse vor der Veröffentlichung (Paket nicht auf npm, Release nicht getaggt, Adapter noch nicht im ioBroker-Repository).

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