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.
    • 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

                          648
                          Online

                          32.0k
                          Users

                          80.4k
                          Topics

                          1.3m
                          Posts

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