sonnenBatterie

Überwache deine sonnen Batterie

Aktueller Release
1.18.1
Entwickler
Moritz Heusinger
Lizenz
MIT

Der sonnen Adapter ermöglicht die Einbindung einer sonnenBatterie in den ioBroker.

Überblick

sonnenBatterie

Mit der sonnenBatterie kann selbst erzeugte Energie aus der Solaranlage für den Eigenbedarf gespeichert werden und genau dann genutzt werden, wenn sie gerade benötigt wird. Dadurch ist es möglich sich von anonymen Energiekonzernen unabhängig zu machen und selbst zum autarken Stromproduzenten zu werden. Der intelligente High-Tech-Stromspeicher sorgt dank des integrierten Energiemanagers dafür, dass der Haushalt bestmöglich mit eigenem Strom versorgt wird. Dies ist nicht nur kostengünstig, sondern auch umweltfreundlich! Die sonnenBatterie gibt es in verschiedenen und flexiblen Speichermodellen.

sonnen Adapter

Der sonnen Adapter kann eine sonnenBatterie im Netzwerk überwachen und steuern. Mithilfe des Discovery Adapters (TODO: Link) können sonnenBatterien im Netzwerk automatisch gefunden werden.
Der Adapter legt States zur Überwachung und Steuerung der sonnenBatterie in Form von Objekten an. Ein Großteil der States dient lediglich zur Überwachung der Batterie, während durch das beschreiben einiger States die Batterie zusätzlich gesteuert werden kann.

Voraussetzungen vor der Installation

Voraussetzungen für den Betrieb einer sonnenBatterie mit dem ioBroker, ist die erfolgreiche Einrichtung der Batterie durch einen Elektriker. Ebenfalls muss sich die Batterie im gleichen Netzwerk wie der ioBroker befinden.

Installation

Eine Instanz des Adapters wird über die ioBroker Admin-Oberfläche installiert. Die ausführliche Anleitung für die dazu notwendigen Installatonschritte kann hier (TODO:LINK) nachgelesen werden.

Nach Abschluss der Installation einer Adapterinstanz öffnet sich automatisch ein Konfigurationsfenster.

Konfiguration

Fenster "Haupteinstellungen"

Main Settings

FeldBeschreibung
IP-AdresseHier soll die IP-Adresse der gewünschten sonnenBatterie angegeben werden.
FeldBeschreibung
Auth-TokenHier soll der Auth-Token eingegeben werden, welcher im sonnen Webinterface unter "Software Integration" zu finden ist. Wird kein Auth-Token eingegeben, wird die inoffizielle API genutzt, welche jederzeit abgeschaltet werden kann.

Fenster "Erweiterte Einstellungen"

Advanced Settings

FeldBeschreibung
AbfrageintervallHier kann ein alternativer Wert in Millisekunden gesetzt werden. In diesem Intervall werden die States der sonnenBatterie aktualisiert.
FeldBeschreibung
Online-Status abfragenWenn Sie Anfragen von Ihrer Batterie an den sonnen-Server vermeiden möchten, können Sie die Online-Statusabfrage deaktivieren (nur relevant für 8080 API - z.B. eco8 und neuer)

Nach Abschluss der Konfiguration wird der Konfigurationsdialog mit SPEICHERN UND SCHLIEßEN verlassen. Dadurch efolgt im Anschluß ein Neustart des Adapters.

Instanzen

Die Installation des Adapters hat im Bereich Objekte eine aktive Instanz des sonnen Adapters angelegt.

Instanz Erste Instanz

Auf einem ioBroker Server können mehrere sonnen Adapter Instanzen angelegt werden. Umgekehrt kann eine sonnenBatterie auch mit mehreren ioBroker Servern betrieben werden. Sollen mehrere Geräte von einem ioBroker Server gesteuert werden, sollte je Batterie eine Instanz angelegt werden.

Ob der Adapter aktiviert oder mit der Batterie verbunden ist, wird mit der Farbe des Status-Feldes der Instanz verdeutlicht. Zeigt der Mauszeiger auf das Symbol, werden weitere Detailinformationen dargestellt.

Objekte des Adapters

Im Bereich Objekte werden in einer Baumstruktur alle vom Adapter im Hub erkannten Geräte und Aktivitäten aufgelistet. Zusätzlich wird auch noch darüber informiert, ob die Kommunikation mit dem Hub reibungslos erfolgt.

Objekte Objekte des sonnen Adapters

