VI - Werteerkennung in mehrzeiligem http-call

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • tholle
    MS Profi
    • 26.08.2015
    • 830

    #1

    VI - Werteerkennung in mehrzeiligem http-call

    Moin,

    ich weiss, dass wir das Thema hier schon mehrfach hatten und es genuegend Beispiele hier und im Loxwiki gibt, aber ich kriege es trotzdem nicht hin, aus einer mehrzeiligen http-call-Antwort den richtigen Wert zu filtern.

    Vielleicht kann mir mal jemand kurz auf die Spruenge helfen.

    Ich suche nach dem Wert: HUB_IS_OFF

    Die Antwort meines http-Calls sieht wie folgt aus:

    [{"hub":"harmonyhub","activity":{"label":"PowerOff" ,"suggestedDisplay":"Default","id":-1,"activityTypeDisplayName":"Default","controlGrou p":[],"tuningDefault":false,"fixit":{"61446068":{"id":" 61446068","power":"OFF","alwaysOn":false,"relative Power":true},"26570928":{"id":"26570928","power":" OFF","alwaysOn":false,"relativePower":false},"2657 0935":{"id":"26570935","power":"OFF","alwaysOn":fa lse,"relativePower":false},"54902201":{"id":"54902 201","power":"OFF","alwaysOn":false,"relativePower ":true},"26570949":{"id":"26570949","power":"OFF", "alwaysOn":false,"relativePower":true},"37572192": {"id":"37572192","power":"OFF","alwaysOn":false,"r elativePower":true},"40336424":{"id":"40336424","p ower":"OFF","alwaysOn":false,"relativePower":false }},"type":"PowerOff","icon":"Default","status":"HU B_IS_OFF"}}]

    Der gesuchte Wert steht am Ende. In der Loxconfig geht die Antwort ueber 4 Zeilen, weswegen ich mit folgendem Muster suche:

    \n\n\n\i"status":"\i\v (siehe Screenshots)

    dummerweise aber nichts finde.

    Ich habe natuerlich schon diverse Kombinationen getestet, bekomme aber immer nur den Wert 0.0 heraus.

    Was genau mache ich an dieser Stelle falsch?

    Vielen Dank und Gruss,
    tholle

  • AlexAn
    Lebende Foren Legende
    • 25.08.2015
    • 4338

    #2
    kommt bei der Befehlserkennung eine andere Zahl bei ON und OFF
    Befehlserkennung: Hub B_IS_O\h oder
    Hub B_IS_O\1

    ON und OFF ist eine Text und den kann er nicht auswerten
    Zuletzt geändert von AlexAn; 17.02.2019, 14:13.
    Grüße Alex

    Kommentar

    • hismastersvoice
      Supermoderator
      • 25.08.2015
      • 7321

      #3
      Ich würde in dem Fall 2 Eingänge anlegen wenn es nur um ON/OFF geht.

      z.B.:
      \i\i\i"status":"\i\HU B_IS_OFF
      \i\i\i"status":"\i\HU B_IS_ON

      Diesen dann über ein RS-Glied setzten oder rücksetzen lassen.
      Kein Support per PN!

      Kommentar

      • svethi
        Lebende Foren Legende
        • 25.08.2015
        • 6320

        #4
        Wie Alex schon sagt, Text kann bekanntlich nicht ausgewertet werden. Du könntest als Digitaleingang einmal nach HUB_IS_ON und einmal nach HUB_IS_OFF suchen und bekommst dann einen entsprechenden Impuls. Oder Du nimmst HUB_IS_O\1 damit liest Du den Bytewert von N oder F aus und müsstest den mit dem ASCII Code vergleichen. Wie Du schon sagst, das wurde of genug an Beispielen demonstriert
        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

        Kommentar

        • romildo
          Lebende Foren Legende
          • 25.08.2015
          • 5161

          #5
          Hallo,
          HUB_IS_ON, HUB_IS_OFF funktioniert leider nicht.
          Was kannst Du machen:
          Wenn Beispielsweise für EIN "HUB_IS_ON" und für AUS "HUB_IS_OFF" kommt kannst Du in die Befehlserkennung HUB_IS_O\1 schreiben.
          Den Eingang hängst Du an einen Statusbaustein in welchem Bedingung 78 für ON und Bedingung 70 für AUS eingetragen ist.
          lg Romildo

          Kommentar


          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Hättest Du denn Deinen Eingang auf digital gestellt?

          • romildo
            romildo kommentierte
            Kommentar bearbeiten
            HTTP-Eingang auf Digital?

          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Stimmt ja, ist ja http. Nee, dann geht auch der Impuls nicht, ist auch klar
        • tholle
          MS Profi
          • 26.08.2015
          • 830

          #6
          Danke fuer die Beispiele und Erklaerungen. Wirklich verstehen tue ich sie allerdings nicht, glaube ich.
          Ich habe mich vornehmlich an Christians Beispiel im Loxwiki gehalten. Im Abschnitt "Fehlersuche" sucht er doch auch nach Text oder interpretieren ich das falsch.
          Wenn ich das Beispiel richtig verstehe, muesste in diesem Fall in "v" der Wert "false" stehen oder irre ich mich da?

          Zurueck zu meinem Beispiel: Leider koennen hinter "state" auch andere Werte stehen. z.B. "status":"ACTIVITY_IS_STARTED", ich brauche aber eine Moeglichkeit auf "HU B_IS_OFF" zu pruefen.

          Wie koennte ich das pruefen? Auch mit einem Wertebyte auf den Buchstaben "H" oder denke ich hier auch falsch?

          Gruss,
          tholle

          Kommentar

          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7321

            #7
            Mal blöd gefragt...
            Es geht doch um den Harmony Hub, oder?
            Warum nutzt du nicht MQTT das wäre doch einfacher.


            🗼 A simple server allowing you to query/control multiple local Harmony Home Hubs over HTTP or MQTT - maddox/harmony-api

            Kein Support per PN!

            Kommentar


            • tholle
              tholle kommentierte
              Kommentar bearbeiten
              ist nocht bloede gefragt.. und ja, es handelt sich um einen Harmony Hub. Mit MQTT habe ich mich bis jetzt ueberhaupt noch gar nicht beschaeftigt. Nie Zeit fuer irgendewas. Ich bin schon froh, wenn ich ab und an mal Zeit finde, meine Baustellen abzuarbeiten.

            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              Ich mich auch nicht, bis vor letzte Woche als ich in USA wieder mal viel Zeit hatte zum lesen bei den ganzen Flügen.
              Halte das ganz Protokoll für sehr interessant.
              Hab zum Test mal meine CO² Sensoren umgeschrieben (ESP8266) und die Integration in die Config ich recht einfach.
              Vorteil... Jeder Sensor oder was auch immer kann dann nicht nur mit MiniServer sondern auch mit ioBroker genutzt werden.
              Was mir aber gefällt ist viel mehr das die Sensoren sehr einfach untereinander reden können ohne das viel Code oder der MiniServer benötigt wird.
          • svethi
            Lebende Foren Legende
            • 25.08.2015
            • 6320

            #8
            In meinem und romildo‘s Beispiel wird nach HUB_IS_O gesucht und dann der Wert des nächsten Bytes zurückgegeben. Das sollte dann N bei ON und F bei OFF sein. Das vergleichst Du dann
            Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

            Kommentar

            • tholle
              MS Profi
              • 26.08.2015
              • 830

              #9
              Ich habe es jetzt so geloest, dass ich nach dem "H" von "HUB_IS_OFF" suche. Da kommt ein bestimmter Zahlenwert raus. Damit kann ich etwas anfangen, weil alle anderen Moeglichkeiten, die an Stelle von "HUB_IS_OFF" stehen koennten, nicht mit einem "H" beginnen. "HUB_IS_ON" gibt's in diesem Kontext nicht.

              Mit MQTT habe ich mich gestern noch etwas beschaeftigt und viel drueber gelesen. Da eroeffnet in der Tat viele neue Moeglichkeiten bzgl. der Kommunikation zwischen MS und anderen, loxonefremden Geraeten.

              Da kommen mit schon wieder 1000 Ideen, alle meine muehsam gebauten Python-Implementationen umzubauen, zu vereinfachen und zu rationalisieren. Aber erst, wenn ich Zeit dafuer finde.

              Vielen Dank euch!

              Gruss,
              tholle

              Kommentar

              • uli
                LoxBus Spammer
                • 30.08.2015
                • 225

                #10
                Du willst doch eigentlich den aktuellen Zustand des Hub in Loxone haben, oder? Und die Rückmeldung wird von der HA-Bridge übergeben?

                Falls ja, kannst Du einfach einen Webhook in Ha-Bridge die aktuelle ID ( ${activity.id} ) als Zahl senden lassen. Dann ist -1 der Zustand "Aus". Funktioniert bei mir einwandfrei.

                Kommentar

                Lädt...