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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • 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 last edited by

      Hallo zusammen,
      Ich hoffe ihr könnt mir helfen.
      Ich bekomme MiFlora Sensoren in IOBroker.
      Aber ich finde keine Möglichkeit die den String in einzelne Datenpunkte zu zerlegen. Im Netz finde man zwar ein paar sachen, aber ich verstehe das offen gesagt nicht.
      Hier der Beispiel String.
      {"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}

      bahnuhr 1 Reply Last reply Reply Quote 0
      • 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

                              859
                              Online

                              31.9k
                              Users

                              80.3k
                              Topics

                              1.3m
                              Posts

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