Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Json korrekt parsen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Json korrekt parsen

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      Joker971 last edited by

      Hi allerseits,
      ich bekomme folgende Payload von meinem Mqtt und muss hier ein paar Werte rausholen. Das klappt soweit auch aber bei einem Wert scheitere ich. Hier mal zunächst die Payload:

      {
        "end_device_ids": {
          "device_id": "bodensensor-hinten",
          "application_ids": {
            "application_id": "garden-soil-sensors"
          },
          "dev_eui": "",
          "join_eui": "",
          "dev_addr": ""
        },
        "correlation_ids": [
          "as:up:01FMJMEY3F4R8BRK933ZF831B8",
          "gs:conn:01FMHQKYR8ACAACXVMR5ETGBX0",
          "gs:up:host:01FMHQKYRRTNB1Y256R5BBFZ5B",
          "gs:uplink:01FMJMEXW5QENYW0X7ESBWKT7E",
          "ns:uplink:01FMJMEXW6V0WTERVH73FZ316Q",
          "rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01FMJMEXW64H4ZYQGZ6JYFSBK3",
          "rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01FMJMEY3ETSZPN33KJ591WZ1K"
        ],
        "received_at": "2021-11-15T20:26:20.655807658Z",
        "uplink_message": {
          "session_key_id": "AX0kon3s3ubZFDDLFdgJEw==",
          "f_port": 2,
          "f_cnt": 9,
          "frm_payload": "DS4AAAAACLQAABA=",
          "decoded_payload": {
            "Bat": "3.374 V",
            "TempC_DS18B20": "0.00 °C",
            "conduct_SOIL": "0 uS/cm",
            "temp_SOIL": "22.28 °C",
            "water_SOIL": "0.00 %"
          },
          "rx_metadata": [
            {
              "gateway_ids": {
                "gateway_id": "myindoorgatewayhub",
                "eui": ""
              },
              "time": "2021-11-15T20:26:20.344300985Z",
              "timestamp": 177918228,
              "rssi": -63,
              "channel_rssi": -63,
              "snr": 10.75,
              "location": {
                "latitude": 51.7100722182447,
                "longitude": 7.923237383365632,
                "altitude": 5,
                "source": "SOURCE_REGISTRY"
              },
              "uplink_token": "CiAKHgoSbXlpbmRvb3JnYXRld2F5aHViEghYoMv//oBEFBCUoutUGgwI7ITLjAYQuPfgyAEgoOyC5pbwBioMCOyEy4wGELm7lqQB"
            }
          ],
          "settings": {
            "data_rate": {
              "lora": {
                "bandwidth": 125000,
                "spreading_factor": 7
              }
            },
            "coding_rate": "4/5",
            "frequency": "867900000",
            "timestamp": 177918228,
            "time": "2021-11-15T20:26:20.344300985Z"
          },
          "received_at": "2021-11-15T20:26:20.422462557Z",
          "consumed_airtime": "0.061696s",
          "locations": {
            "user": {
              "latitude": 51.71014867049504,
              "longitude": 7.923138141632081,
              "source": "SOURCE_REGISTRY"
            }
          },
          "version_ids": {
            "brand_id": "dragino",
            "model_id": "lse01",
            "hardware_version": "_unknown_hw_version_",
            "firmware_version": "1.3",
            "band_id": "EU_863_870"
          },
          "network_ids": {
            "net_id": "000013",
            "tenant_id": "ttn",
            "cluster_id": "ttn-eu1"
          }
        }
      }
      

      Ich bekomme die Werte indem ich die Payload mit dem "JSON nach Objekt" Baustein in ein Objekt umwandle und mit dem "ATTRIB" Baustein und der Pfadangabe bekomme ich die Werte bis auf einen!

      Folgende Pfade funktionieren super und ich kriege ein Ergebniss:

      uplink_message.decoded_payload.Bat
      uplink_message.decoded_payload.water_SOIL
      uplink_message.decoded_payload.conduct_SOIL
      uplink_message.decoded_payload.temp_SOIL
      

      Ich möchte aber noch den Wert rssi haben der in rx_metadata steckt. Vergeblich.
      Dieser Pfad funktioniert nicht:

      uplink_message.rx_metadata[0].rssi
      

      Das sollte er aber oder übersehe ich hier was ?
      Wenn ich nur uplink_message.rx_metadata verwende bekomme ich alles angezeigt was da drin steckt, darunter auch rssi aber ich kann nicht explizit darauf zugreifen.
      Jemand eine Idee ?

      Homoran F OliverIO 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Joker971 last edited by

        @joker971

        Was hast du bereits gemacht?
        Blockly oder js?

        Wenn ich mich jetzt in den Ebenen nicht verrant habe müüsste es sein:
        Attribut von: uplink_message.rx_metadata.0.rssi

        Homoran 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @Homoran last edited by Homoran

          @homoran sagte in Json korrekt parsen:

          @joker971

          Was hast du bereits gemacht?
          Blockly oder js?

          Wenn ich mich jetzt in den Ebenen nicht verrant habe müüsste es sein:
          Attribut von: uplink_message.rx_metadata.0.rssi

          @joker971 sagte in Json korrekt parsen:

          Das sollte er aber oder übersehe ich hier was ?

          keine Array-Klammern sondern Punkte zur Ebenentrennung

          json_rssi.png

          J F 2 Replies Last reply Reply Quote 0
          • F
            fastfoot @Joker971 last edited by

            @joker971 sagte in Json korrekt parsen:

            uplink_message.rx_metadata[0].rssi

            versuche uplink_message.rx_metadata.0.rssi. getAttr() funktioniert hier nicht wie erwartet

            1 Reply Last reply Reply Quote 0
            • J
              Joker971 @Homoran last edited by

              @homoran
              🤦‍♂️ 🤦‍♂️ 🤦‍♂️
              Alles hab ich versucht, nur nicht die Klammern mal weg zu lassen 😇
              Daaaaanke für den Denkanstoss, das funktioniert jetzt 👍

              🤘

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @Joker971 last edited by

                @joker971

                so müsste korrekt sein

                uplink_message.rx_metadata[0].rssi
                

                bei meinem test kam -63 raus

                1 Reply Last reply Reply Quote 0
                • F
                  fastfoot @Homoran last edited by

                  @homoran sagte in Json korrekt parsen:

                  keine Array-Klammern sondern Punkte zur Ebenentrennung

                  ja, in JS würde man es aber mit Klammer machen (müssen!)

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @fastfoot last edited by OliverIO

                    @fastfoot
                    ich habe es in JS getestet und eckige array-klammern verwendet
                    am besten du schreibst deine version mal hin

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      fastfoot @OliverIO last edited by

                      @oliverio sagte in Json korrekt parsen:

                      @fastfoot
                      ich habe es in JS getestet und eckige array-klammern verwendet
                      am besten du schreibst deine version mal hin

                      ich gehe davo aus dass er es in Blockly probiert hat, welches getAttr() verwendet und dort klappt das mit Klammer eben nicht 🙂

                      J Homoran 2 Replies Last reply Reply Quote 0
                      • J
                        Joker971 @fastfoot last edited by

                        Es geht jetzt, ohne Klammern !
                        Danke euch 😄

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @fastfoot last edited by Homoran

                          @fastfoot sagte in Json korrekt parsen:

                          ich gehe davo aus dass er es in Blockly probiert hat

                          ich auch, seine Formulierung:

                          @joker971 sagte in Json korrekt parsen:

                          mit dem "JSON nach Objekt" Baustein in ein Objekt umwandle und mit dem "ATTRIB" Baustein

                          waren ziemlich eindeutig.

                          und in Blockly muss man .0. sattt [0] nehmen, außer man geht mehrstufig vor indem man erst das Array zelegt und dann darin weitermacht

                          J 1 Reply Last reply Reply Quote 0
                          • J
                            Joker971 @Homoran last edited by

                            @homoran

                            Ja natürlich Blockly, das ist doch auch das Blockly-Forum 🤓

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            681
                            Online

                            31.8k
                            Users

                            79.9k
                            Topics

                            1.3m
                            Posts

                            blockly
                            4
                            12
                            519
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo