Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Kostal Wechselrichter per HTTP Binding auslesen

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

    [Codebeispiel] - √ - Kostal Wechselrichter per HTTP Binding auslesen

    Hallo,

    das auslesen des Kostal Wechselrichter wie in Folgendem Beispiel beschrieben funktioniert bei mir nicht!

    https://code.google.com/p/openhab-sa...a_HTTP_binding


    Ich bekomme keine Werte zurück geliefert und auch keine Fehlermeldung im Log-File.

    Auszug aus dem HTML Code des Wechselrichters:

    HTML-Code:
    <td width="140">&nbsp</td> <td width="100">   Tagesenergie</td> <td width="70" align="right" bgcolor="#FFFFFF">   37.15</td> <td width="50">&nbsp kWh</td> <td>&nbsp</td></tr>
    Das REGEX sieht wie folgt aus:
    Code:
    REGEX(.*?Tagesenergie</td>.*? (.*?)</td>.*)
    Ideen woran es liegen könnte?

    Auslesen möchte ich die 37,15 kWh.

    PS: Die IP-Adresse und PW habe ich angepasst!


    Gruß
    mepi0011

    #2
    Hallo,

    noch einen Nachtrag!

    Zum Test habe ich das Item in ein String-Item geändert. Nun erhalte ich folgende Rückmeldung (siehe angefügtes Bild).

    Daraus schließe ich, dass das REGEX nicht korekt ist.

    Bitte um Hilfe da ich mich mit REGEX nicht auskenne!
    (siehe https://knx-user-forum.de/openhab/37...tml#post424178)

    Gruß
    mepi0011
    Angehängte Dateien

    Kommentar


      #3
      Das denke ich auch. Versuchs mal mit

      REGEX(.*Tagesenergie<\/td> <td[^>]*> *([\d\.]*).*)

      Ich kann Dir den Online regex tester and debugger: JavaScript, Python, PHP, and PCRE empfehlen. Damit lässt sich eine regulärer Ausdruck recht gut verifizieren und entwickeln. Für eine ganze Reihe von Python-Scripten habe ich den immer gern genutzt. Allerdings weiß ich nicht ob in openHAB ein paar spezielle Eigenheiten beachtet werden müssen. Einen Versuch ist es wert.

      Ich bin sicher dass mein recht kryptisch anmutender Versuch von einem echten Könner deutlich einfacher gestaltet werden kann aber ich bin - zu meiner Verteidigung - auch aus der Übung.

      Kommentar


        #4
        Hallo Reddick,

        vielen Dank für die Hilfe und Bemühungen zur Lösungsfindung.
        Leider erhalte ich bei deinem Vorschlag eine Warnung von openHAB (leider läuft der Designer bei mir nicht).

        Fehlermeldng:
        Code:
        18:58:48.871 WARN  o.o.b.h.i.HttpGenericBindingProvider[:105] - bindingConfig is NULL (item=Solar_Tagesenergie (Type=NumberItem, State=Uninitialized)) -> process bindingConfig aborted!
        Zugehöriges Item:
        Code:
        Number Solar_Tagesenergie     "Tagesenergie [%.2f kWh]"     (Wechselrichter) { http="<[http://pvserver:xxxx@192.168.128.126/index.fhtml:60000:REGEX(.*Tagesenergie</td> <td[^>]*> *([\d\.]*).*)]" }
        Ich habe auch etwas weiter ausprobiert und zwei Änderungen am Original REGEX vorgenommen.

        1.) Das Leerzeichen zwischen .*? (.*?) entfernt, dadurch habe ich schon mal die gewünschte Zahl erhalten.
        Allerdings wenn ich dann das Item in ein Number ändere erhalte ich keinen Wert.
        Ich vermute, dass in dem Zurückgelieferten Wert noch ein nicht sichtbares Zeichen enthalten ist, dass dann nicht als Number interpretiert werden kann.

        2.) Das aktuell beste Ergebnis liefert mir folgendes REGEX:

        REGEX(.*?aktuell</td>.*(.[0-9])</td>.*)

        Allerdings erhalte ich dann nur die letzten zwei Stellen des Wert.
        Auf dem Webinterface wird mir für die Gesamtenergie 195 kWh angezeigt. Zurückgeliefert bekomme ich nur 95!

        Ideen wie ich die Hunderter und sonstige Stellen bekomme?

        Gruß
        mepi0011

        Kommentar


          #5
          Hallo,

          für die Tagesenergie habe ich es hin bekommen.

          Das zugehörige REGEX sieht wie folgt aus:
          Code:
          REGEX(.*Tagesenergie</td>.*?(.\\d\\.\\d*)</td>.*)
          bzw. das gesamte Item:
          Code:
          Number Solar_Tagesenergie     "Tagesenergie [%.2f kWh]"     (Wechselrichter) { http="<[http://pvserver:xxxx@192.168.128.126/index.fhtml:60000:REGEX(.*Tagesenergie</td>.*?(.\\d\\.\\d*)</td>.*)]" }
          Die aktuell Leistung funktioniert noch nicht!!

          Wenn die Anlage keine Sonne hat, schaltet der Wechselrichter aus und die Anzeige für die akt. Energie zeigt XXX an.

          Mein aktuelles REGEX für die akt. Energie sieht wie folgt aus.
          Code:
          REGEX(.*?aktuell</td>.*(.[0-9]?)</td>.*)
          Wie kann ich diesen Fall abfangen?

          Gruß
          mepi0011

          Kommentar


            #6
            Also wenn ich das mit den REGEX richtig verstanden habe...

            REGEX(das fällt weg(das matched)das fällt weg)

            Allgemein steht der . für ein beliebiges Zeichen, wenn ich mich recht erinnere inclusive Leerzeichen. Also dürfte die innere Klammer nicht mit einem . anfangen.
            [0-9] sollte eine beliebige Ziffer sein, der * steht für eine beliebige Anzahl an Wiederholungen der vorhergehenden Zeichengruppe, ein ? für 0 oder ein Vorkommen. Dann sollte der Match doch ([0-9]*.[0-9]*) so aussehen, oder?

            Was jetzt noch stören könnte, wäre ein , statt einem . in der Zahl, weil openHAB das eventuell nicht korrekt umsetzt.

            Kommentar


              #7
              Hallo zusammen,

              in der Zwischenzeit habe ich durch ausprobieren, Internetrecherche sowie die Hilfe von Reddick und udo1toni das Problem gelöst.

              Die Items zum Auslesen der aktuellen Leistung, der Gesamt- und Tagesenergie sehen wie folgt aus:

              Code:
              Number Solar_Aktuell     "aktuell [%.0f W]"     { http="<[http://pvserver:xxxx@192.168.yyy.yyy/index.fhtml:60000:REGEX(.*?aktuell</td>.*?([0-9]*)</td>.*)]" }
              
              Number Solar_Gesamt     "Gesamtenergie [%.0f kWh]"    { http="<[http://pvserver:xxxx@192.168.yyy.yyy/index.fhtml:60000:REGEX(.*?Gesamtenergie</td>.*?(\\d*)</td>.*)]" }
              
              Number Solar_Tagesenergie     "Tagesenergie [%.2f kWh]"     { http="<[http://pvserver:xxxx@192.168.yyy.yyy/index.fhtml:60000:REGEX(.*Tagesenergie</td>.*?([0-9\\.]*)</td>.*)]" }
              Folgendes muss entsprechend der Anlage ersetzt werden!
              xxxx = Passwort der Wechselrichter
              yyy = die IP-Addresse der Wechselrichters

              Das Code-Beispiel auf folgender Seite hat bei mir nicht funktioniert!
              https://code.google.com/p/openhab-sa...a_HTTP_binding

              Gruß
              mepi0011

              Kommentar


                #8
                Hi,

                danke für das Update!

                Zitat von mepi0011 Beitrag anzeigen
                Das Code-Beispiel auf folgender Seite hat bei mir nicht funktioniert!
                das Samples Wiki bei Google-Code wird übrigens lange schon nicht mehr gepflegt. Die aktuellen Beispiel findest Du bei Github unter https://github.com/openhab/openhab/w...a-http-binding.

                Da ihr ja nun die Lösung gefunden habe, wäre es natürlich klasse, wenn ihr das Beispiel gleich korrigieren würdet.

                Vielen Dank und Gruß,

                Thomas E.-E.
                Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                Kommentar


                  #9
                  openHAB Wiki aktualisiert

                  Hallo teichsta,

                  das Wiki ist aktualisiert, zumindest der erste Teil den ich getestet und in diesem Forum veröffentlicht habe.

                  Den Rest werde ich in den nächsten Tagen/Wochen noch nachziehen!

                  https://github.com/openhab/openhab/w...a-http-binding

                  Gruß
                  mepi0011

                  Kommentar


                    #10
                    Zitat von mepi0011 Beitrag anzeigen
                    Den Rest werde ich in den nächsten Tagen/Wochen noch nachziehen!
                    super, danke Dir!
                    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                    Kommentar


                      #11
                      am Wochenende habe ich das KNX Binding für den Wechselrichter mal ausprobiert.
                      Die ersten 3 Werte wurden korrekt angezeigt, aber Spannung, Strom und Leistung blieben leider leer.
                      Jetzt habe ich das Beispiel (siehe Link) so angepasst, wie es bei mir funktioniert und auch den HTTP-Cache verwendet, damit die Seite nicht für jeden einzelnen Wert aufgerufen wird.
                      openhab - Source code of the open Home Automation Bus (openHAB)
                      Zuletzt geändert von WN2012; 15.03.2015, 11:34. Grund: Verweis auf Link

                      Kommentar


                        #12
                        Hallo WN2012,

                        habe es leider noch nicht geschafft, den REGEX Teil zum Auslesen der Spannung,Strom und Leistung zu korrigieren. Werde mir das in den nächsten Tagen anschauen. Sobald ich eine Lösung habe, melde ich mich wieder.

                        Gruß
                        mepi0011

                        Kommentar


                          #13
                          Hallo WN2012,

                          die korrigierte Version findest du nun in der openHAB Wiki:

                          https://github.com/openhab/openhab/w...a-http-binding

                          so wie im deutsch KNX Handbuch:

                          http://openhabdoc.readthedocs.org/de...inverter_HTTP/

                          PS: Viel Spaß beim Visualisieren deiner Solaranlage! :-)

                          Gruß
                          mepi0011

                          Kommentar


                            #14
                            Hallo mepi0011,

                            bin gerade zufällig wieder mal hier gelandet und kann auf deinen Beitrag antworten.
                            Ich habe gar nicht mitbekommen, dass es in diesem Thema wieder neue Einträge gab. Früher wurden automatisch Mails verschickt wenn man in einem Thema mal was geschrieben hatte. Ich muss mal schauen, wo das jetzt versteckt ist..

                            Die Mitte März noch nicht funktionierenden regulären Ausdrücke hatte ich korrigiert und auf Github eingetragen, so wie sie bei mir auch ein richtiges Ergebnis liefern.
                            Beim ersten Versuch mit deinen neuen Ausdrücken hat es bei mir nicht geklappt. Dann fiel mir auf, dass du die Namen auf Englisch hast und auch der Cache-Name entsprechend geändert wurde. Nachdem ich das angepasst hatte, bekam ich mit deinen und meinen Ausdrücken das gleiche Ergebnis.

                            Gruß Hans
                            You do not have permission to view this gallery.
                            This gallery has 2 photos.
                            Zuletzt geändert von WN2012; 22.03.2015, 11:43. Grund: Korrektur

                            Kommentar

                            Lädt...
                            X