Ankündigung

Einklappen
Keine Ankündigung bisher.

Einbindung Wechselrichter: Item für aktuelle Leistung KACO-WR

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

    Einbindung Wechselrichter: Item für aktuelle Leistung KACO-WR

    Hallo,

    zur Steigerung des Eigenverbrauchs habe ich bis jetzt (nur RWE Smart Home) über einen umgebauten Fenstersensor, welcher ab einer bestimmten Leistung am Inverter geschaltet hat, mein Elektroauto geladen. Um die Verbraucher feiner steuern zu können würde ich gerne die aktuelle Leistung meine KACO-WR abfragen. Im Handbuch hier gibt es ja schon ein Kapitel, aber mir stellt sich die Frage, wie ich denn das Item der aktuellen Leistung finde. Habe mir den Seitenquelltext angesehen, aber so wirklich schlau bin ich daraus nicht geworden...

    #2
    Hmm.. schwierig weil ich den Wechelrichter nicht kenne.

    Aber ich spekuliere mal ein wenig ins Blaue: Du hast einen WR der aktuelle Werte über ein Webinterface darstellt? Dann wäre das Http Binding warscheinlich das Mittel der Wahl. Wenn du die Werte über eine XML oder REST Schnittstelle bekommen kannst -> umso besser, dann wird es einfacher.

    Eventuell musst du dann einen Parser verwenden, um den Wert aus den Daten zu isolieren und in openhab an ein Number Item zu binden.

    Schau dir mal die Beispiele für versch. Wetterdienste an, vielleicht kannst du das für dich entsprechend anpassen.

    Kommentar


      #3
      Danke Tulamidan. Muss sagen, dass ich ein Anfänger bin. Bin jetzt wie folgt vorgegangen: (Im osgi erscheint dann auch die Seite des WR im html-Format. Allerdings nicht der gewünschte Wert im Raum Üeberblick, nur das Invertersymbol, Bezeichnung und die Einheit.)

      Im Ordner transform hab ich die Datei Value.js mit Inhalt:

      JSON.parse(input).nowValueIn;

      in openhab.cfg steht

      # configuration of the first cache item
      http:kostal-wechselrichter-cache.url=http://192.168.2.112
      http:kostal-wechselrichter-cache.updateInterval=60000

      in items steht:

      Number Solar_Aktuell "aktuelle Leistung [%.0f W]" <inverter> (UEBERBLICK) { http="<[kostal-wechselrichter-cache:30000:REGEX(.*Value</td>.*?([0-9]*)</td>.*)]" }

      Gehe ich auf die Seite des WR und markiere ich die aktuelle Leistung, wähle dann über rechte Maustatse "Auswahl-Quelltext" an, so erscheint folgendes:

      <tr> <th id="lblValueIn">Netzleistung</th> <td id="nowValueIn">0,08 kW</td> </tr>

      Kommentar


        #4
        Sieht aus, als wärest du auf dem richtigen Weg. Ich glaube deine Regex passt noch nicht ganz, (zwei Mal </td>) und warscheinlich musst du sie noch etwas ausbauen und eifach trial&error eine passende Abfrage zusammenbauen.
        Kannst du herausfinden was dein value.js ergibt?

        fdaVielleicht bekommst du für den WR noch etwas Doku. Gerade ein JSON, XML o.ä. würden das Parsen einfacher machen. Eine html Seite zu parsen ist schon etwas fummelig.

        Kommentar


          #5
          Werde bei Leerlauf mal den Hersteller anschreiben. Oder vielleicht doch gleich einen geeigneten Stromzähler einbauen lassen. Wäre wohl die optimale Lösung.

          Kommentar


            #6
            Sollte die REGEX nicht eher so aussehen?
            Code:
            Number Solar_Aktuell "aktuelle Leistung [%.0f W]" <inverter> (UEBERBLICK) { http="<[kostal-wechselrichter-cache:30000:REGEX(.*<td id=\"nowValueIn\">([0-9].[0-9][0-9]) kW</td>.*)]" }
            Eventuell muss das " auch anders escaped werden. vielleicht wäredann ein . statt dem " ausreichend.
            Zuletzt geändert von udo1toni; 23.07.2015, 11:20.

            Kommentar


              #7
              Danke Udo, funktioniert leider auch nicht. Wenn ich den Wert auslese bekomme ich nur "Wert in Value Solar_Aktuell (Type=NumberItem, State=Uninitialized)"...

              Kommentar


                #8
                Eine weitere Möglichkeit wäre natürlich, dass der Cache erst gar nicht gefüllt wird. Ein erster Versuch könnte also sein, das Item erstmal direkt zu füllen. Weiterhin kannst Du zum Testen den REGEX mal die komplette Seite erfassen lassen (also als Binding zum Item { http="<[192.168.2.112:30000:REGEX((.*))]"} eintragen), dann siehst Du im log, ob das http-Binding richtig arbeitet, es sollte dann im 30-Sekunden-Takt der Seitenquelltext auftauchen.

                Kommentar


                  #9
                  Also das Binding funzt anscheinend, der html-Quelltext erscheint im log. Dann liegt es wohl eher am parsen?

                  Kommentar


                    #10
                    Vermutlich :-) hattest Du auf den Cache zugegriffen?

                    Wenn der html-Quelltext erscheint, musst Du Dich rantasten. z.B. mit REGEX(.*NowValueIn(.*) kW.*) und mal schauen, was dann so übrig bleibt.

                    Kommentar


                      #11
                      HAb auf den Cache zugegriffen. Habe ich bei den Items { http="<[192.168.2.112:30000:REGEX((.*))]"} eingegeben, erschien im Log nichts mehr. Kann aber vielleicht auch am WR liegen bzw. an der Datenübertragung. Der Aufbau der WR-HP dauert sehr sehr lange...
                      Hab schon mehrere Versuche gemacht, komisch ist in meinen Augen, dass unabhängig vom Regex immer der komplette Quelltext im Log erscheint. Ist das immer so und wird nur der Regex-Wert dann als Item gespeichert?

                      Kommentar


                        #12
                        Naja, das Item enthält als Status nachher den extrahierten Zahlenwert. beim Experimentieren mit dem REGEX ist es vermutlich auch gut, das Item als String zu definieren, sonst kannst Du eventuell nicht alles sehen, was im Item gespeichert ist. Ich hab jetzt grad kein Log vom http-Binding vor Augen... wie lautet denn der genaue Log-Text (ohne den html-Quelltext...), was steht unmittelbar vor dem Quelltext, was unmittelbar dahinter?

                        Kommentar


                          #13
                          Also ich hab das Item "test"

                          String test (UEBERBLICK) { http="<[kostal-wechselrichter-cache:300000:REGEX(.*nowValueIn(.*) kW.*)]"}

                          Im Screen UEBERBLICK erscheint nur test, aber keine Anzeige von Werten etc.
                          Im log steht:

                          Wert in Value test (Type=StringItem, State=dann der html-Text

                          Nach dem Ende des Textes kommt nichts mehr. Wenn das Item Test als Number definiert wird, erscheint aber dasselbe. Blöde Frage, aber REGEX sollte eigentlich den gewünschten Wert suchen, oder? Also ich brauche dann nicht mehr eine js-Datei im Ordner transform. Richtig?

                          Kommentar


                            #14
                            Wenn es richtig funktioniert, sollten die .js Dateien unnötig sein.
                            Wenn Du das Item mit
                            String test "Inhalt [%s]" (UEBERBLICK) { http="<[kostal-wechselrichter-cache:30000:REGEX(.*nowValueIn(.*) kW.*)]"}
                            definierst, sollte in der UI auch der Wert angezeigt werden.
                            Eventuell könnte noch die Ergänzung eines Fragezeichens helfen, (.*?)matched auf den kürzesten String, der die Bedingung erfüllt (evtl. taucht ja im weiteren Verlauf des Quellcodes nochmals kW auf...)

                            Mir ist grad aufgefallen, dass Du 300.000 statt 30.000 geschrieben hast. Das Item bekäme dann nur alle 5 Minuten ein Update...
                            Zuletzt geändert von udo1toni; 26.07.2015, 17:15.

                            Kommentar


                              #15
                              Erstmal vielen Dank für Deine Geduld!
                              Das mit den 5 Minuten ist gewollt, da ich die einzelnen Verbraucher nicht zu oft ein- und ausschalten will. Könnte man sicher auch schöner machen indem man die Leistungsschwankungen beobachtet, bzw. erst abschalten lässt wenn die Schwelle für eine gewisse Dauer unterschritten ist, aber das liegt noch in weiter Zukunft.
                              Egal welche Einstellung ich im Item vornehme, im log erscheint immer der komplette Quelltext. In der UI wird immer kein Wert angezeigt. Ich werde in den Ferien versuchen mal von einer anderen HP einen Wert einzulesen.

                              Kommentar

                              Lädt...
                              X