Nachfolgend werden die Objekte in States und Buttons unterteilt. Da es zwei unterschiedliche APIs je nach Batterie gibt, werden nur die States angelegt, die von der jeweiligen Batterie unterstützt werden. Jeder Datenpunkt ist mit seinem zugehörigen Datentyp sowie seinen Berechtigungen aufgehführt. Berechtigungen können lesend (R) sowie schreibend (W) sein. Jeder Datenpunkt kann mindestens gelesen (R) werden, während andere ebenfalls beschrieben werden können. Zur Suche nach einem bestimmten Datenpunkt empfiehlt sich die Suche mittels der Tastenkombination "STRG + F".

States

Hinweis: Die States der Legacy API (Port 3480) und der alten API (Port 7979) sind derzeit nicht oder nur partiell dokumentiert

Channel: configurations

Mit API v2 kann hier die Konfiguration der Batterie in verschiedenen States eingesehen werden. Beschreibbare States können genutzt werden, um die Konfiguration zu ändern.

Channel: info

  • info.connection

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert, welcher true ist, wenn die Verbindung zwischen ioBroker und Batterie hergestellt ist.

  • info.lastSync

    DatentypBerechtigung
    timestampR

    Nur lesbarer Zeitstempel, der bei jeder Aktualisierung der Daten, aktualisiert wird.

  • info.configuration

    DatentypBerechtigung
    stringR

    Nur lesbarer JSON String, mit Konfigurationsinformationen der sonnenBatterie. Nur in API v1, v2 hat hierfür den channel configurations

  • info.powerMeter

    DatentypBerechtigung
    stringR

    Nur lesbarer JSON String, mit Strommessungsinformationen der sonnenBatterie.

  • info.inverter

    DatentypBerechtigung
    numberR

    Nur lesbarer nummerischer Wert, mit Wechselrichter Informationen der sonnenBatterie.

  • info.ios

    Data typePermission
    booleanR

    Nur lesbarer boolscher Wert, mit "discrete IO Informationen" der sonnenBatterie.

Channel: status

  • status.consumption

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher den aktuellen Verbrauch des Hauses in Watt beinhaltet.

  • status.production

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher angibt, wie viel Watt derzeit von der PV-Anlage produziert werden.

  • status.pacTotal

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher die Wechselrichter AC-Leistung angibt. Wenn der Wert größer als 0 ist wird die Batterie entladen, bei einem Wert kleiner 0, geladen.

  • status.relativeSoc

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher den aktuellen Batterieladestand repräsentiert.

  • status.userSoc

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher den aktuellen Batterieladestand repräsentiert.

  • status.acFrequency

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher die AC Frequenz in Hertz repräsentiert.

  • status.acVoltage

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher die aktuelle AC (Wechselstrom) Stromspannung des Wechselrichters darstellt.

  • status.batteryVoltage

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher die derzeitige DC (Gleichstrom) Stromspannung der Batterie darstellt.

  • status.systemTime

    DatentypBerechtigung
    dateR

    Nur lesbares ISO Datum, welches die Systemzeit der Batterie repräsentiert.

  • status.systemInstalled

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert, welcher true ist, wenn das System korrekt installiert ist.

  • status.batteryCharging

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert. Dieser ist true, wenn die sonnenBatterie derzeit geladen wird.

  • status.flowConsumptionBattery

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert. Dieser ist True, wenn die Batterie derzeit entladen wird.

  • status.flowConsumptionGrid

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert, welcher true ist, wenn derzeit Strom vom Netz bezogen wird.

  • status.flowConsumptionProduction

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert. Dieser ist true, wenn derzeit Strom direkt von der PV-Anlage verbraucht wird.

  • status.flowGridBattery

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Indikator, welcher true ist, wenn die Batterie derzeit durch das Netz geladen wird.

  • status.flowProductionBattery

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert, welcher true ist, wenn die Batterie derzeit direkt durch die PV-Anlage geladen wird.

  • status.flowProductionGrid

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert, welcher true ist, wenn der erzeugte Strom derzeit in das Netz eingespeist wird.

  • status.gridFeedIn

    DatentypBerechtigung
    numberR

    Nur lesbarer number Wert, welcher die Menge an Strom in Watt repräsentiert, die derzeit in das Netz eingespeist oder bezogen wird. Wenn der Wert positiv ist, wird derzeit in das Netz eingespeist, wenn dieser negativ ist, wird die Menge an Strom vom Netz bezogen.

  • status.onlineStatus

    DatentypBerechtigung
    booleanR

    Nur lesbarer boolscher Wert, welcher true ist, die sonnenBatterie online ist.

  • status.systemStatus

    DatentypBerechtigung
    stringR

    Nur lesbare Zeichenkette, welcher angibt, ob die Batterie mit dem Netz verbunden ist.

