Hoymiles MS -Integration

Dieser Adapter integriert Hoymiles MS-A2 in IOBROKER.

Aktueller Release
0.2.2
Entwickler
mcm1957
Lizenz
MIT

Übersicht

Der ioBroker.hoymiles-ms Adapter integriert Hoymiles MicroStorage Systeme (derzeit unterstützt das Hoymiles MS-A2 Modell) in ioBroker. Dieser Adapter ermöglicht die Überwachung und Steuerung Ihres Hoymiles MS-A2 Energiespeichersystems über die ioBroker Plattform.

Das Hoymiles MS-A2 ist eine MicroStorage Einheit, die Solar-Wechselrichter und Batteriespeicher-Funktionen kombiniert. Weitere Informationen zum Gerät finden Sie hier.

Hinweis: Dieser Adapter ist nicht mit Hoymiles verbunden und ist ein unabhängiges Community-Projekt.

Funktionen

  • Echtzeit-Überwachung: Batteriestatus, Stromverbrauch, Netzinteraktion
  • Energieverfolgung: Überwachung von Energieproduktion, -verbrauch und -speicherung
  • Netzüberwachung: Verfolgung von netzgekoppeltem und netzunabhängigem Betrieb
  • Systemstatistiken: Umfassender Überblick über die Systemleistung
  • Leistungssteuerung: Einstellung und Kontrolle der Ausgangsleistung
  • Mehrere Geräte: Handhabung mehrerer MS-A2 Einheiten gleichzeitig
  • MQTT-Kommunikation: Zuverlässige Kommunikation über MQTT-Protokoll

Voraussetzungen

Vor der Einrichtung des Adapters stellen Sie sicher, dass Sie haben:

  1. ioBroker System läuft (Node.js >= 20)
  2. Hoymiles MS-A2 MicroStorage Einheit
  3. S-Miles Home App auf Ihrem mobilen Gerät installiert
  4. Netzwerkkonnektivität zwischen ioBroker und MS-A2 Einheit
  5. Freien TCP-Port für MQTT-Kommunikation (Standard: 1881)

Adapter-Einrichtung und Konfiguration

Schritt 1: Adapter installieren

Installieren Sie den Adapter über die ioBroker Admin-Oberfläche:

  1. Öffnen Sie die ioBroker Admin-Oberfläche in Ihrem Webbrowser
  2. Navigieren Sie zum "Adapter" Tab
  3. Suchen Sie nach "hoymiles-ms" im Adapter-Repository
  4. Klicken Sie auf die "Installieren" Schaltfläche neben dem Adapter

Wichtig: Installieren Sie niemals ioBroker-Adapter direkt mit npm. Verwenden Sie immer die ioBroker Admin-Oberfläche für ordnungsgemäße Installation und Abhängigkeitsverwaltung.

Schritt 2: Adapter konfigurieren

  1. Öffnen Sie die ioBroker Admin-Oberfläche
  2. Navigieren Sie zu "Adapter" und finden Sie "hoymiles-ms"
  3. Klicken Sie auf das Konfigurationssymbol (Zahnrad)
  4. Konfigurieren Sie die folgenden Einstellungen:

MQTT-Server-Konfiguration

ParameterBeschreibungStandardwertHinweise
Client-ModusMQTT-Client-Modus aktivierenfalseDerzeit nicht implementiert
MQTT-NetzwerkNetzwerkschnittstelle zum Binden0.0.0.0Auf allen Schnittstellen lauschen
MQTT-PortTCP-Port für MQTT-Server1881Konflikte mit anderen MQTT-Diensten vermeiden

Wichtige Hinweise:

  • Der Adapter arbeitet derzeit nur im MQTT-Server-Modus
  • Authentifizierung wird noch nicht unterstützt - stellen Sie sicher, dass Ihr Netzwerk sicher ist
  • Port 1881 wird gewählt, um Konflikte mit ioBroker.mqtt (1883) und ioBroker.shelly (1882) zu vermeiden

Schritt 3: Speichern und Adapter starten

  1. Klicken Sie "Speichern & Schließen" im Konfigurationsdialog
  2. Aktivieren Sie die Adapter-Instanz
  3. Der Adapter startet und beginnt auf MQTT-Verbindungen zu lauschen

Hoymiles MS-A2 Geräte-Einrichtung

Um Ihre MS-A2 Einheit mit dem ioBroker Adapter zu verbinden, müssen Sie sie über die S-Miles Home App konfigurieren.

Schritt 1: S-Miles Home App öffnen

  1. Starten Sie die S-Miles Home App auf Ihrem mobilen Gerät
  2. Stellen Sie sicher, dass Sie mit demselben Netzwerk wie Ihre MS-A2 Einheit verbunden sind

