Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. String zerlegen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    String zerlegen

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active @grizzlyco last edited by

      @grizzlyco
      Bitte mehr Infos.

      Wie sieht der String aus ?
      Was willst du wo hin haben ?

      G 1 Reply Last reply Reply Quote 0
      • G
        grizzlyco @bahnuhr last edited by

        @bahnuhr
        hier der String. wo die DP am ende liegen ist mir egal. Bsp. javascript.0

        {"id":"C4:7C:8D:6B:43:36","mac_type":0,"name":"Flower care","rssi":-98,"brand":"Xiaomi/VegTrug","model":"MiFlora","model_id":"HHCCJCY01HHCC","lux":3503,"tempc":12.7,"moi":360,"fer":335}
        
        bahnuhr 1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active @grizzlyco last edited by

          @grizzlyco

          nochmal:
          Welche daten willst du von diesem json (kein String) haben ?

          1 Reply Last reply Reply Quote 0
          • G
            grizzlyco last edited by

            lux
            tempc
            moi
            fer

            bahnuhr paul53 2 Replies Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @grizzlyco last edited by

              @grizzlyco

              //var werte = getState("dein DP").val;
              werte = '{"id":"C4:7C:8D:6B:43:36","mac_type":0,"name":"Flower care","rssi":-98,"brand":"Xiaomi/VegTrug","model":"MiFlora","model_id":"HHCCJCY01HHCC","lux":3503,"tempc":12.7,"moi":360,"fer":335}';
              
                  var obj = JSON.parse(werte);
                  setState('javascript.0.MiFlora.lux', obj.lux);
                  log (obj.lux);
              

              In Zeile 1 schreibst du deinen DP.
              Zeile 2 kannst du dann löschen.
              In Zeile 5 wird der Wert lux geschrieben in den DP "java...lux"
              (diesen musst du vorher natürlich anlegen)

              Genauso verfährst du mit den anderen Punkten.
              also z.B.: obj. fer
              etc.

              G 1 Reply Last reply Reply Quote 0
              • G
                grizzlyco @bahnuhr last edited by

                @bahnuhr
                Danke erstmal. Wo trage ich das script ein?

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

                  @grizzlyco

                  // IDs anpassen!
                  const idJson = 'mqtt.0.abc';
                  const idLux = '0_userdata.0.xyz.Lux';
                  // usw.
                  
                  on(idJson, function(dp) {
                      let obj = JSON.parse(dp.state.val);
                      setState(idLux, obj.lux, true);
                      // usw.
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • G
                    grizzlyco last edited by

                    Vielen Dank euch beiden!

                    @bahnuhr
                    Wenn ich dein Code direkt in dem Objekt eingebe bekomme ich einen Syntax fehler

                    :

                    {
                      "common": {
                        "name": "mqtt.C47C8D6B4336.rssi",
                        "role": "state",
                        "type": "mixed"
                      },
                      "native": {},
                      "type": "state",
                      "from": "system.adapter.javascript.0",
                      "user": "system.user.admin",
                      "ts": 1663431364325,
                      "_id": "javascript.0.mqtt.C47C8D6B4336.rssi",
                      "acl": {
                        "object": 1636,
                        "state": 1636,
                        "owner": "system.user.admin",
                        "ownerGroup": "system.group.administrator"
                      }
                    
                    }
                    //var werte = getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE_C.BTtoMQTT.C47C8D6AB8E7").val;
                        var obj = JSON.parse(werte);
                        setState('javascript.0.mqtt.C47C8D6B4336.rssi', obj.rssi);
                        log (obj.rssi);
                    
                    

                    @paul53
                    Was mache ich damit?
                    Tut mir leid wenn ich mich doof anstelle, aber ich habe keine ahnung wo ist das eintragen soll, und was ich da anpassen muss.

                    Vielleicht nochmal für einen DAU?

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

                      @grizzlyco sagte: Was mache ich damit?

                      In das Editor-Fenster des Javascript-Adapters kopieren und ergänzen.
                      Vorher die 4 Ziel-Datenpunkte vom Typ Zahl("number") erstellen.

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

                        @paul53

                        super vielen dank!
                        die ersten DP habe schon. Ab jetzt nur noch ne menge fleißarbeit.

                        Vielen Dank!

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          grizzlyco @grizzlyco last edited by

                          da bin ich nochmal.

                          Leider werden nicht bei jedem Paket alle DP mitgeschickt.
                          Paket 1 Lux und temp
                          Paket 2 temp
                          Paket 3 Lux und fer.

                          In mein DP steht deswegen oft [ Objekt objekt]. Das führt zu Fehler in der Folge der Verarbeitung der DP.

                          Könnt ihr mir da auch helfen?

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

                            @grizzlyco sagte: Leider werden nicht bei jedem Paket alle DP mitgeschickt.

                            Dann frage vorher ab:

                                if(typeof obj.lux == 'number') setState(idLux, obj.lux, true);
                            
                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            682
                            Online

                            32.0k
                            Users

                            80.3k
                            Topics

                            1.3m
                            Posts

                            3
                            13
                            441
                            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