Optionale Anker-MQTT-Verbindung
Version 0.7.7 ergänzt MQTT für Solarbank-1/2/3/4-Temperaturen und Ausgangslimits eigenständiger Solarbank-2-Anlagen. Die bestehende Cloud-HTTP-API bleibt erhalten. Vor einer Veröffentlichung sind Tests mit echten Geräten erforderlich.
MQTT aktivieren
- App-Version 0.7.7 oder neuer auf Homey installieren und die Geräteeinstellungen der Solarbank öffnen.
- Anker MQTT aktivieren einschalten und speichern. Standardmäßig ist die Funktion ausgeschaltet, auch bei bestehenden Geräten.
- Warten, bis Anker MQTT verbunden aktiv ist und eine Temperaturnachricht eintrifft.
- Bei weiteren unterstützten Solarbanks wiederholen. Pro Anker-Konto und Region wird eine gemeinsame Verbindung verwendet.
Ein eigener Broker, MQTT-Zugangsdaten oder ein Zertifikats-Upload sind nicht nötig. Die App bezieht die Verbindungsdaten über das angemeldete Anker-Konto und verbindet sich per TLS über TCP-Port 8883 mit Ankers Broker. Zertifikate und private Schlüssel bleiben im Arbeitsspeicher und werden weder protokolliert noch in Dateien gespeichert. Die TLS-Serverprüfung bleibt aktiv.
Unterstützte Funktionen
| Modell | Temperatur über MQTT | AC-Ausgangslimit |
|---|---|---|
| Solarbank 2 Pro / Plus (A17C1/A17C3) | Ja | MQTT, nur eigenständige Anlagen. |
| Solarbank 2 AC (A17C2) | Ja | MQTT, nur eigenständige Anlagen. |
| Solarbank 3 (A17C5) | Ja | Vorhandener Cloud-HTTP-Befehl; MQTT dafür nicht erforderlich. |
| Solarbank 1 (A17C0) | Ja, über regelmäßige Statusabfragen | Bisherige Cloud-Zeitplansteuerung; keine MQTT-AC-Limit-Karte. |
| Solarbank 4 E5000 Pro (AE103) | Ja | Vorhandener kompatibler Cloud-HTTP-Befehl. |
| Solarbank Max / Max AC | In dieser MQTT-Integration nicht implementiert | Vorhandener kompatibler Cloud-HTTP-Befehl. |
| X1, PowerDock und andere Familien | In dieser MQTT-Integration nicht implementiert | Bisherige modellspezifische Unterstützung unverändert. |
Die Integration liest die Temperatur des Hauptgeräts. Separate Temperatur-Entitäten für Zusatzakkus oder MQTT-Steuerung für Zubehör werden nicht ergänzt.
Weitere Modellfamilien
„Nicht implementiert“ beschreibt den Umfang dieser Homey-MQTT-Anbindung, keine grundsätzliche Einschränkung des Geräts. Die MQTT-Temperaturfelder für Solarbank 1 (A17C0) und Solarbank 4 (AE103) aus dem verlinkten Referenzstand sind jetzt portiert. X1 (A5101/A5102/A5103) verwendet separate JSON-Nachrichten, PowerDocks (AE100/AX170) eigene Nachrichten. Diese Familien erfordern weiterhin eine eigene Portierung und Validierung. Für Solarbank Max (AE111) und Max AC (A17E2) enthält dieser Referenzstand keine eigene MQTT-Modellzuordnung; die Solarbank-4-Zuordnung wird daher nicht auf sie übertragen.
Die vorhandene Cloud-Unterstützung bleibt davon unabhängig. PowerDocks sind weiterhin keine separat koppelbaren Homey-Geräte; MQTT-Steuerung für Parallel-/Dock-Anlagen ist nicht implementiert.
Temperatur und Flows
Im geöffneten Solarbank-Gerät unter den Messwerten steht Batterietemperatur in °C zur Verfügung. Die Anzeige wird auch bei bereits gekoppelten Geräten beim nächsten erfolgreichen Abruf automatisch ergänzt; erneutes Koppeln ist nicht nötig. Ohne Messwert bleibt die Anzeige unbekannt. Für Solarbank 1/2/3/4 bei fehlender Cloud-Temperatur MQTT wie oben beschrieben aktivieren.
Ein frischer MQTT-Temperaturwert hat Vorrang vor einem eventuell vorhandenen Cloud-HTTP-Wert. Die Werte bleiben in Celsius, auch wenn die Anker-App Fahrenheit anzeigt. Null und negative Temperaturen sind gültige Messwerte.
Der vorhandene Auslöser Temperatur hat sich geändert liefert den numerischen Tag temperature. Er löst beim ersten gültigen Messwert und bei jeder weiteren Wertänderung aus, auch unter 1 °C. Unveränderte Werte erzeugen keine weiteren Ereignisse.
Bei einem Verbindungsabbruch oder nach sechs Minuten ohne frische Temperatur greift die App auf einen Cloud-Temperaturwert zurück, sofern vorhanden. Andernfalls wird die Anzeige geleert. Fehlende Werte erzeugen kein erfundenes Temperaturereignis. Temperaturbedingungen melden dann einen nicht verfügbaren Messwert.
Solarbank 1 erhält beim Verbindungsaufbau und alle 60 Sekunden eine Statusabfrage. Das entspricht der Empfehlung der Referenz, da die Echtzeit-Abfrage nur in bestimmten Gerätezuständen funktioniert. Solarbank 2/3/4 verwenden die Echtzeit-Abfrage.
MQTT-Nachrichten werden unabhängig vom Cloud-Abfrageintervall verarbeitet. Retained-Nachrichten, alte, fehlerhafte und falsch adressierte Pakete werden verworfen. Werte einer Solarbank werden nicht auf andere Geräte kopiert.
Ausgangslimit der Solarbank 2
MQTT aktivieren und die vorhandene Flow-Aktion AC-Ausgangslimit setzen verwenden. Für Solarbank 2 wird die Karte nach Modellermittlung und MQTT-Aktivierung angeboten. Die separate Aktion Ausgangsleistung setzen behält ihre Aufgabe als Zeitplan-Sollwert.
Akzeptiert werden nur von Anker angebotene Wattwerte, die der Referenzbefehl unterstützt. Pro/Plus: 350/600/800/1000 W; AC zusätzlich 1200 W, sofern Anker diesen Wert anbietet. Nicht bestätigte Zuordnungen von angezeigtem zu realem Limit werden abgewiesen.
Die erste Integration unterstützt ausschließlich als Single gemeldete Anlagen ohne PowerDock. Parallel- und Dock-Anlagen verwenden andere Befehle; diese werden nicht gesendet. Temperaturdaten lassen sich trotzdem für mehrere unterstützte Solarbanks abonnieren.
Die App sendet den Gerätebefehl und wartet bis zu 15 Sekunden auf neue Gerätedaten mit dem gewünschten Limit. Eine Publish-Bestätigung des Brokers oder ein Befehls-ACK reicht nicht als Bestätigung. Leistungsbefehle werden nicht automatisch wiederholt. Nach der Gerätebestätigung wird die Cloud-Anzeige über den Geräteattribut-Endpunkt der Referenz synchronisiert.
Eine Fehlermeldung kann daher bedeuten:
- Nicht bestätigt: Es trafen keine passenden Gerätedaten ein. Der Befehl könnte das Gerät trotzdem erreicht haben; vor einer Wiederholung in Anker prüfen.
- Gerät bestätigt, Cloud-Anzeige nicht synchronisiert: Das Gerät meldete das neue Limit, aber die HTTP-Aktualisierung schlug fehl. In der Anker-App prüfen; daraus folgt nicht, dass der physische Befehl scheiterte.
Verbindungsprobleme
- Konto/Region, normalen Cloud-Zugriff und ausgehenden TCP-Port 8883 im Homey-Netz prüfen.
- Prüfen, ob das Modell unterstützt und MQTT bei diesem Gerät eingeschaltet ist.
- Die Verbindung wird mit frischen Kontozertifikaten und zunehmenden Wartezeiten erneut aufgebaut. HTTP-Abfragen laufen bei MQTT-Ausfällen weiter.
- Homeys Uhrzeit prüfen, wenn Nachrichten als alt oder aus der Zukunft verworfen werden.
- Keine Zugangsdaten, Zertifikate oder privaten Schlüssel in Fehlerberichte aufnehmen.
Verbunden, aber keine Temperatur
Anker MQTT verbunden bestätigt die Broker-Verbindung, nicht den Empfang einer Temperatur. Ab Version 0.7.8 die Option Debug in den Geräteeinstellungen aktivieren, mindestens zwei Minuten warten und die Zeilen [DEBUG] MQTT: aus dem App-Protokoll prüfen:
enabled/registered/connected: Aktivierung, Geräteanmeldung und Broker-Verbindung.requests/lastRequestAgeSeconds: gesendete Anfragen und deren Alter; eine gesendete Anfrage bestätigt keine Geräteantwort.received/decoded/lastMessageType: Nachrichten auf dem Gerätethema, erfolgreich ausgewertete Binärpakete und letzter Nachrichtentyp.temperatureReadings/temperatureAvailable/lastTemperatureAgeSeconds: Temperaturempfang, aktuell nutzbarer Wert und Alter.rejected: Verwerfungsgründe, etwastale_timestamp,future_timestamp,identity_mismatch,unsupported_encodingodermalformed_frame.
received: 0 trotz gesendeter Anfragen bedeutet, dass auf dem abonnierten Gerätethema noch keine Nachricht eingegangen ist. Nachrichten ohne Temperatur oder verworfene Nachrichten lassen sich anhand der übrigen Felder unterscheiden. Die Zusammenfassung enthält keine Zugangsdaten, Seriennummern oder vollständigen MQTT-Inhalte. Für Fehlerberichte nur diese Diagnosezeilen teilen; die übrigen Debug-Zeilen können Anlagenkennungen enthalten.
Referenz und Validierung
Grundlage ist das MQTT-Protokoll von ha-anker-solix. Solarbank-1-Statusabfrage (0x0040), Echtzeit-Abfrage (0x0057) und Solarbank-2-Ausgangslimit (0x0080) einschließlich modellspezifischer Telemetrie-Decodierung sind nach JavaScript portiert. Es handelt sich um eine gezielte Protokollübernahme; das Python-SDK und sein vollständiger Befehlsumfang werden nicht eingebunden. Regressionstests vergleichen die erzeugten Befehle bytegenau. Regressionstestdaten wurden mit dessen Serializer und Befehlsgenerator und synthetischen Gerätekennungen erstellt. Tests decken Decoder, Bestätigung, Gerätezuordnung, Ablauf von Messwerten, Aktivierung und Verbindungslebenszyklus ab. Der echte MQTT.js-Client wurde außerdem gegen einen lokalen Broker mit gegenseitiger TLS-Prüfung getestet; eine echte Anker-Anlage wurde dabei nicht verwendet.