Ankündigung

Einklappen
Keine Ankündigung bisher.

[gelöst] Heizungssteuerung auslesen mit HTTP-Binding

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

    #16
    Zitat von atmosest Beitrag anzeigen
    Würde REGEX(.*Raum(.*)eratur.*) - so ungefähr passen ? sollte dann "temp" rauskommen, oder?
    Ja, das müsste eigentlich funktionieren.

    Es könnte nötig sein, den Backslash zum escapen doppelt anzugeben, dann wäre die REGEX folgendermaßen:
    Code:
    REGEX(.*Raumtemperatur..\\r(-?[0-9]+.[0-9]).°C.*)
    Eventuell mag er das °-Zeichen nicht, könnte man aber in der REGEX auch mit einem . ersetzen.
    Ich hab noch -? ergänzt, das bedeutet, dass dort 0 oder 1 Minuszeichen stehen könnten (wegen möglicher negativer Temperaturen, im Raum hoffentlich nicht, aber eventuell für den Außenfühler wichtig.)

    Im Screenshot sieht es ja so aus, als wäre die Temperatur eingerückt. Eventuell könntest Du die Datei mal in einem gescheiten Editor öffnen (z.B. Notepad++), nur um sicherzugehen, welche und wieviele Zeichen da vor dem Temperaturwert wirklich stehen (dazu Steuerzeichen und Leerzeichen anzeigen lassen)

    Kommentar


      #17
      Nach Raumtemperatur ist ein blank, danach der Doppelpunkt, danach CR und LF
      In der nächsten Zeile ist ein Leerzeichen und dann der Wert, danach wieder zwei Leerzeichen und dann der "°C" wieder zwei Leerzeichen und CR sowie LF
      Gubt es keine Möglichkeit zu prüfen, ob irgendwas von der Webseite zurückkommt ?
      Danke

      Kommentar


        #18
        Zitat von atmosest Beitrag anzeigen
        Gibt es keine Möglichkeit zu prüfen, ob irgendwas von der Webseite zurückkommt ?
        Na sicher, Du setzt einfach die REGEX auf ((.*)) und schaust auf das string item (siehe https://knx-user-forum.de/forum/supportforen/openhab/838317-gel%C3%B6st-heizungssteuerung-auslesen-mit-http-binding?p=891290#post891290)

        Da beim Zahlenwert mehrere Leerzeichen drin waren, konnte die REGEX unmöglich matchen. Wenn grundsätzlich was ankommt (siehe oben), könnte die korrekte REGEX so aussehen:
        Code:
        REGEX(.*Raumtemperatur.*\\r\\n.(-?[0-9]+.[0-9])...C.*)

        Kommentar


          #19
          Eben..... da kommt gar nix. Das mit dem CGI File haut genau so wenig hin wie die komische .....schema.html#4.
          Hast du eine Idee welche Möglichkeit es sonst noch gibt ??

          Kommentar


            #20
            Hi, jetzt geb ich endgültig auf.
            ch hab jetzt ein paar Werte zum test auf die Startseite ".....8080/schema.html" verschoben, damit das Problem mit der Nummer hinten nach gelöst ist. Screenshot ist angehängt.

            Dann hab ich den REGEX nochmals angepasst :
            Number Je_test2 "nochwat: [%.1f C]" <temperature> { http="<[http://user:pw@10.0.0.100:8080/schem...p3.*\\r\\n.(-?[0-9]+.[0-9])...C.*)]" }

            Leider nix... :-(

            Angehängte Dateien

            Kommentar


              #21
              Und das http-Binding hast Du im addons-Ordner? Nur mal so, um an Anfang zu beginnen...

              Kommentar


                #22
                Das ist eine gute Frage.. Ich vermute schon.
                Das Auslesen der Daten von meinem Wechselrichter funktioniert im Prinzip ganz gleich.
                So wie hier beschrieben : https://openhabdoc.readthedocs.org/d...inverter_HTTP/

                Nachdem das super funktioniert, hab ich das openhab.cfg und das XXX.items einfach entsprechend angepasst.

                Muss ich da noch was anderes berücksichtigen ? Wundern würde es mich nicht...
                Danke

                Kommentar


                  #23
                  Also, wenn Du Werte vom Wechselrichter auslesen kannst, funktioniert das http-Binding ja augenscheinlich. Wenn Du als REGEX ((.*)) einträgst, müsste das zugehörige Item dann aber auch auf jeden Fall Inhalt aufweisen.

                  Kommentar


                    #24
                    Ich hab jetzt versucht den Wechselrichter auszulesen und den ganzen Inhalt als String darzustellen. Ich hab ds Ergebnis als Screenshot im Anhang.

                    Folgendes funktioniert: --> Ergebnis 3,28
                    Number Solar_Tagesenergie "Ertrag (am Tag) [%.2f kWh]" <energy> { http="<[kostal-wechselrichter-cache:30000:REGEX(.*Tagesenergie</td>.*?([0-9\\.]*)</td>.*)]" }

                    Folgendes funktioniert nicht
                    string Je_test3 "kostal [%s]" <inverter> { http="<[kostal-wechselrichter-cache:30000:REGEX((.*))]" }

                    Funktioniert das mit String so nicht ?
                    Angehängte Dateien

                    Kommentar


                      #25
                      In der Item-Definition musst Du vorne String schreiben, nicht string

                      Kommentar


                        #26
                        Hi, Das ist natürlich ein Klasiker. Auf das hab ich nicht geachtet.
                        Jetzt sprudelt so einiges daher.
                        Jetzt versuch ich wieder mit der Heizungssteuerung.
                        Danke nochmals für deine Hilfe!!!

                        Kommentar


                          #27
                          Hi
                          Ich hab jetzt die HTML Seite etwas angepasst, damit ich vorher und nach dem Wert etwas zum abfragen habe
                          Der Inhalt kommt jetzt folgendermassen daher
                          Raumtemperatur 21,3rt

                          Wenn ich mit "String" die "21,3" rausschneide funktioniert das bereits.
                          Ich möchte den Wert aber doch als Zahl auslesen. Ich vermute, wenn ich später den Wert weiterverabrbeiten möchte ist es besser wenn es als Zahl definiert ist.
                          Ich probier jetzt schon ein bisschen mit allen möglichen Varianten umher, komm aber nicht zum Ziel :-(

                          REGEX(.*Raumtemperatur.*?([0-9]+.[0-9])rt.*)]" } --> bringt leider kein Ergebnis
                          REGEX(.*Raumtemperatur.*?([0-9])rt.*)]" } --> bringt 3,0 als Ergebnis als nur die Nachkommastelle als ganze Zahl
                          Ich komm nicht dahinter wie der Regex aussehen muss.....

                          Danke für die Hilfe



                          Kommentar


                            #28
                            REGEX(.*Raumtemperatur.*?([0-9,]*)rt.*)]" } müsste matchen.

                            das Problem mit der Nachkommastelle und der Zahl wird aber sein, dass openHAB als dezimaltrenner einen Punkt annimmt, kein Komma. Ich meine, mal ein Transformation-Script gesehen zu haben.

                            Kommentar


                              #29
                              Da hast du recht.Muss ich mich mal im Forum schlau machen.
                              Danke für die Hilfe

                              Kommentar


                                #30
                                ich hab mal meine erfahrungen zusammengefasst. inklusive der rules zum umwandeln des kommas in einen punkt.
                                Meine Heizung wird von einer UVR 1611 der Technischen Alternative aus Östereich gesteuert. Zu dieser Steuerung gab es einen sogenannten Bootloader bzw.

                                Kommentar

                                Lädt...
                                X