Integration unseres Balkonkraftwerks in openHAB

Als erstes einmal vorweg: Der Bosswerk Wechselrichter ist aktuell nicht nativ in openHAB bei mir zu Hause integriert. Ich habe noch keine zufriedenstellende Lösung für mich gefunden! Habt Ihr ggf. eine Idee wie man einen solchen Wechselrichter komplett in openHAB integrieren kann?

Aktuell habe ich die Integration über einen Shelly bei mir in das System vorgenommen.

Integration Shelly in openHAB

Die Shelly-Lösung (auf Basis 1PM) ist für meinen Anwendungsfall aktuell ausreichend und liefert mir alle notwendigen Daten (für den Betrieb in den ersten „Test-Monaten“).

Der Shelly wird einfach per openHAB Binding in das System integriert. Das Ergebnis sieht in der Visualisierung dann bei mir so aus.

Things

Nach der Installation habe ich manuell das Thing in der Konfiguration erstellt.

/* Shelly 1 PM */

Thing shelly:shelly1pm:xxx "Shelly 1 PM - xxx" @ "Garage" [deviceIp="xxx.xxx.xxx.xxx", userId="", password=""]

Items

Die Items habe ich auch entsprechend manuell angelegt.

/* Shelly 1 PM */
Switch shelly_xxx_Relay_Output                     "Betrieb"           {channel="shelly:shelly1pm:xxx:relay#output"}
Switch shelly_xxx_Relay_Input                      "Eingang"           {channel="shelly:shelly1pm:xxx:relay#input"}
Number:Power shelly_xxx_Meter_CurrentWatts         "Leistung"          {channel="shelly:shelly1pm:xxx:meter#currentWatts"}
Number shelly_xxx_Meter_TotalKWH                   "Gesamtverbrauch"   {channel="shelly:shelly1pm:xxx:meter#totalKWH"}
Number shelly_xxx_Device_WifiSignal                "Signalstärke"      {channel="shelly:shelly1pm:xxx:device#wifiSignal"}
Number shelly_xxx_Gesamt                           "PV [%.1f €]"
Number shelly_xxx_Dummy                            "PV [%.1f kWh]"

Rules

In der Regel habe ich ein paar Anpassungen an den Werten für den Strompreis vorgenommen. Leider werden die Werte vom Shelly auch nur bis zum nächsten Neustart dort gespeichert d.h. ein manuelles Hinzufügen der bereits generierten kWh kann hier Sinn ergeben.

rule "Convert Wh to KWh"
when
    Item shelly_xxx_Meter_CurrentWatts received update
then
    logInfo("INFO", "Shelly.rules - PV (Generiert): " + shelly_xxx_Meter_TotalKWH.state)
    shelly_xxx_Dummy.postUpdate((shelly_xxx_Meter_TotalKWH.state as Number) + 76.574)
    // 37,6 kWh für vorherigen Betrieb vor Regel eingefügt
    logInfo("INFO", "Shelly.rules - PV (Total kWh): " + shelly_xxx_Dummy.state)
end

rule "Generierter Strom"
when
    Item shelly_xxx_Dummy received update
then
    shelly_xxx_Gesamt.postUpdate(shelly_c45bbe7995cb_Dummy.state as DecimalType * 0.3)
    // 0,30 Cent pro kWh angenommen
    logInfo("INFO", "Shelly.rules - PV (Total Euro): " + shelly_xxx_Gesamt.state)
end

Sitemap

Für die Visualisierung wurde die Sitemap entsprechend ergänzt.

        Text label="Shelly" icon="solarplant" {
            Switch item=shelly_xxx_Relay_Output label="Betrieb" icon="lightbulb"
            Text item=shelly_xxxb_Device_WifiSignal label="Signalstärke" icon="network"         
            Text item=shelly_xxxb_Meter_CurrentWatts label="Leistung" icon="energy"
            Text item=shelly_xxxb_Meter_TotalKWH label="Gesamtverbrauch" icon="energy"
            Text item=shelly_xxxb_Gesamt label="Gesamt" icon="piggybank"
            Text item=shelly_xxx_Dummy label="Total" icon="piggybank

            Frame label="Shelly - Aktuelle Leistung (W)" {
                Switch item=Chart_Zeitraum_D_W_M_Y label="" mappings=[0="Tag", 1="Woche", 2="Monat", 3="Jahr"]
                Chart item=shelly_xxx_Meter_CurrentWatts  service="rrd4j" period=D refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==0, Chart_Zeitraum_D_W_M_Y=="Uninitialized"]
                Chart item=shelly_xxx_Meter_CurrentWatts  service="rrd4j" period=W refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==1]
                Chart item=shelly_xxx_Meter_CurrentWatts  service="rrd4j" period=M refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==2]
                Chart item=shelly_xxx_Meter_CurrentWatts  service="rrd4j" period=Y refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==3]
            }

            Frame label="Shelly - Gesamte Leistung (kWh)" {
                Switch item=Chart_Zeitraum_D_W_M_Y label="" mappings=[0="Tag", 1="Woche", 2="Monat", 3="Jahr"]
                Chart item=shelly_xxx_Dummy  service="rrd4j" period=D refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==0, Chart_Zeitraum_D_W_M_Y=="Uninitialized"]
                Chart item=shelly_xxx_Dummy  service="rrd4j" period=W refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==1]
                Chart item=shelly_xxx_Dummy  service="rrd4j" period=M refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==2]
                Chart item=shelly_xxx_Dummy  service="rrd4j" period=Y refresh=15000 visibility=[Chart_Zeitraum_D_W_M_Y==3]
            }
        }

Integration Bosswerk (SOLARMAN) in openHAB

Alternativ vor vorherigen Lösung ist eine Integration des Bosswerk Wechselrichters auch per aktivierter API möglich.

Ein Lösungsvorschlag wird hier im Forum diskutiert. Man greift die Daten über die API (RESTful) entsprechend ab und übergibt Sie über den Call direkt an openHAB.

Meine Tests sind aktuell nur mi postman durchgeführt worden. Über die Dokumentation und die Beispiele ist ein Zugriff per Webservice sehr Einfach auf die Daten möglich. Die komplette Intgetration in openHAB über ein Binding habe ich aber noch nicht vorgenommen (das ist dann eher etwas für den nächsten Winter).

Fazit

Die Integration über den Shell ist sehr einfach mit Bordmitteln in openHAB möglich (hier über den Weg der manuellen Konfiguration oder über die GUI). Die Integration der nativen API benötigt etwas mehr Einarbeitung und Wissen über Webservices (darum habe ich dies erst einmal nach Hinten gestellt).

Mit dem oben beschriebenen Weg ist es aber sehr schnell und einfach möglich den Bosswerk Wechselrichter (und auch jeden anderen Wechselrichter) in ein openHAB-System zu integrieren.

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.