Channel: control

  • control.charge

    DatentypBerechtigung
    numberR/W

    Number Wert, welcher es ermöglicht die maximale Entladung der Batterie in Watt festzulegen.

    Hinweis: Wenn ein ungültiger Wert gesetzt wird, wird dieser trotzdem bestätigt. Die Bestätigung (Acknowledge) des Wertes bedeutet lediglich, dass das Kommando an die Batterie übertragen wurde.

    Der entsprechende Wert des Sollwerts wird beibehalten, bis die Batterie einen neuen Lade- oder Entladewert erhält. Wenn VPP aktiv ist, wird die Anfrage abgelehnt.

    Example:

    setState('sonnen.0.control.charge', 1250); // Die Batterie wird mit maximal 1250 Watt geladen
    
  • control.discharge

    DatentypBerechtigung
    numberR/W

    Number Wert, welcher es ermöglicht die maximale Ladung der Batterie in Watt festzulegen.

    Hinweis: Wenn ein ungültiger Wert gesetzt wird, wird dieser trotzdem bestätigt. Die Bestätigung (Acknowledge) des Wertes bedeutet lediglich, dass das Kommando an die Batterie übertragen wurde.

    Der entsprechende Wert des Sollwerts wird beibehalten, bis die Batterie einen neuen Lade- oder Entladewert erhält. Wenn VPP aktiv ist, wird die Anfrage abgelehnt.

    Example:

    setState('sonnen.0.control.discharge', 1250); // Die Batterie wird maximal mit 1250 Watt entladen
    

Channel: powermeter

Dieser Kanal hat zwei Unterkanäle, z.B. 4_1 und 4_2, wobei einer den Konsum und der andere die Produktion repräsentiert. Z. b. 4_1.kwh_imported stellt die Gesamtproduktion seit Installation der Batterie dar.

Die beiden Kanäle haben die identischen Zustände. Alle Zustände sind schreibgeschützt und vom Typ number.

Channel: inverter

Der Kanal besteht aus schreibgeschützten Zuständen vom Typ number, die Informationen über den Wechselrichter der sonnenBatterie liefern.

Channel: ios

Der Kanal besteht aus schreibgeschützten Zuständen vom Typ boolean, die Informationen über die discrete IO Status der sonnenBatterie liefern.

Channel: configurations

Der Kanal erlaubt das Lesen und auch Schreiben von Konfigurationswerten der Sonnenbatterie.

Channel: battery

Der Kanal stellt Batteriesepzifische Daten bereit, wie die Anzahl an Ladezyklen.

Changelog

1.18.1 (2024-04-14)

  • (foxriver76) fixed detection of legacy API

1.18.0 (2024-03-18)

  • (foxriver76) added new inverter and powermeter states