Schritt 2: MQTT-Konfiguration aufrufen

  1. Navigieren Sie zur Konfigurations-Seite (Zahnrad-Symbol oben rechts)
  2. Scrollen Sie nach unten, um den Abschnitt "MQTT-Service" zu finden
  3. Aktivieren Sie den MQTT-Service

Schritt 3: MQTT-Einstellungen konfigurieren

EinstellungWertBeschreibung
Server-Adresse<ioBroker-IP>IP-Adresse Ihres ioBroker Systems
Port1881Im Adapter konfigurierter Port (Standard: 1881)
Client-PräfixMSAOptionaler Identifikator-Präfix (Standard: MSA)
AuthentifizierungDeaktiviertMuss deaktiviert sein (noch nicht unterstützt)

Beispiel-Konfiguration:

  • Server-Adresse: 192.168.1.100 (ersetzen Sie durch Ihre ioBroker IP)
  • Port: 1881
  • Client-Präfix: MSA
  • Benutzername: (leer lassen)
  • Passwort: (leer lassen)

Schritt 4: Einstellungen anwenden

  1. Speichern Sie die MQTT-Konfiguration in der S-Miles Home App
  2. Die MS-A2 Einheit startet ihren MQTT-Service neu
  3. Überprüfen Sie die ioBroker Logs für Verbindungsbestätigung

Betrieb und Datenfluss

Datenaktualisierungsintervalle

Die MS-A2 Einheit sendet Daten in verschiedenen Intervallen (diese werden von der Hoymiles API definiert und können nicht konfiguriert werden):

  • Konfigurationsdaten: Einmal beim Verbindungsaufbau gesendet
  • Echtzeit-Daten: Aktualisierung alle 1 Sekunde
  • Systemstatistiken: Aktualisierung alle 5 Minuten

Geräte-Verbindungsstatus

  • Der Adapter überwacht die Gerätekonnektivität automatisch
  • Geräte gelten als offline, wenn 30 Sekunden lang keine Daten empfangen werden
  • Der Verbindungsstatus wird im info.online Zustand angezeigt

Vom Adapter erstellte Zustände

Der Adapter erstellt dynamisch Zustände basierend auf den von Ihrer MS-A2 Einheit empfangenen Daten. Zustände sind hierarchisch organisiert:

Geräteinformations-Zustände

ZustandTypEinheitRolleBeschreibung
device.manufacturerstring-textGerätehersteller
device.modelstring-info.modelGerätemodell
device.namestring-info.nameGerätename
device.sw_versionstring-info.firmwareSoftware-Version
device.identifiersarray-listGeräte-Identifikatoren

Batterie-Zustände

ZustandTypEinheitRolleBeschreibung
device.bat_inumberAvalue.currentBatteriestrom
device.bat_pnumberWvalue.powerBatterieleistung
device.bat_tempnumber°Cvalue.temperatureBatterietemperatur
device.bat_vnumberVvalue.voltageBatteriespannung
device.bat_stsstring-textBatteriestatus
device.socnumber%valueLadezustand

Netzverbindungs-Zustände (Netz Ein)

ZustandTypEinheitRolleBeschreibung
device.grid_on.vnumberVvalue.voltageNetzspannung (netzbetrieben)
device.grid_on.inumberAvalue.currentNetzstrom (netzbetrieben)
device.grid_on.fnumberHzvalue.frequencyNetzfrequenz (netzbetrieben)
device.grid_on.pnumberWvalue.power.activeWirkleistung (netzbetrieben)
device.grid_on.qnumberVarvalue.power.reactiveBlindleistung (netzbetrieben)
device.grid_on.einnumberWhvalue.energy.consumedVerbrauchte Energie (netzbetrieben)
device.grid_on.eoutnumberWhvalue.energy.producedErzeugte Energie (netzbetrieben)
device.grid_on.etinnumberWhvalue.energy.consumedGesamt verbrauchte Energie (netzbetrieben)
device.grid_on.etoutnumberWhvalue.energy.producedGesamt erzeugte Energie (netzbetrieben)

Netzverbindungs-Zustände (Netz Aus)

ZustandTypEinheitRolleBeschreibung
device.grid_off.vnumberVvalue.voltageNetzspannung (netzunabhängig)
device.grid_off.inumberAvalue.currentNetzstrom (netzunabhängig)
device.grid_off.fnumberHzvalue.frequencyNetzfrequenz (netzunabhängig)
device.grid_off.pnumberWvalue.power.activeWirkleistung (netzunabhängig)
device.grid_off.qnumberVarvalue.power.reactiveBlindleistung (netzunabhängig)
device.grid_off.einnumberWhvalue.energy.consumedVerbrauchte Energie (netzunabhängig)
device.grid_off.eoutnumberWhvalue.energy.producedErzeugte Energie (netzunabhängig)
device.grid_off.etinnumberWhvalue.energy.consumedGesamt verbrauchte Energie (netzunabhängig)
device.grid_off.etoutnumberWhvalue.energy.producedGesamt erzeugte Energie (netzunabhängig)

