Ankündigung

Einklappen
Keine Ankündigung bisher.

Virtueller HTTP eingang

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

  • Virtueller HTTP eingang

    Hallo Liebe Lox Gemeinde.

    ich hätte mal eine frage zu einem virtuellen http eingang und zwar,
    wenn ich die seite aufrufe bekomme ich diese infos geliefert:

    [{"cid":"PWER","data":[{"1905589298000":0}],"sid":"743605","units":"kWm","age":14},{"cid":"PW ER","data":[{"1905589962000":441}],"sid":"745739","units":"kWm","age":0},{"cid":"PWE R_SUB","data":[{"1905599250000":416}],"sid":"796099","units":null,"age":12}]

    so nun meine frage, wie müsste jetzt die befehlserkennung aussehen wenn ich diesen wert da stellen wollte:
    .........................{"cid":"PWER_SUB","data":[{"1505589250000":416}], .................................

    also ich möchte gerne 416 darstellen und anzeigen.
    Zur Info, es handelt sich um einen efergy energie zähler und der wert 416 wären die aktuellen W.

    Vielen Dank.



  • #2
    Versuchen -

    \i"PWE R_SUB"\i\i"data"\i\#": \v

    oder

    \i"PWE R_SUB"\i\i"data"\i\i\#": \i\v

    oder

    \i"PWE R_SUB"\i\i"data"\i\i"\#": \i\v

    Keine leerzeichen überall außer zwischen dem doppelpunkt und \v oder \i\v (und PWE und R_SUB?)
    Zuletzt geändert von Tico; 17.09.2017, 00:47.
    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

    Kommentar


    • #3
      Also ich sehe da kein Leerzeichen zwischen : und 416. Des Weiteren braucht man die erste Suche auch nicht in \i's einpacken.

      PWE R_SUB,"data":[{"#":\v sollte also wesentlich effizienter sein.

      Gruß Sven
      Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

      Kommentar


      • #4
        Ich bin mir nicht sicher welche infos denn geliefert werden, da einmal "PWE R" mit Leerzeichen und einmal "PWER" ohne Leerzeichen in Deiner Frage steht.
        Die Befehlserkennung muss genau dem entsprechend was da auch kommt.

        Ich hätte jetzt auch angenommen, dass die Befehlserkennung von svethi funktioniert.
        Bei mir in der V8.3.3.21 funktionierte das # jedoch nicht, daher mein Vorschlag:
        "PWER_SUB","data":\i:\i\v
        wenn es wirklich mit Leerzeichen kommt
        "PWE R_SUB","data":\i:\i\v
        oder, wenn 'SUB",data":' nur einmal vorkommt, auch nur
        SUB","data":\i:\i\v
        lg Romildo

        Kommentar


        • romildo
          romildo kommentierte
          Kommentar bearbeiten
          Ja, ich hatte das \ vor dem Rautezeichen auch vergessen.
          Dein letzter Versuch war aber fast schon richtig Doch da fehlt noch ein ".
          Aber so funktioniert es:
          PWER_SUB","data":[{"\#":\v

        • svethi
          svethi kommentierte
          Kommentar bearbeiten
          hmm ... werd wohl langsam alt :-)

        • romildo
          romildo kommentierte
          Kommentar bearbeiten
          Es eilt ja nicht

      • #5
        Hallo,
        vielen dank für die zahlreichen infos und vorschläge.

        habe jetzt alle mal getestet, der einzige der mir denn wert anzeigt ist:

        "PWER_SUB","data":\i:\i\v

        Da es im aber eigentlich 3 zähler sind ist meine nächste frage wie kann ich die dann darstellen.
        mit dem "PWER_SUB","data":\i:\i\v wird mir jetzt der zähler mit der SID ,"sid":"796099"
        angezeigt.

        Ich habe mal einen tokken fürs forum erstellt auf den ihr zugreifen könnt:



        wobei :[{"1505640250000":0}],"sid":"743405"
        noch 0 ist weil der zähler im monent nicht aktiv ist.

        1000 Dank ihr seid die besten

        lg mike

        Kommentar


        • #6
          Du suchst einfach nach etwas was immer gleich ist und vor dem eigentlichen Wert liegt.
          Wenn die lange Zahl immer gleich ist dann kannst Du direkt nach dieser suchen.
          Beispiel:
          Wert 1: PWER","data":[{"1505643250000":\v
          Wert 2: PWER","data":[{"1505643244000":\v
          usw.

          Wenn die "sid" immer gleich ist, könntest du zuerst die "sid" davor suchen dann den Text vor dem eigentlichen Wert.
          Beispiel:
          Wert 1: PWER","data":\i:\i\v
          Wert 2: "sid":"743405"\iPWER","data":\i:\i\v
          Wert 3: "sid":"745539"\iPWER","data":\i\i:\i\v

          Hoffe es ist verständlich.
          Zuletzt geändert von romildo; 17.09.2017, 13:05.
          lg Romildo

          Kommentar


          • #7
            Hallo,

            bin einfach zu doof denke ich für die auswertung,

            PWER","data":[{"1505643250000":\v geht leider nicht da sich dieser wert leider immer ändert, habe noch nicht geraft für was der steht.

            mit der sid,
            die steht ja leider eigentlich erst nach dem wert den ich auslesen will.

            mit "PWER","data":\i:\i\v würde gehen da das der erste wert ist.
            mit "PWER_SUB","data":\i:\i\v würde auch gehen da das der letzte wert ist

            aber komme nicht auf den mittleren wert, bzw. fals ich mal mehrere einsetzte bringt das ganze so auch nichts.

            sorry


            Kommentar


            • romildo
              romildo kommentierte
              Kommentar bearbeiten
              Der zweite Wert kommt ja immer nach der sid des ersten Wertes.
              Also suchst Du nach dem sid des ersten Wertes und danach nach dem Wert vor dem zweiten sid.

              Beispiel zusammensetzen der Befehlserkennung:
              "sid":"743405" -> springt hinter die sid des ersten Wertes
              \iPWER","data":\i -> springt hinter den : nach ...data"
              \i:\i -> springt hinter den folgenden : direkt vor den Wert 2
              Somit müsste folgende Befehlserkennung den zweiten Wert anzeigen:
              "sid":"745539"\iPWER","data":\i\i:\i\v

          • #8
            Habe es auf:

            "sid":"743405"\iPWER","data":\i\i:\i\v
            geändert jetzt geht es.

            Mir ist nur nicht ganz klar wieso \iPWER"
            wo liegt der unterschied zwischen "PWER","data":\i:\i\v und \iPWER","data":\i\i:\i\v

            Vielen DANK

            Kommentar


            • #9
              Für die Suche nach dem ersten Text muss nichts Spezielles mitgeteilt werden.
              Für einen Folgetext muss dieser aber zwischen \i und \i liegen. Also \iText\i
              Siehe Loxone Dokumentation.

              \iPWER_SUB","data":\i zu Beginn der Suche würde natürlich auch gefunden, PWER_SUB","data": als Folgetext hingegen nicht.
              Zuletzt geändert von romildo; 17.09.2017, 15:02.
              lg Romildo

              Kommentar


              • #10
                Hallo will mich hier nochmal ran hängen.

                Ich lese meine Stiebel Eltron LWZ504 per FHEM und THZ Plugin aus.

                Geschafft habe ich die einzelnen Werte zb von "sGlobal" per virtuellen HTTP Befehl in die Loxone einzulesen.


                PHP-Code:
                  </table></td></tr> </table> </div> </div> <div id="hdr"> <table border="0" class="header"><tr><td style="padding:0"> <form method="post" action="/fhem"> <input type="hidden" name="fw_id" value="500"/> <input type="text" name="cmd" class="maininput" size="40" value=""/> </form> </td></tr></table> </div> <div id='content' outsideTemp9.4 flowTemp29.3 returnTemp25.9 hotGasTemp50.8 dhwTemp45.7 flowTempHC2: -60 evaporatorTemp6.5 condenserTemp28.5 mixerOpen0 mixerClosed0 heatPipeValve0 diverterValve0 dhwPump0 heatingCircuitPump1 solarPump0 compressor1 boosterStage30 boosterStage20 boosterStage10 highPressureSensor0 lowPressureSensor0 evaporatorIceMonitor1 signalAnode0 evuRelease1 ovenFireplace0 STB0 outputVentilatorPower40 inputVentilatorPower40 mainVentilatorPower50 outputVentilatorSpeed17 inputVentilatorSpeed29 mainVentilatorSpeed18 outside_tempFiltered9.2 relHumidity0 dewPoint0 P_Nd8.49 P_Hd18.16 actualPower_Qc2105.782 actualPower_Pel467.582 collectorTemp: -60 insideTemp: -60  </div> </body></html


                Jetzt hätte ich es mit einem anderen Wert versucht, der aus einem neuen HTTP Eingang Empfangbar sein soll.

                also habe ich einen neuen "Virtuellen HTTP Eingang" erstellt und das "sGlobal" durch "sElectrHCDay" ersetzt.

                PHP-Code:
                  </tr> </table></td></tr> </table> </div> </div> <div id="hdr"> <table border="0" class="header"><tr><td style="padding:0"> <form method="post" action="/fhem"> <input type="hidden" name="fw_id" value="1097"/> <input type="text" name="cmd" class="maininput" size="40" value=""/> </form> </td></tr></table> </div> <div id='content' 3745 Wh  </div> </body></html 
                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 
Ansichten: 0
Größe: 53,3 KB
ID: 123329

                jetzt weiß ich nicht was ich bei der "Befehlserkennung" im HTTP Befehl eingeben muss, da im Quelltext der Wert ohne vorherigen Text angegeben wird.
                mit nur \v funktioniert es leider nicht

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Dazu sollte man schon wissen welchen Wert Du genau einlesen möchtest. Ich vermute mal die Wh?
                  Nur \v kann nicht gehen da ja kein Wert an erster Stelle des Script steht. Du musst schon zuerst genau nach dem Suchen was immer direkt vor dem Wert steht.
                  Wenn dieser Text mehrfach im Script vorhanden ist, dann musst Du auch mehrfach suchen.
                  Für die Wh kannst Du diese Befehlserkennung versuchen, aber genauso wie im Script mit allen Leer- und Sonderzeichen.
                  id='content' > \v

              • #11
                oh tut mir leid, das habe ich vergessen zu erwähnen was ich genau suche.

                Ja es sind die "3745" Wh.

                In der HTML steht nur einmal dieser Wert, genauso wie ich den Ausschnitt gepostet habe.

                Danke, leider zeigt mir die Lox auch mit dem "id='content' > \v" nichts an
                habe es auch schon so wie in der LoxDoku beschrieben "\iid='content' >\i\v" probiert, aber da zeigt es leider auch nichts an...

                Gruß
                Philipp

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Versuch mal
                  value="\v
                  und sag mir was da kommt.

              • #12
                hier zeigt es mir eine Zahl an, aktuelle"1579", diese wird alle 10 Sekunden um 1 erhört, ich denke so so wie ich den Abfragezyklus zu test Zwecken eingestellt habe
                Zuletzt geändert von Philipp_b; 24.10.2017, 11:45.

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Sofern die ankommende Zahl mit derjenigen von der HTML Datei übereinstimmt, wäre dies schon mal ein Zeichen, dass es grundsätzlich lesbar ist.
                  Kannst Du kontrollieren ob die Zahl in der HTML Datei hinter
                  "hidden" name="fw_id" value="
                  identisch zu der in Loxone ist?

              • #13
                ist identisch

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Dann sollte
                  id='content' > \v
                  aber eigentlich schon funktionieren, ausser es steht nicht genauso in der HTML-Datei.
                  Schau doch mal welcher Wert bei
                  id='content' > \1
                  rauskommt.

              • #14
                Zeigt leider nichts an...

                die HTML Datei sieht wie folgt aus:
                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: html.JPG
Ansichten: 519
Größe: 404,9 KB
ID: 123361
                Angehängte Dateien

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Mit einem Bild kann ich nichts anfangen ich müsste da schon wissen was genau kommt.
                  Und was kommt wenn du
                  id='content' \1
                  eingibst
                  Dann sollte eigentlich der Hexwert für das > Zeichen gemäss ASCII Tabelle kommen.
                  Möglicherweise sind da noch Zeichen zwischen > und dem Wert.
                  Versuch dich mal anzutasten.
                  mit
                  37\v sollte er ja die Zahl hinter 37 finden also im Beispiel 45

                  Ich muss leider für ca. 2 Std. weg. Danach kann ich weiterhelfen.
                  Viel Glück.

              • #15
                wenn ich id='content' \1 eingebe, dann kommt die Zahl 62 dabei raus.
                bei 37\v zeigt er mir die 45 an

                ok, ich muss jetzt auch noch einkaufen fahren, aber danke schon mal für deine Hilfe!!!
                Zuletzt geändert von Philipp_b; 24.10.2017, 12:33.

                Kommentar

                Lädt...
                X