Ankündigung

Einklappen
Keine Ankündigung bisher.

12739_JSON-Convert

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

    HS/FS 12739_JSON-Convert

    Ich hab gesehen wie ihr euch mit JSON Daten teilweise in Webabfragen rum quält.

    Der Baustein ist noch BETA aber er kann schon folgendes

    JSON->Ausgänge (5*Float/5*Text)
    * Nested Keys { "sometest" : { "mydata" : 123 }} kann man mit EN[2] sometest*mydata bekommen
    * Listen (leider müßig) { "mylist" : [ 1,2,3,4 ] } EN[2] = mylist EN[4] = mylist EN[6] = mylist EN[8] = mylist gibt auf AN[2] 1 AN[3] 2 AN[4] 3 AN[5] 4 aus

    Eingang -> JSON
    * Nested geht hier noch nicht
    * auch hier gehen Listen beim Beispiel wie oben werden die Eingänge 3,5,7,9 zu mylist : [ ....]
    * wenn kein Key angegeben kann ein kaskadierter Baustein auf oberster Ebene erweitert werden


    Download unter http://service.knx-user-forum.de/?co...nload&id=12739 wenn vento66 freigibt ;-)

    Wer's nützlich findet https://www.paypal.com/cgi-bin/websc...=VY33EH7CBR6LW
    Zuletzt geändert von NilsS; 24.09.2018, 17:08.
    Nils

    aktuelle Bausteine:
    BusAufsicht - ServiceCheck - Pushover - HS-Insight

    #2
    Ich bin durch zufall auf diesen Baustein aufmerksam geworden. Der LBS könnte die Lösung sein, um daten von einem Solarlog und einem Varta-Speicher zu visualisieren. Beide Geräte lassen sich per IP anfragen und Werte in JSON auslesen. Wie bekomme ich die Daten in den LBS, bzw wie muss ich da vorgehen? Bin absoluter Laie und Unwissend in JSON....
    Ich kann Webseiten mit dem Aufbau zur Verfügung stellen.

    Kommentar


      #3
      Am besten den Content der Webabfrage (JSON Teil) da rein, rest macht der Baustein. Im Zweifel einfach mal eben den JSON hier posten.
      Nils

      aktuelle Bausteine:
      BusAufsicht - ServiceCheck - Pushover - HS-Insight

      Kommentar


        #4
        Zitat von knx-bodensee Beitrag anzeigen
        Der LBS könnte die Lösung sein, um daten von einem Solarlog und einem Varta-Speicher zu visualisieren. B
        Für den Solarlog hatte ich mal hier meine IP Abfrage gepostet. Damit hast du die Werte direkt geparst auf einem iKO

        ich suche den Post mal.

        https://knx-user-forum.de/forum/%C3%...-json-solarlog

        aber du hattest den ja schon getestet??? Hängt immer von der eingesetzten Firmware am Solarlog ab.
        Zuletzt geändert von larsrosen; 29.10.2018, 11:16.
        Elektroinstallation-Rosenberg
        -Systemintegration-
        Planung, Ausführung, Bauherren Unterstützung
        http://www.knx-haus.com

        Kommentar


          #5
          @NilsS: Der varta meldet sich wie folgt:
          Code:
          <root Timestamp="1540811814" id="100001428" ChargerCount="30" Description="Kunde"><inverter id="M363158"><var name="P" value="0"/><var name="SOC" value="0"/><var name="Capacity" value="13824"/><var name="State" value="4"/></inverter></root>
          larsrosen : Nein, noch nicht weiter zum testen gekommen....

          Kommentar


            #6
            Das ist aber kein JSON sondern XML
            Nils

            aktuelle Bausteine:
            BusAufsicht - ServiceCheck - Pushover - HS-Insight

            Kommentar


              #7
              Hallo in die Runde,
              ich wolle von meinem ioBroker- System möchte ich gerne Daten in den Gira HS übermitteln.
              Mit dem Befehl:
              http://192.168.1.xxx:8087/get/sonoff...ENERGY_Voltage
              bekomme ich im Browser folgende Rohdaten:

              {"val":222,"ack":true,"ts":1544649046915,"q":0,"fr om":"system.adapter.sonoff.0","lc":1552836747551," _id":"sonoff.0.Sonoff-POW-01-Spitzboden.ENERGY_Voltage","common":{"type":"numbe r","role":"value.voltage","read":true,"write":fals e,"unit":"V","name":"Sonoff-POW-01-Spitzboden ENERGY Voltage"},"native":{},"type":"state","acl":{"objec t":1636,"state":1636,"owner":"system.user.admin"," ownerGroup":"system.group.administrator"}}

              Davon benötige ich den Wert: “val“: 222.
              Mit dem Baustein JSON_convert wollte ich nun die Dane abholen.
              Leider bin ich mir bei der Belegung der Eingänge noch nicht sicher ob ich da richtig verstanden
              habe:

              E1 JSON:
              habe ich http://192.168.1.xxx:8087/get/sonoff...ENERGY_Voltage
              eingetragen.

              E2 Key 1:
              Habe ich val eingetragen.
              Leider kommt nix an, also muß ich etwas total falsch verstanden haben.
              Könnte mir hier jemand weiterhelfen?
              Vielen Dank vorab!!
              Gruß Marcus

              Kommentar


                #8
                Ich habe da mal eine Frage:
                kann es sein, dass der Baustein Werte = 0 aus dem JSON ignoriert?
                Ich bekomme in dem JSON unterschiedliche Werte ausgegeben, das funktioniert so weit auch alles, wenn der Wert allerdings auf 0 geht, dann ignoriert der Baustein den Wert anscheinend und das iKO behält den letzten Wert.

                Kommentar


                  #9
                  Hallo, ich nutze den Baustein, um eine verschachtelte JSON-Datei aufzulösen (z.B. 3 Hierarchieebenen):
                  Code:
                  {
                    "Level1":{
                      "Level1.1":{...},
                      "Level1.2":{...},
                    }
                    "Level2":{...}
                  }
                  Bei Abfrage des Level1 Keys, liefert der Baustein den dazugehörigen Zweig (Level 1.1 usw). Allerdings werden in der Ausgabe die " durch ' ersetzt. Außerdem wird vor jedem Strin-Wert ein "u" eingefügt. So wie es aussieht kann dann eine neue Kopie des Bausteins das Ergebnis nicht mehr als Eingang nutzen.

                  Hier ein konketes Beispiel für eine veränderte Ausgabe:
                  Orignial:
                  Code:
                  {"name": "Raum 1", "lights": ["7", "8"], "state": {"any_on": True, "all_on": True}, "action": {"on": True, "bri": 254, "alert": "select"}, "recycle": False, "sensors": [], "type": "Room", "class": "livingroom"}
                  Ausgang des Bausteins:
                  Code:
                  {u'name': u'Raum 1', u'lights': [u'7', u'8'], u'state': {u'any_on': True, u'all_on': True}, u'action': {u'on': True, u'bri': 254, u'alert': u'select'}, u'recycle': False, u'sensors': [], u'type': u'Room', u'class': u'livingroom'}
                  Hat jemand einen Tipp, wie ich das Ergebnis dennoch weiterverarbeiten kann, am Liebsten natürlich mit dem 12739_JSON-Convert?
                  Zuletzt geändert von En3rGy; 17.11.2019, 12:17. Grund: typos

                  Kommentar


                    #10
                    Moin,


                    der Baustein macht intern folgendes

                    Code:
                        def _iso88591_encode_dict(self,data):
                            return dict(
                                map(
                                    lambda x: x.encode('iso-8859-1') if isinstance(x,unicode) else x,
                                    pair
                                )
                                for pair in data.items()
                            )
                    
                        def fromjson(self,EN,AC,AN):
                            import json
                            _keys = [(_k,EN[_k]) for _k in [2,4,6,8,10,12,14,16,18,20]]
                            try:
                                _json = json.loads(EN[1],encoding='iso-8859-1',object_hook = self._iso88591_encode_dict)
                            except:
                                ###DEBUG###raise
                                return
                            for (_n,_k) in _keys:
                    vielleicht hilft es das so anzupassen
                    https://stackoverflow.com/questions/...code-from-json

                    allerdings dann natürlich in iso8859-1 und nicht utf-8

                    hab leider gerade wenig Zeit
                    Nils

                    aktuelle Bausteine:
                    BusAufsicht - ServiceCheck - Pushover - HS-Insight

                    Kommentar


                      #11
                      Hallo!

                      Versuche gerade bei meinen Shelly Steckdosen den Status mit dem JSON-Baustein auszuwerten...

                      Offensichtlich liefert der Shelly das aber nicht nested wie von Dir, NilsS oben beschrieben (also { "sometest" : { "mydata" : 123 }} ) sondern noch mit zusätzlichen eckigen Klammern (rot markiert) das mit dem sometest*mydata vorne als Key funktioniert damit nicht - ne Idee, wie man das trotzdem zerlegt bekommt?

                      Hier mal das JSON:

                      {"wifi_sta":{"connected":true,"ssid":"BZ_7590_24", "ip":"192.168.178.60","rssi":-59},"cloud":{"enabled":false,"connected":false},"m qtt":{"connected":false},"time":"13:53","serial":1 ,"has_update":false,"mac":"98F4ABB8638E","relay s":[{"ison":true,"has_timer":false,"overpower":fals e}],"meters":[{"power":0.00,"is_valid":true,"timestamp":15810835 92,"counters":[0.104, 0.103, 0.033],"total":34}],"temperature":39.64,"overtemperature":false,"tmp" :{"tC":39.64,"tF":103.34, "is_valid":"true"},"update":{"status":"idle","has_ update":false,"new_version":"20200206-083538/v1.5.10@e6a4205e","old_version":"20200206-083538/v1.5.10@e6a4205e"},"ram_total":50736,"ram_free":39 956,"fs_size":233681,"fs_free":169927,"uptime":531 0}

                      Grüße

                      Olaf
                      Meine Installation...
                      ...gehört mir jetzt leider nicht mehr!
                      Aber wenn ich wieder baue, gibt es definitiv wieder KNX! Und aus den Fehlern beim ersten Haus kann man beim zweiten nur lernen!

                      Kommentar


                        #12
                        da steck noch nen array drin...

                        Kommentar


                          #13
                          Ich muss mal gucken ob man nicht einfach mit String .format tricksen kann. Das hab ich im ServiceCheck Baustein genutzt. Das ist da sehr flexibel
                          Nils

                          aktuelle Bausteine:
                          BusAufsicht - ServiceCheck - Pushover - HS-Insight

                          Kommentar


                            #14
                            Jetzt, wo Du es schreibst: Würde es nicht reichen, einfach, die eckigen Klammern mit einem Textformatierungsbaustein vor dem JSON-Convert rauszuschmeißen? Dann ist es doch ein ganz normales nested JSON, oder?
                            Meine Installation...
                            ...gehört mir jetzt leider nicht mehr!
                            Aber wenn ich wieder baue, gibt es definitiv wieder KNX! Und aus den Fehlern beim ersten Haus kann man beim zweiten nur lernen!

                            Kommentar


                              #15
                              Update auf 0.4
                              sollte jetzt auch das JSON an den Ausgängen ordentlich weiter verarbeiten.
                              Das Trennzeichen um verschachtelt auf tieferliegende Objekte zuzugreifen habe ich von * auf / gewechselt.
                              also um aus
                              Zitat von Hightech Beitrag anzeigen
                              {"wifi_sta":{"connected":true,"ssid":"BZ_7590_2 4", "ip":"192.168.178.60","rssi":-59},"cloud":{"enabled":false,"connected":false},"m qtt":{"connected":false},"time":"13:53","serial": 1 ,"has_update":false,"mac":"98F4ABB8638E","relay s":[{"ison":true,"has_timer":false,"overpower":fals e}],"meters":[{"power":0.00,"is_valid":true,"timestamp":15810 835 92,"counters":[0.104, 0.103, 0.033],"total":34}],"temperature":39.64,"overtemperature":false,"t mp" :{"tC":39.64,"tF":103.34, "is_valid":"true"},"update":{"status":"idle"," has_ update":false,"new_version":"20200206-083538/v1.5.10@e6a4205e","old_version":"20200206-083538/v1.5.10@e6a4205e"},"ram_total":50736,"ram_free":39 956,"fs_size":233681,"fs_free":169927,"uptime":531 0}
                              wifi_sta/rssi
                              oder
                              mqtt/connected
                              zu holen
                              Nils

                              aktuelle Bausteine:
                              BusAufsicht - ServiceCheck - Pushover - HS-Insight

                              Kommentar

                              Lädt...
                              X