Wechselrichter-Zustände

ZustandTypEinheitRolleBeschreibung
device.inv.vnumberVvalue.voltageWechselrichterspannung
device.inv.inumberAvalue.currentWechselrichterstrom
device.inv.pnumberWvalue.power.activeWechselrichter Wirkleistung
device.inv.qnumberVarvalue.power.reactiveWechselrichter Blindleistung
device.inv.einnumberWhvalue.energy.consumedWechselrichter verbrauchte Energie
device.inv.eoutnumberWhvalue.energy.producedWechselrichter erzeugte Energie
device.inv.etinnumberWhvalue.energy.consumedWechselrichter gesamt verbrauchte Energie
device.inv.etoutnumberWhvalue.energy.producedWechselrichter gesamt erzeugte Energie

Echtzeit-Daten-Zustände

ZustandTypEinheitRolleBeschreibung
realtime.bat_pnumberWvalue.powerEchtzeit Batterieleistung
realtime.bat_stsstring-textEchtzeit Batteriestatus
realtime.grid_on_pnumberWvalue.powerEchtzeit Netzleistung (netzbetrieben)
realtime.grid_off_pnumberWvalue.powerEchtzeit Netzleistung (netzunabhängig)
realtime.socnumber%valueEchtzeit Ladezustand
realtime.sys_bat_pnumberWvalue.powerEchtzeit System-Batterieleistung
realtime.sys_grid_pnumberWvalue.powerEchtzeit System-Netzleistung
realtime.sys_load_pnumberWvalue.powerEchtzeit System-Lastleistung
realtime.sys_plug_pnumberWvalue.powerEchtzeit System-Steckerleistung
realtime.sys_pv_pnumberWvalue.powerEchtzeit System-PV-Leistung
realtime.sys_socnumber%valueEchtzeit System-Ladezustand
realtime.sys_sp_pnumberWvalue.powerEchtzeit System-Sollwertleistung

Systemstatistik-Zustände

ZustandTypEinheitRolleBeschreibung
system.bat_pnumberWvalue.powerSystem-Batterieleistung
system.chg_enumberWhvalue.energy.consumedSystem-Ladeenergie
system.dchg_enumberWhvalue.energy.producedSystem-Entladeenergie
system.grid_pnumberWvalue.powerSystem-Netzleistung
system.ems_modestring-stateEnergiemanagementsystem-Modus
system.plug_in_enumberWhvalue.energy.consumedSystem-Stecker-Eingangsenergie
system.plug_out_enumberWhvalue.energy.producedSystem-Stecker-Ausgangsenergie
system.pv_enumberWhvalue.energy.producedSystem-PV-Energie
system.pv_pnumberWvalue.powerSystem-PV-Leistung
system.socnumber%valueSystem-Ladezustand
system.sp_pnumberWvalue.powerSystem-Sollwertleistung

Leistungssteuerungs-Zustände

ZustandTypEinheitRolleZugriffBeschreibung
power_ctrl.minnumberWvalue.powerLesenMinimale Leistungseinstellung
power_ctrl.maxnumberWvalue.powerLesenMaximale Leistungseinstellung
power_ctrl.setnumberWlevel.powerLesen/SchreibenLeistungssollwert (steuerbar)
power_ctrl.stepnumberWvalue.powerLesenLeistungsanpassungs-Schrittgröße

Informations-Zustände

ZustandTypEinheitRolleBeschreibung
info.onlineboolean-indicator.reachableGeräte-Online-Status
info.ipstring-info.ipGeräte-IP-Adresse
info.timestampnumber-dateLetzter Daten-Zeitstempel
device.rssinumberdbvalueWi-Fi-Signalstärke

EMS-Steuerungs-Zustände

ZustandTypRolleZugriffWerteBeschreibung
ems_mode.commandstringstateLesen/Schreibengeneral, mqtt_ctrlEMS-Modus-Steuerung

Leistungssteuerungs-Funktionalität

Der Adapter bietet Leistungssteuerungsfähigkeiten über spezifische schreibbare Zustände:

Leistungsausgang einstellen

Um die Leistungsabgabe Ihrer MS-A2 Einheit zu steuern:

  1. EMS-Modus setzen: Setzen Sie zuerst ems_mode.command auf mqtt_ctrl
  2. Leistungspegel setzen: Schreiben Sie den gewünschten Leistungswert in power_ctrl.set
  3. Gültiger Bereich: Leistungswert muss zwischen power_ctrl.min und power_ctrl.max liegen
  4. Schrittgröße: Verwenden Sie power_ctrl.step für angemessene Schritte

Beispiel Leistungssteuerung

