Ankündigung

Einklappen
Keine Ankündigung bisher.

"SMA Binding " für OpenHAB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    "SMA Binding " für OpenHAB

    Hallo zusammen,

    Bei uns zu hause besitzen wir eine Photovoltaikanlage der Firma SMA. Wenn ich dies richtig sehe, gibt es dafür noch kein Binding.

    Es es jedoch möglich diese Daten dennoch in OpenHAB zu integrieren?

    Die Software von SMA Speichert eine Datei mit den Daten lokal auf den Rechner durch eine Bluetoothverbindung.

    Ich müsste also einfach die Datei der SMA Software auslesen, oder?

    Wenn dies so einfach ist, wie komme ich auf lokale Daten vom PC ?

    Die Viso läuft momentan noch auf einem Windows Rechner, soll aber später auf meinem NAS oder embedded PC funktionieren.

    #2
    hi,
    schau mal ob du mit websolarlog (WebSolarLog | SolarData becomes information) die Anlage auslesen kannst - dann könntest du die Infos in OH übernehmen. (Nachtrag: Laut webloarlog page sollte der SMA mit einer rs485 abindung funktionieren!)

    So habe ich das mit meiner Diehl gemacht. Gibt auch ein how-to im Wiki dazu.

    grüsse
    Karsten

    Kommentar


      #3
      Gibt es schon Erfahrungen/Ideen wie man den Sonny Home Manager anbinden könnte?

      Kommentar


        #4
        Also ich habe https://sbfspot.codeplex.com/ im Einsatz.

        Per Cron lasse ich es alle 5min laufen. Das Ergebnis wird ein einer DB gespeichert

        Durch das Exec Binding rufe ich den Wertvperiodisch ab und speichere ihnin ein openhab item

        Item:
        Number PV_Ertrag "Aktueller Ertrag [%.1f kw]" {exec="<[/opt/openhab/configurations/scripts/pvstatus.sh:60000:REGEX((.*?))]"}

        Script:
        #!/bin/sh
        ertrag=$(/usr/bin/sqlite3 /usr/share/solar/sbfspot.3/SBFspot.db "select a FROM (select MAX(TimeStamp),Pac1 AS 'a','b' from SpotData);")
        echo $ertrag
        #Übergabe des Wertes in Volkszähler.org
        curl -X POST -H "application/json" -s -d "" http://192.168.0.116/middleware.php/data/840bcbc0-4a6b-11e5-bd64-b53a2209cc0d.json?value="$ertrag" > /dev/null

        Kommentar


          #5
          Ich habe den weg über supoxy probiert, aber leider nicht ans laufen bekommen.

          Hat sich denn schon mal jemand daran versucht ein SMA Binding zu bauen?
          Eigentlich muss es sich ja "nur" bei sunnyportal.com anmelden und die aktuellen Werte von sunnyportal.com/homemanager abrufen und wegspeichern.

          Kommentar


            #6
            Hallo zusammen,

            gibt es hier schon was neues in Sachen SMA Binding?

            Kommentar


              #7
              Das würde ich auch gerne wissen.
              Habe einen Tripower 10000, ein Smart Meter und einen Sunny Home Manager. Mir würde es erstmal reichen, wenn ich im openHAB die Livedaten des Smart Meters hätte. Also nur ob und wieviel Leitung ich ins Netzt einspeiße oder vom Netz beziehe.

              Besten Dank.

              Kommentar


                #8
                Hi, ich habe eine Sunny Webbox die per Bluetooth angeschlossen ist. Die frage ich so ab:

                Number GriEgyTot "Gesamtertrag" (Solar) {exec="<[scripts/webbox.sh:300000:JSONPATH($.result.overview[?(@.meta=="GriEgyTot)][0].value)]"}
                Number GriEgyTdy "Tagesertrag" (Solar) {exec="<[scripts/webbox.sh:300000:JSONPATH($.result.overview[?(@.meta=='GriEgyTdy')][0].value)]"}
                Number GriPwr "Leistung" (Solar) {exec="<[scripts/webbox.sh:300000:JSONPATH($.result.overview[?(@.meta=='GriPwr')][0].value)]"}

                wobei im webbox.sh script nur ein curl drin steht welches json zurück liefert:

                curl -X POST --silent -d 'RPC={"version":"1.0","proc":"GetPlantOverview","i d":"1","format":"JSON"}' -H 'content-type:text/plain;' http://192.168.178.48/rpc

                (IP natürlich anpassen)
                Das --silent ist wichtig, da curl sonst die download Stats mit ausspuckt und das JSON nicht mehr gültig ist. (Hat mich eine Weile Debugging gekostet da man es auf der command line nicht sieht.)

                Ich weiß die WebBox ist abgekündigt und neuerdings verkaufen sie nur noch den Home Manager, ka ob der ein RPC interface hat, müsste man die Doku lesen

                Grüße
                Zuletzt geändert von Caesium; 05.08.2016, 22:37.

                Kommentar


                  #9
                  Mit der neuen Firmware lassen sich einige SMA Wechselrichter über Modbus auslesen.

                  Hast das schon einer probiert?

                  Kommentar


                    #10
                    Hi zusammen,

                    habe gerade den SMA Sunny Boy 4.0 geordert.
                    Hat jemand in der Runde mittlerweile eine funktionierende "Abfrage" für openHAB?

                    viele Grüße aus Hessen

                    eibalinchen

                    Kommentar


                      #11
                      Zitat von eibalinchen Beitrag anzeigen
                      Hi zusammen,

                      habe gerade den SMA Sunny Boy 4.0 geordert.
                      Hat jemand in der Runde mittlerweile eine funktionierende "Abfrage" für openHAB?

                      viele Grüße aus Hessen
                      Hallo in die Runde,

                      falls es vonnöten ist und es jemand nachbauen möchte... Ich habe es nun im Selbstversuch geschafft meinen Sunny Boy 4.0 "anzuzapfen" und mir die passenden Werte herauszusuchen.

                      Dazu ist es notwendig auf dem Wechselrichter (WR) den "Modbus" zu aktivieren und TCP/IP (Port 502) freizugeben.
                      Installationskennwort für den WR ist notwendig.

                      Ich empfehle auch hier: http://files.sma.de/dl/2585/WEBBOX-MODBUS-TB-de-19.pdf die Modbus-Beschreibung herunterzuladen.
                      Man findet dort dann die benötigten / abzufragenden Modbus-Adressen, die später über das Modbus-Binding in OH2 abgefragt werden können

                      Was ist dann zu tun?
                      Step 1: Installation des Modbus Bindings (binding-modbus1 - 1.12.0) in OH2
                      Step 2: die neu entstandene Datei "modbus.cfg" im Services Ordner bearbeiten (bei mir war die schreibgeschützt, habe sie einfach umkopiert und die Originaldatei gelöscht. Die kopierte Datei dann wieder modbus.cfg genannt.
                      Step 3: Anlegen der erforderlichen OH2 Dateien (meine Beispieldateien "modbus.cfg", "SMA.map", "PV.items", "PV.rules" und den Auszug meiner Sitemap habe ich hier angehängt...

                      Ggf. gibt es hier noch Optimierungsansätze, was die Inhalte der Dateien, gerade der .cfg anbelangt, aber es funzt so...

                      Vielleicht hat noch jemand einen Tipp für mich, da dies noch etwas störend ist und mir die Charts "zerschießt".
                      Ab dem Zeitpunkt an dem keine Energie mehr gewonnen wird, also abends/nachts, wird mir bei den Items "SMA_DC1_" und "SMA_Wirkleistung" nicht der Wert 0 ausgegeben, sondern "2147483648".
                      Habe das versucht in der PV.rules abzufangen, komme da aber nicht so recht weiter...
                      Wäre cool, wenn da jemand einen Lösungsansatz hätte...

                      Viele Grüße und viel Spaß damit

                      André

                      Angehängte Dateien
                      eibalinchen

                      Kommentar


                        #12
                        Zitat von eibalinchen Beitrag anzeigen
                        Ab dem Zeitpunkt an dem keine Energie mehr gewonnen wird, also abends/nachts, wird mir bei den Items "SMA_DC1_" und "SMA_Wirkleistung" nicht der Wert 0 ausgegeben, sondern "2147483648".
                        Das ist natürlich doof...
                        Leider gibt es keine Möglichkeit, solche eindeutig falschen Werte automatisch auszusortieren.
                        Die einzige direkte Möglichkeit wäre, jeweils ein Proxy Item zu nutzen und diese in die Persistence zu schicken. Dann kannst Du eine Rule schreiben, welche bei einem Update von SMA_DC1_ bzw. SMA_Wirkleistung ausgelöst wird, auf einen gültigen Wert testet und gegebenenfalls ein postUpdate des zugehörigen Proxy Items durchführt.
                        Alternativ müsste jemand ein Binding für den Sunny Boy erstellen und die Filterung innerhalb des Bindings erledigen.

                        Kommentar


                          #13
                          Hi udo1toni,

                          danke für deinen Denkanstoß.
                          der hat mir jetzt den nachstehenden Anreiz gegeben, der zu funktionieren scheint...

                          ... Korrektur!!!
                          bitte die nachstehenden Zeilen nicht verwenden,
                          siehe nächster Post von udo1toni

                          rule "Fehlerbehebung Nacht Wechselrichter"
                          when Item SMA_Wirkleistung changed or System started
                          then
                          var Number Wirk_auslesen = SMA_Wirkleistung.state as DecimalType
                          if (Wirk_auslesen > 4500) {
                          SMA_Wirkleistung.postUpdate(0)
                          SMA_DC1_.postUpdate(0)
                          }
                          end



                          cool, mal schauen wie sich das morgen tagsüber verhält und dann im Übergang abends...
                          Zuletzt geändert von eibalinchen; 09.08.2018, 15:54.
                          eibalinchen

                          Kommentar


                            #14
                            Nein, Du überschreibst jetzt zwar den eingegangenen Wert, aber zum einen wird dann Deine Rule durch sich selbst getriggert, zum zweiten wirst Du, wenn Du korrekt persistierst, weiterhin Peaks in Deinen Daten haben. Ich meinte das eher so:
                            items:
                            Code:
                            Number SMA_DC1_ "DC-Leistung String 1: [%d W]"              <solarplant>               { modbus="slave1:0" }
                            Number SMA_Wirkleistung "Wirkleistung aktuell: [%d W]"      <energy>                   { modbus="slave4:0" }
                            Number SMA_DC1_korr "DC-Leistung String 1: [%d W]"          <solarplant> (Solar_Chart)
                            Number SMA_Wirkleistung_korr "Wirkleistung aktuell: [%d W]" <energy>     (Solar_Chart)
                            Zusätzlich zu den echten Items gibt es also zwei virtuelle Items ohne Binding.
                            persistence:
                            Code:
                            Solar_Chart* : everyMinute,everyChange,restoreOnStartup
                            Die Werte werden bei Änderung und minütlich persistiert, außerdem bei Systemstart auf den letzten bekannten Wert gesetzt
                            rule:
                            Code:
                            rule "Fehlerbehebung Nacht Wechselrichter"
                            when
                                Item SMA_Wirkleistung changed or
                                Item SMA_DC1_ changed
                            then
                                if(triggeringItem.name == "SMA_Wirkleistung")
                                    SMA_Wirkleistung_korr.postUpdate(if((SMA_Wirkleistung.state as Number) > 4500) 0 else (SMA_Wirkleistung.state as Number))
                                else
                                    SMA_DC1_korr.postUpdate(if((SMA_DC1_.state as Number) > 4500) 0 else (SMA_DC1_.state as Number))
                            end
                            Die Rule triggert bei Wertänderung. Anschließend wird entschieden, welches der Items die Rule getriggert hat. (Achtung, diese Funktion steht erst sei OH2.3 zur Verfügung. für ältere Versionen muss man prüfen, ob der Wert des jeweiligen Items vom zugehörigen Proxy Item abweicht.)
                            Anschließend wird ein neuer Wert in das passende Proxy Item geschrieben (die verwendete Funktion heißt ternärer Operator), und zwar abhängig vom Wert entweder der Wert selbst oder 0. Die Schwelle für SMA_DC1_ ist vermutlich viel niedriger, aber das kannst Du ja anpassen.

                            Grundsätzlich ist das Casting nach Number dem Casting nach DecimalType vorzuziehen, da aktuelle OH-Versionen sonst nicht wissen, ob Interger oder Float gemeint ist. Dann müsste man also z.B. (SMA_DC1_.state as DecimalType).intValue schreiben, oder den Umweg über eine Variable gehen (wobei openHAB das Casting dann stillschweigend korrekt durchführt...).
                            Zuletzt geändert von udo1toni; 09.08.2018, 11:49.

                            Kommentar


                              #15
                              Hi, das macht absolut Sinn,
                              hätte ich aber ohne deine Hilfe und deine Vorgehensweise in der Rule so niemals hinbekommen

                              Ich habe das so jetzt 1:1 übernommen und darf sagen, dass Ansicht "Tag" schon mal funktioniert. Jetzt warte ich gespannt auf die Nacht und berichte final!
                              Dann ist das ein super Workaround!

                              bis später...
                              eibalinchen

                              Kommentar

                              Lädt...
                              X