Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. Native Lösung zum parsen von JSON?

    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

    Native Lösung zum parsen von JSON?

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Horst 1 last edited by

      Hallo zusammen,

      viele Geräte stellen ja inzwischen Daten in Form von JSON zur Verfügung, sei es über MQTT, HTTP oder auf anderem Wege.

      Aktuell kenne ich nur den Weg diese JSON-Strings via JavaScript bzw. Blockly zu zerlegen und daraus dann einzelne Datenpunkte anzulegen.

      Je mehr Datenpunkte das werden, desto größer wird er Wartungsaufwand für diese Skripte.

      Gibt es eine native Lösung im ioBroker um das gleiche Ziel zu erreichen?

      Danke, Horst

      Homoran David G. paul53 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Horst 1 last edited by

        @horst-1 sagte in Native Lösung zum parsen von JSON?:

        Gibt es eine native Lösung im ioBroker

        Was verstehst du darunter?

        Die Logikmaschine deiner Wahl ist nicht nativ in ioB?

        Außerdem
        @horst-1 sagte in Native Lösung zum parsen von JSON?:

        viele Geräte stellen ja inzwischen Daten in Form von JSON zur Verfügung

        ist wahrscheinlich jedes JSON individuell aufgebaut und müsdte genau so individuell geparst werden

        1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active last edited by mickym

          Es macht keinen Sinn aus json alles in einzelne Datenpunkte zu zerlegen. Aber du kannst dir ja auch meinen NodeRed flow anschauen, der zerlegt alles in einzelne Datenpunkte, wenn du willst und das automatisch. Sogar Äste in oder alles aus einem Adapter kann so unter 0_userdata.0 geschrieben werden.

          1 Reply Last reply Reply Quote 0
          • David G.
            David G. @Horst 1 last edited by

            @horst-1 sagte in Native Lösung zum parsen von JSON?:

            Je mehr Datenpunkte das werden, desto größer wird er Wartungsaufwand für diese Skripte.

            Warum auch alle anlegen.
            Du kannst ja auch auf das json triggern und dann mit js oder Blockly den benötigten Wert weiterverarbeiten.
            Man muss ich nicht über einen DP gehen.

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Horst 1 last edited by

              @horst-1 sagte: JSON-Strings via JavaScript bzw. Blockly zu zerlegen

              ... oder per Lesekonvertierung im Alias.

              MartinP 1 Reply Last reply Reply Quote 0
              • MartinP
                MartinP @paul53 last edited by MartinP

                @paul53 said in Native Lösung zum parsen von JSON?:

                @horst-1 sagte: JSON-Strings via JavaScript bzw. Blockly zu zerlegen

                ... oder per Lesekonvertierung im Alias.

                Die Dokumentation enthält leider gerade die "Kniffe" der Extraktion von Elementen aus JSON Strukturen in Datenpunkten nicht ... Klammerrechnung und Grundrechenarten werden als Beispiele gezeigt ...

                {
                  "common": {
                    "name": "battery",
                    "desc": "Manuell erzeugt",
                    "role": "state",
                    "type": "number",
                    "read": true,
                    "write": false,
                    "def": 0,
                    "alias": {
                      "id": "mqtt.0.zigbee2mqtt.Aqara_Temperaturmultisensor_1",
                      "read": "JSON.parse(val).battery"
                    },
                    "custom": {
                      "influxdb.0": {
                        "enabled": true,
                        "storageType": "",
                        "aliasId": "Aquara_1_Batterie",
                        "debounceTime": 0,
                        "blockTime": 0,
                        "changesOnly": true,
                        "changesRelogInterval": 0,
                        "changesMinDelta": 0,
                        "ignoreBelowNumber": "",
                        "disableSkippedValueLogging": false,
                        "enableDebugLogs": false,
                        "debounce": 1000
                      }
                    }
                  },
                  "type": "state",
                  "native": {},
                  "_id": "alias.0.Batteriegeraete.Temperatur_Aqara_1.battery",
                  "acl": {
                    "object": 1636,
                    "state": 1636,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                  },
                  "from": "system.adapter.admin.0",
                  "user": "system.user.admin",
                  "ts": 1704110458833
                }
                
                H 1 Reply Last reply Reply Quote 1
                • H
                  Horst 1 @MartinP last edited by

                  @martinp Danke - genau das habe ich gesucht! In 99% der Fälle genügt es mir, einen Einzelwert aus einem JSON Objekt zu extrahieren und maximal zur Einheitenumrechnung zu Skalieren.

                  Mit dem Zerlegen in Datenpunkte meinte ich nicht pauschal alle Objekt-Werte per Skript zu konvertieren sondern lediglich die für mich Interessanten. Das Anlegen von Datenpunkten ist nach meinem vom IOB Verständnis unumgänglich, wenn ich die Werte zur Visualisierung in Lovelace verwenden möchte bzw. auch die History aufzeichnen möchte.

                  Grüße

                  MartinP Homoran A 3 Replies Last reply Reply Quote 0
                  • MartinP
                    MartinP @Horst 1 last edited by

                    @horst-1 Du meinst das Anlegen von Alias-Datenpunkten?

                    Das hat auch noch andere Vorteile. Wenn Geräte-Hardware kaputt geht, möchte/kann man ggfs. die Hardware nicht baugleich ersetzen. Da ist eine Alias-Schicht immer hilfreich. Fritzdect-Schaltsteckdose durch eine mit Tasmota ersetzen -> kein Problem ... Alle entsprechenden Aliase auf die neue Hardware umbiegen - fertig ... hat man auch das Thermometer in der Fritzdect gebraucht, muss man ggfs. natürlich eine Lösung mit einem zweiten Gerät finden, um über den Temperatur Alias weiter Werte zu bekommen ...

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

                      @horst-1 sagte in Native Lösung zum parsen von JSON?:

                      Mit dem Zerlegen in Datenpunkte meinte ich nicht pauschal alle Objekt-Werte per Skript zu konvertieren sondern lediglich die für mich Interessanten.

                      und was wäre mit einer dafür wie auch immer gearteten nativen Lösung weniger pflegeaufwändig als ein miniscript oder Alias?

                      H 1 Reply Last reply Reply Quote 0
                      • A
                        Ahnungsbefreit @Horst 1 last edited by

                        @horst-1 Alternativ könnte Dir vielleicht mein Script hier helfen: https://forum.iobroker.net/topic/62779/vorlage-script-json-datenpunkte-mit-sync

                        1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active last edited by

                          Ich würde auch für die Alias-Lösung plädieren.
                          Neben der Verinfachung beim Hardwaretausch hat man dadurch auch gleich die Umrechnung erschlagen.
                          Einfacher geht's fast nicht.

                          1 Reply Last reply Reply Quote 0
                          • H
                            Horst 1 @Homoran last edited by

                            @homoran Die Alias-Lösung war mir bis dato mit dieser Funktion nicht bekannt, lediglich für Geräte und einfache Umrechnungen habe ich das genutzt. Das verstehe ich eigentlich auch unter einer nativen Lösung, da kein zusätzlicher Adapter benötigt wird.

                            Ich werde es bei Gelegenheit testen und dann wahrscheinlich einen Großteil meiner bisherigen Skripte über Bord werfen.

                            Danke für die rege Beteiligung an Alle!

                            Codierknecht 1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active @Horst 1 last edited by

                              @horst-1 sagte in Native Lösung zum parsen von JSON?:

                              Das verstehe ich eigentlich auch unter einer nativen Lösung

                              just for info: Dazu braucht es auch keinen speziellen Adapter. Einfach im Objektbaum anlegen - fertig!

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              791
                              Online

                              31.9k
                              Users

                              80.2k
                              Topics

                              1.3m
                              Posts

                              8
                              13
                              498
                              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