Behlserkennung auf HTTP-Eingang

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

    #1

    Behlserkennung auf HTTP-Eingang

    Ich versuch grad über die Befehlserkennung eines HTTP-Eingangs einen Wert abzugreifen:

    Code:
    {"wifi_sta":{"connected":true,"ssid":"IOT","ip" :"x .x.x.x","rssi":-45},"cloud":{"enabled":false,"connected":false},"m qtt":{"connected":false},"time":"08:02","unixtime " :1602748949,"serial":12,"has_update":false,"mac":" 40F520042137","cfg_changed_cnt":8,"actions_stats": {"skipped":0},"relays":[{"ison":true,"has_timer":false,"timer_started": 0," timer_duration":0,"timer_remaining":0,"source":"ht tp"}],"meters":[{"power":0.00,"is_valid":true}],"inputs":[{"input":0,"event":"","event_cnt":0}],"ext_sensors":{},"ext_temperature":{},"ext_hum idi ty":{},"update":{"status":"idle","has_update":fa ls e,"new_version":"20200827-065344/v1.8.3@4a8bc427","old_version":"20200827-065344/v1.8.3@4a8bc427"},"ram_total":51112,"ram_free":392 44,"fs_size":233681,"fs_free":150851,"uptime":428 1 2}
    Aus diesem Status soll "ison":true/false abgefragt werden.
    Ich hab bereits mit folgender Erkennung versucht die Werte true/false zu bekommen: \i[{"ison":\i\v
    Leider bekomm ich das nicht raus.
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11238

    #2
    Schau dir mal das mit \1 unten in den Tipps und Hinweisen an:
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar

    • anemac
      Dumb Home'r
      • 18.09.2015
      • 28

      #3
      Hallo,
      ich reaktiviere diesen Thread, da auch ich eine Frage zur Befehlserkennung auf einem HTTP-Eingang habe.
      Ich habe aktuell in einem JSON eines Wetterdienstes das Problem, dass die API sich verändernde Strings produziert und ich mit dem Befehl \ixxx\i nicht wirklich weiterkomme. Denn meine Befehlserkennung erkennt nicht einen etwaigen Niederschlag von morgen (den ich in der Loxone haben möchte) sondern den in x Tagen (da im String dort das erste Mal "snow" vorkommt).

      Hier die Info der Webseite, ein bisschen formatiert damit man den Aufbau leichter erkennt...
      Ich möchte aus dem "daily"-Teil etwaige "rain" und "snow"-Werte abfragen. Diese sind aber nur "wenn benötigt" vorhanden . Somit greift meine Logik für einen gewissen Tag eine Info abzufragen nicht (e.g. \i"daily":\i\i"dt":\i\i"snow":\i\v) bzw. nicht richtig...

      Code:
      {"lat":xx.03,"lon":yy.48,"timezone":"Europe/Vienna","timezone_offset":3600,
      "current":{"dt":1609320967,"sunrise":1609310638,"s unset":1609340953,"temp":3.31,"feels_like":-0.66,"pressure":1003,"humidity":86,"dew_point":1.2 ,"uvi":0.47,"clouds":20,"visibility":10000,"wind_s peed":3.1,"wind_deg":360,"weather":[{"id":801,"main":"Clouds","description":"Ein paar Wolken","icon":"02d"}]},
      "daily":[{"dt":1609322400,"sunrise":1609310638,"sunset":160 9340953,"temp":{"day":3.97,"min":1.47,"max":5.71," night":1.47,"eve":3.13,"morn":2.41},"feels_like":{ "day":1.26,"night":-2.02,"eve":0.18,"morn":-0.53},"pressure":1003,"humidity":80,"dew_point":0. 84,"wind_speed":1.21,"wind_deg":307,"weather":[{"id":500,"main":"Rain","description":"Leichter Regen","icon":"10d"}],"clouds":59,"pop":0.81,"rain":2.02,"uvi":0.53} ,
      {"dt":1609408800,"sunrise":1609397041,"sunset":160 9427406,"temp":{"day":3.7,"min":0.42,"max":4.32,"n ight":0.42,"eve":1.64,"morn":0.72},"feels_like":{" day":-0.33,"night":-2.46,"eve":-0.67,"morn":-2.99},"pressure":1010,"humidity":75,"dew_point":-0.62,"wind_speed":2.86,"wind_deg":334,"weather":[{"id":803,"main":"Clouds","description":"Überwiege nd bewölkt","icon":"04d"}],"clouds":80,"pop":0,"uvi":0.69},
      {"dt":1609495200,"sunrise":1609483440,"sunset":160 9513861,"temp":{"day":1.71,"min":-0.62,"max":2.74,"night":-0.6,"eve":0.15,"morn":-0.26},"feels_like":{"day":-1.3,"night":-3.47,"eve":-3.06,"morn":-2.67},"pressure":1010,"humidity":87,"dew_point":-0.81,"wind_speed":1.42,"wind_deg":47,"weather":[{"id":804,"main":"Clouds","description":"Bedeckt", "icon":"04d"}],"clouds":96,"pop":0,"uvi":0.68},
      {"dt":1609581600,"sunrise":1609569837,"sunset":160 9600319,"temp":{"day":4.29,"min":-0.47,"max":5.42,"night":4.65,"eve":4.76,"morn":1.5 8},"feels_like":{"day":-0.49,"night":0.21,"eve":0.33,"morn":-1.69},"pressure":1013,"humidity":83,"dew_point":1. 74,"wind_speed":4.36,"wind_deg":140,"weather":[{"id":500,"main":"Rain","description":"Leichter Regen","icon":"10d"}],"clouds":100,"pop":0.67,"rain":2.77,"uvi":0.5} ,
      {"dt":1609668000,"sunrise":1609656231,"sunset":160 9686780,"temp":{"day":3.52,"min":1.61,"max":4.75," night":1.67,"eve":2.61,"morn":4.18},"feels_like":{ "day":-1.65,"night":-1.79,"eve":-1.22,"morn":-0.16},"pressure":1008,"humidity":93,"dew_point":2. 5,"wind_speed":5.12,"wind_deg":112,"weather":[{"id":616,"main":"Snow","description":"Regen und Schnee","icon":"13d"}],"clouds":100,"pop":1,"rain":8.12,"snow":1.26,"uvi ":0.21},
      {"dt":1609754400,"sunrise":1609742622,"sunset":160 9773242,"temp":{"day":1.55,"min":0.89,"max":3.07," night":3.07,"eve":1.46,"morn":1.37},"feels_like":{ "day":-2.36,"night":-0.27,"eve":-1.89,"morn":-2},"pressure":1012,"humidity":84,"dew_point":-2.92,"wind_speed":2.57,"wind_deg":2,"weather":[{"id":804,"main":"Clouds","description":"Bedeckt", "icon":"04d"}],"clouds":100,"pop":0.15,"uvi":1},
      {"dt":1609840800,"sunrise":1609829011,"sunset":160 9859707,"temp":{"day":4,"min":2.81,"max":6.02,"nig ht":3.54,"eve":4.77,"morn":3.79},"feels_like":{"da y":-1.97,"night":-1.28,"eve":-0.81,"morn":-1.82},"pressure":1014,"humidity":82,"dew_point":1. 35,"wind_speed":5.96,"wind_deg":155,"weather":[{"id":500,"main":"Rain","description":"Leichter Regen","icon":"10d"}],"clouds":100,"pop":0.38,"rain":0.27,"uvi":1},
      {"dt":1609927200,"sunrise":1609915396,"sunset":160 9946173,"temp":{"day":2.19,"min":0.47,"max":4.16," night":2.5,"eve":4.16,"morn":1.42},"feels_like":{" day":-0.41,"night":-2.22,"eve":-0.44,"morn":-1.4},"pressure":1020,"humidity":82,"dew_point":-2.08,"wind_speed":0.77,"wind_deg":13,"weather":[{"id":500,"main":"Rain","description":"Leichter Regen","icon":"10d"}],"clouds":99,"pop":0.24,"rain":0.23,"uvi":1}]}

      Gibt es auch eine Möglichkeit der Befehlserkennung mitzuteilen, ab z.B. welcher Stelle nicht mehr weitergesucht werden soll? Oder irgendwelche anderen Ideen wie das zu lösen wäre?

      LG,
      A
      PS: das Loxwiki http://www.loxwiki.eu/pages/viewpage...ageId=37617883 konnte mir leider nicht weiterhelfen.
      Zuletzt geändert von anemac; 30.12.2020, 11:39.

      Kommentar

      • Lenardo
        MS Profi
        • 25.08.2015
        • 625

        #4
        Mit Node-red geht das ganz einfach, da kannst du alles zwischen x und y abfragen und je nachdem was es ist zurück in Loxone bringen, aus meiner bescheidenen Sicht gehört eh zu jedem Miniserver gen1 irgendwo Node-red auf einen raspberry ( ebenso wie ein loxberry und MS4H)

        Kommentar

        • Christian Fenzl
          Lebende Foren Legende
          • 31.08.2015
          • 11238

          #5
          Das Datenmodell ist ein wenig doof. Ein Attribut komplett wegzulassen, wenn dessen Wert 0 ist, wird immer Sorgen bereiten. Irgendwer muss den Wert wieder 0 setzen, und das muss explizit für alle solchen Attribute implementiert werden, wenn vom Datenmodell selbst keine Info da ist, dass es ein Attribut überhaupt gibt.

          So wie das mit Node-Red möglich wäre, wäre das auch mit LoxBerry XL möglich: Den Json-Content einfach komplett an MQTT senden, das MQTT Gateway zerlegt das JSON automatisch. Das explizite 0 setzen musst du trotzdem machen.
          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

          Kommentar

          • anemac
            Dumb Home'r
            • 18.09.2015
            • 28

            #6
            Hi,
            danke für eure Inputs, wenn auch nicht das was ich unbedingt lesen wollte...
            Irgendwelchen zusätzlichen Programmen oder Computern stehe ich aufgrund der notwendigen Instandhaltungsarbeiten immer schon eher zurückhaltend gegenüber. Ich habe gerne nur ein Tool welches ich warten oder erweitern möchte (das aber durchaus gerne).
            Konkret geht es da um die Einbindung von openweathermap als Alternative zu Darksky, da ja Darksky bis spätestens Ende 2021 höchstwahrscheinlich abgeschaltet wird. Ich dachte daran meine Umstellung jetzt schon umzusetzen, zu testen und dann hier zu zeigen bzw. ins loxwiki zu stellen.

            @Christian: ich gebe dir absolut recht, einfach was weglassen ist die sinnloseste Methode zwecks Weiterverarbeitung. Leider gibt es aber anscheinend auch keinen Parameter bei OWM um das ggf. zu umgehen (Feature Request an OWM hab ich eben gestellt)

            @beide: Da es die Zeichenfolge "pop" immer gibt, kann ich mich damit irgendwie weiterhanteln? Zeichen zählen, überspringen o.ä.?

            lg,
            A

            Kommentar


            • Christian Fenzl
              Christian Fenzl kommentierte
              Kommentar bearbeiten
              Mit Zeichen überspringen kommst du nicht ran, weil du nicht weißt, ob es Snow gibt oder nicht.
              Das wird nicht das letzte Mal sein, dass du mit Loxone "Bordmitteln" nicht weiter kommst. Fürs Wetter gibt's ein LoxBerry-Plugin.
          • Gast

            #7
            Hallo,
            ich hänge mich hiereinfach mal dran.

            Eine Abfrage entweder über
            1. "get"
            oder über
            2. "getPlainValue".

            1. Ergebnis Abfrage via Quellcode.
            {"val":"60.0","ack":true,"ts":1609325148564,"q":0, "from":"system.adapter.unifi.0","user":"system.use r.admin","lc":1609336726282,"type":"state","common ":{"name":"CPU usage","type":"number","role":"state","read":true, "write":false,"unit":"%","desc":""},"native":{"obj ect_id":"devices.device.system-stats.cpu"},"_id":"unifi.0.default.devices.18:e8:2 9:40:d7:a3.system-stats.cpu"}

            Hier sind die 60.0 interessant.
            Befehlserkennung: "{"val":"\v Als Ergenis bekomme ich leider nur 0.

            2. Ergebnis Abfrage via Quellcode.
            <body>"60.2"</body>

            Hier sind die 60.2 interessant.
            Befehlserkennung : <body>"\v Als Ergebnis kommt wieder nur 0.


            Wo liegt mein Fehler? Ich habe schon etliche Möglichkeiten ausprobiert.

            Danke im voraus.

            Kommentar


            • Christian Fenzl
              Christian Fenzl kommentierte
              Kommentar bearbeiten
              Dein JSON und die Befehlserkennung sind nicht gleich.

            • Gast
              Gast kommentierte
              Kommentar bearbeiten
              Was meinst du damit? Stehe gerade auf dem Schlauch.

            • Christian Fenzl
              Christian Fenzl kommentierte
              Kommentar bearbeiten
              Json:
              {"val":"60.0","ack...
              Befehlserkennung:
              "{"val":"\v
          • Gast

            #8
            Hi,
            Das ist meine Abfrage.



            Mit der zweiten Hochkomma geht leider auch nicht.

            Gruß

            Kommentar

            Lädt...