1.17.0 (2023-12-20)

  • (foxriver76) sync brightness status of eclipse led
  • (foxriver76) fixed issue with eclipse led status (closes #293)

1.16.0 (2023-02-02)

  • (foxriver76) added state battery.balanceChargeRequest (closes #258)

1.15.6 (2022-12-18)

  • (foxriver76) added two GPIOs for CHP status

1.15.5 (2022-12-17)

  • (foxriver76) added state list for configurations.SH_HeaterOperatingMode'
  • (foxriver76) marked some datapoints as read-only and fixed state types

1.15.4 (2022-12-16)

  • (foxriver76) fixed crash if v2 configurations endpoint is not available (closes #228)

1.15.3 (2022-12-14)

  • (foxriver76) internal optimizations (Axios port)

1.15.2 (2022-12-14)

  • (foxriver76) internal optimization (ES6 class)

1.15.1 (2022-12-13)

  • (foxriver76) added battery.cyclecount state (closes #194)

1.15.0 (2022-12-13)

  • (foxriver76) full port to v2 API (Software Version >= 1.8.7)
  • (foxriver76) brings back ios and inverter endpoints
  • (foxriver76) configuration request is now handled by a single call instead of one for each attribute
  • (foxriver76) we fixed a lot of state roles

1.14.0 (2022-12-02)

  • (foxriver76) implemented new state latestData.dcShutdownReason (closes #213)

1.13.1 (2022-11-24)

  • (foxriver76) minor performance optimization
  • (foxriver76) info.lastSync and status.systemTime are now type number
  • (foxriver76) implemented silent fail on ios endpoint to support both API versions

1.13.0 (2022-10-28)

  • (foxriver76) added latestData endpoint providing eclipse LED status and time since last full charge

1.12.3 (2022-10-27)

  • (foxriver76) readded widget (closes #189)

1.12.2 (2022-10-27)

  • (foxriver76) fixed issue with data types of configuration

1.12.1 (2022-09-26)

  • (foxriver76) we now use the V2 API for the powermeter endpoint
  • (foxriver76) we have ported the code to TypeScript
  • (foxriver76) added configuration for V2 API, including ability to change it via adapter

1.11.0 (2022-06-22)

  • (foxriver76) added status.systemStatus to indicate if the battery is connected to the grid (closes #139)

1.10.0 (2022-04-18)

  • (rivengh) added battery discrete io states

1.9.8 (2021-09-27)

  • (foxriver76) make requesting online status optional for 8080 api (closes #76)

1.9.6 (2021-08-03)

  • (foxriver76) fix for horizontal flow animations in Safari (broken with 1.9.4)

1.9.4 (2021-07-17)

  • (foxriver76) widget: make the svg smaller by using a flexbox to center the svg correctly inside the div

1.9.3 (2021-07-16)

  • (foxriver76) also poll the configuration instead of updating it only once at start (closes #70)

1.9.2 (2021-07-16)

  • (foxriver76) fix for legacy API

1.9.1 (2021-07-16)

  • (foxriver76) use legacy API if old API is not completely implemented

1.9.0 (2021-07-16)

  • (foxriver76) we now also support the legacy API (port 3480)
  • (foxriver76) switch from intervals to timeouts to avoid overlapping poll runs

1.8.6 (2021-07-04)

  • (foxriver76) widget: we removed debug logging and unnecessary template functions
  • (foxriver76) widget: we now cache the jquery selectors to improve the performance

1.8.5 (2021-07-02)

  • (foxriver76) widget: stroke width can now be configured

1.8.4 (2021-07-01)

  • (foxriver76) widget: we made ID names more adapter specific to avoid getting wrong translations

1.8.3 (2021-07-01)

  • (foxriver76) widget: we now allow defining the used adapter instance

1.8.2 (2021-06-30)

  • (foxriver76) widget: css classes now have adapter specific names to avoid conflicts

1.8.1 (2021-06-30)

  • (foxriver76) widget now has flow directions

1.8.0 (2021-06-30)

  • (foxriver76) added widget

1.7.3 (2021-05-01)

  • (foxriver76) we now update objects if attributes are updated, but preserve common.name attribute

1.7.2 (2021-04-30)

  • (foxriver76) we fixed some type issues (fixes #58)

1.7.1 (2021-03-19)

  • (foxriver76) do not log warnings on inverter endpoint if battery does not support it (closes #55)

1.7.0 (2020-11-12)

  • (foxriver76) new channels for powermeter and inverter

1.6.1 (2020-11-11)

  • (foxriver76) fixed charge and discharge not working with api v2

1.6.0 (2020-08-09)

  • (foxriver76) added support for official api, automatically used when auth token is given by user

1.5.3 (2020-05-18)

  • (foxriver76) poll online status always again if not confirmed that there are differences in api (old solution could lead to false negative)
  • (foxriver76) more specific error handling

1.5.2 (2020-05-16)

  • (foxriver76) check if onlineStatus is supported at adapter start - else do not poll it

1.5.0 (2020-05-04)

  • (foxriver76) added online status indicator

1.4.2 (2020-04-16)

  • (foxriver76) added more translations
  • (foxriver76) optimizations for compact mode

1.4.0

  • (foxriver76) introducing new states with power metering and inverter information (supported on :8080 API)
  • (foxriver76) only minimum support until we know what users need as states

1.3.0

  • (foxriver76) introducing new state with configuration information (supported on :8080 API)

1.2.0

  • (foxriver76) support of another sonnen api

1.1.2

  • (foxriver76) bugfix for control states

1.1.1

  • (foxriver76) add compact mode compatibility

1.0.2

  • (foxriver76) use adapter-core module

1.0.1

  • (foxriver76) take timezone offset into account on time states

1.0.0

  • (foxriver76) formal version increment

0.0.8

  • (foxriver76) Enhanced debug logging
  • (foxriver76) Prevent crashing when a return code is received

0.0.7

  • (foxriver76) Only set info.connection on change

0.0.6

  • (foxriver76) Only set states if request was successfull --> prevents adapter crash

0.0.5

  • (foxriver76) translations on index_m.html
  • (foxriver76) use 7000 as interval if poll interval is undefined

0.0.3

  • (foxriver76) fixed links to bugs, repo etc

0.0.2

  • (foxriver76) bugfixes on control states
  • (foxriver76) big readme update
  • (foxriver76) addded more states
  • (foxriver76) added advanced settings

0.0.1

  • (foxriver76) initial release

License

The MIT License (MIT)

Copyright (c) 2018-2024 Moritz Heusinger moritz.heusinger@gmail.com

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.