// MQTT-Steuerungsmodus aktivieren
setState('hoymiles-ms.0.MSA_12345.ems_mode.command', 'mqtt_ctrl');

// Leistungsabgabe auf 500W setzen (Beispiel)
setState('hoymiles-ms.0.MSA_12345.power_ctrl.set', 500);

Hinweise zur Leistungssteuerung

  • Leistungssteuerung ist nur verfügbar, wenn sich das Gerät im mqtt_ctrl Modus befindet
  • Leistungseinstellungen werden sofort von der MS-A2 Einheit angewendet
  • Überwachen Sie die Echtzeit-Zustände, um Leistungsänderungen zu verifizieren
  • Kehren Sie zum general Modus zurück, um automatischen Betrieb wiederherzustellen

Unterstützung mehrerer Geräte

Der Adapter handhabt automatisch mehrere MS-A2 Einheiten:

  • Jedes Gerät wird durch seine eindeutige Client-ID identifiziert
  • Zustände werden dynamisch für jedes verbundene Gerät erstellt
  • Geräteobjekte werden unter separaten Ordnern organisiert
  • Online-Status wird individuell für jedes Gerät verfolgt

Fehlerbehebung

Häufige Probleme

Gerät verbindet sich nicht:

  1. Überprüfen Sie die Netzwerkkonnektivität zwischen ioBroker und MS-A2
  2. Überprüfen Sie die MQTT-Server-Konfiguration in den Adapter-Einstellungen
  3. Stellen Sie sicher, dass Port 1881 nicht von der Firewall blockiert wird
  4. Überprüfen Sie MQTT-Einstellungen in der S-Miles Home App

Zustände aktualisieren sich nicht:

  1. Überprüfen Sie den Geräte-Online-Status (info.online)
  2. Überprüfen Sie Zeitstempel-Aktualisierungen (info.timestamp)
  3. Überprüfen Sie Adapter-Logs auf Fehlermeldungen
  4. Starten Sie den Adapter bei Bedarf neu

Leistungssteuerung funktioniert nicht:

  1. Stellen Sie sicher, dass der EMS-Modus auf mqtt_ctrl gesetzt ist
  2. Überprüfen Sie, ob der Leistungswert im min/max-Bereich liegt
  3. Überprüfen Sie, dass das Gerät online ist und antwortet
  4. Überwachen Sie Echtzeit-Zustände auf Änderungen

Log-Analyse

Aktivieren Sie detailliertes Logging, indem Sie das Adapter-Log-Level auf "debug" oder "silly" setzen:

  • Info-Level: Verbindungsereignisse und grundlegende Operationen
  • Debug-Level: Detaillierte MQTT-Kommunikation
  • Silly-Level: Alle MQTT-Nachrichten und Zustandsaktualisierungen

Netzwerkanforderungen

  • Port 1881/TCP: Muss von MS-A2 zu ioBroker erreichbar sein
  • Firewall: Stellen Sie sicher, dass MQTT-Traffic erlaubt ist
  • Netzwerkstabilität: Stabile Verbindung für zuverlässigen Betrieb erforderlich

FAQ

F: Kann ich einen anderen MQTT-Port verwenden? A: Ja, konfigurieren Sie einen beliebigen freien Port in den Adapter-Einstellungen und aktualisieren Sie die MS-A2 Konfiguration entsprechend.

F: Unterstützt der Adapter Authentifizierung? A: Noch nicht. Authentifizierungsunterstützung ist für zukünftige Versionen geplant.

F: Kann ich mehrere MS-A2 Einheiten überwachen? A: Ja, jede Einheit erscheint als separates Gerät mit eigenen Zuständen.

F: Wie oft werden Daten aktualisiert? A: Echtzeit-Daten werden jede Sekunde aktualisiert, Systemstatistiken alle 5 Minuten (gesteuert von der Hoymiles API).

F: Kann ich Lade-/Entladepläne steuern? A: Derzeit wird nur Leistungsausgangssteuerung unterstützt. Erweiterte Terminplanung könnte in zukünftigen Versionen hinzugefügt werden.

F: Was passiert, wenn die Netzwerkverbindung verloren geht? A: Der Adapter erkennt offline Geräte und markiert sie entsprechend. Daten werden fortgesetzt, wenn die Verbindung wiederhergestellt ist.

F: Gibt es Einschränkungen? A: Der Adapter ist derzeit auf schreibgeschützte Überwachung und grundlegende Leistungssteuerung beschränkt. Erweiterte Funktionen hängen von den Hoymiles API-Fähigkeiten ab.

Unterstützung und Beiträge

Für Probleme, Fragen oder Beiträge:

Wenn Ihnen dieser Adapter gefällt, denken Sie bitte über eine Spende nach:

paypal


Dieser Adapter ist ein unabhängiges Community-Projekt und ist nicht mit Hoymiles verbunden.

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.