Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Payload Daten in Objekte schreiben

    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

    [gelöst] Payload Daten in Objekte schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • Marc Berg
      Marc Berg Most Active @paul53 last edited by

      @paul53 sagte in Payload Daten in Objekte schreiben:

      Dann sollte man prüfen.

      ja, genau. Wenn man zum Beispiel einen Schaltbefehl als Downlink absetzt, bekommt man immer zwei Uplinks zurück. Einen mit Work_mode "Exit mode" und einen mit Work_Mode "2ACI+2AVI". Das ist zunächst etwas verwirrend, aber sicher der vielfältigen Möglichkeiten geschuldet, die man mit diesem Gerät hat.

      GregorS 1 Reply Last reply Reply Quote 0
      • GregorS
        GregorS @Marc Berg last edited by

        Danke.
        Werde es mal die Tage probieren.

        GregorS 1 Reply Last reply Reply Quote 0
        • GregorS
          GregorS @GregorS last edited by

          Leider hat es nicht funktioniert.

          Beim Blockly kommen folgende Fehlermeldungen:

          avascript.0
          	2023-07-20 18:55:46.674	error	script.js.LoRaWAN_DEV_1: Cannot get AVI2_V of null
          javascript.0
          	2023-07-20 18:55:46.674	error	script.js.LoRaWAN_DEV_1: Cannot get ACI1_mA of undefined
          javascript.0
          	2023-07-20 18:53:46.292	error	script.js.LoRaWAN_DEV_1: Cannot get AVI2_V of null
          javascript.0
          	2023-07-20 18:53:46.292	error	script.js.LoRaWAN_DEV_1: Cannot get ACI1_mA of null
          javascript.0
          	2023-07-20 18:52:46.262	error	script.js.LoRaWAN_DEV_1: Cannot get AVI2_V of null
          javascript.0
          	2023-07-20 18:52:46.261	error	script.js.LoRaWAN_DEV_1: Cannot get ACI1_mA of undefined
          

          zzz_blockly.JPG

          Habe es dann noch mit einem JS versucht (hier aus dem Forum).
          Alles angepasst, aber dies hat auch nicht funktioniert.

          javascript.0
          	2023-07-20 18:57:52.096	error	at Script.runInContext (node:vm:141:12)
          javascript.0
          	2023-07-20 18:57:52.096	error	at script.js.LoRAWAN_DEV_1:127:3
          javascript.0
          	2023-07-20 18:57:52.096	error	at script.js.LoRAWAN_DEV_1:1:1
          javascript.0
          	2023-07-20 18:57:52.095	error	script.js.LoRAWAN_DEV_1: ReferenceError: ttn_decode is not defined
          

          Wie deffiniere ich den TTN_decode?

          ttn_decode
          
           
          
           
          
           
          
          //Device
          
          createState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI_1", false, {
          
              name: "Strom_1",
          
              read: true, 
          
              write: false, 
          
              desc: "", 
          
              def: 0, 
          
              unit: "mA",
          
              role: "",
          
              type: "number"
          
          });
          
          createState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI_2", false, {
          
              name: "Strom_2",
          
              read: true, 
          
              write: false, 
          
              desc: "", 
          
              def: 0, 
          
              unit: "mA",
          
              role: "",
          
              type: "number"
          
          });
          
          createState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI_1", false, {
          
              name: "Spannung_1",
          
              read: true, 
          
              write: false, 
          
              desc: "", 
          
              def: 0, 
          
              unit: "V",
          
              role: "",
          
              type: "number"
          
          });
          
          createState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI_2", false, {
          
              name: "Spannung_2",
          
              read: true, 
          
              write: false, 
          
              desc: "", 
          
              def: 0, 
          
              unit: "V",
          
              role: "",
          
              type: "number"
          
          });
          
           
          
          //const fs = require('fs');
          
           
          
          on({id: 'v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up', change: "ne"}, function (obj) {
          
              obj = JSON.parse(getState("v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up").val);
          
              setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI_1", parseFloat(obj["payload_fields"]["ACI1_mA"].toFixed(2)), true);
          
              setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI_2", parseFloat(obj["payload_fields"]["ACI2_mA"].toFixed(2)), true);
          
              setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI_1", parseFloat(obj["payload_fields"]["AVI1_V"].toFixed(2)), true);
          
              setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI_2", parseFloat(obj["payload_fields"]["AVI2_V"].toFixed(2)), true);
          
           
          
              /*
          
              var file = "/opt/iobroker/ttn_log.csv";
          
              if(!fs.existsSync(file)) {
          
                  fs.writeFileSync(file, "Time\tData\r\n");
          
              }
          
              fs.appendFileSync(file, (new Date()).toISOString() + "\t" + getState("on({id: 'v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up', change: "ne"}, function (obj) {
          ").val + "\r\n");
          
              */
          
          });
          

          Brauche da wohl ein bisschen Nachilfe.

          Danke

          Homoran paul53 2 Replies Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @GregorS last edited by

            @gregors sagte in Payload Daten in Objekte schreiben:

            Beim Blockly kommen folgende Fehlermeldungen:

            Hast du die Überprüfung, ob der Inhalt existiert nicht umgesetzt?

            @marc-berg sagte in Payload Daten in Objekte schreiben:

            @paul53 sagte in Payload Daten in Objekte schreiben:

            Dann sollte man prüfen.

            ja, genau. Wenn man zum Beispiel einen Schaltbefehl als Downlink absetzt, bekommt man immer zwei Uplinks zurück. Einen mit Work_mode "Exit mode" und einen mit Work_Mode "2ACI+2AVI". Das ist zunächst etwas verwirrend, aber sicher der vielfältigen Möglichkeiten geschuldet, die man mit diesem Gerät hat.

            und hier die Lösung

            @paul53 sagte in Payload Daten in Objekte schreiben:

            @marc-berg sagte: unterschiedliche Payloads

            Dann sollte man prüfen.

            Blockly_temp.JPG

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

              @homoran

              Komme mit mit Blockly nicht klar.
              Muss ich die Variablen "payload","jason" vorher erstellen? Wo?
              Muss ich im Attribut "uplink_message...." den Pfad zu meinem Objekt reinkopieren?
              So sieht meine Struktur aus:
              zzz_struktur.JPG

              Ich sende keine Befehle, sondern empfange nur welche von LoRaWan.
              Muss ich trotzdem die Abfrage machen?
              Irgendwie bin ich dazu zu blöd.

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

                @gregors sagte: Muss ich die Variablen "payload","jason" vorher erstellen? Wo?

                Die Variable payload muss unter "Variablen" erstellt werden.
                Der Datenpunkt "up" dient als Trigger:

                Blockly_temp.JPG

                Wert findet man unter "Trigger".

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

                  @gregors sagte: Brauche da wohl ein bisschen Nachilfe.

                  const idUp = 'mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up'/*v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up*/;
                  
                  on(idUp, function (dp) {
                      let payload = JSON.parse(dp.state.val).uplink_message.decoded_paylod;
                      if(payload && payload.AVI1_V != undefined) {
                          setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI_1", Math.round(payload.ACI1_mA * 100) / 100, true);
                          setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI_2", Math.round(payload.ACI2_mA * 100) / 100, true);
                          setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI_1", Math.round(payload.AVI1_V * 100) / 100, true);
                          setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI_2", Math.round(payload.AVI2_V * 100) / 100, true);
                      }
                  });
                  

                  Zum Triggern muss die DP-ID - nicht der DP-Name - verwendet werden.

                  1 Reply Last reply Reply Quote 0
                  • GregorS
                    GregorS last edited by

                    @paul53

                    Habe ich ausprobiert.
                    Keine Fehler mehr, aber es wird nichts in die Objekte geschrieben.

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

                      @gregors sagte: es wird nichts in die Objekte geschrieben.

                      Es wird getriggert, d.h. die ID stimmt?

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

                        @paul53

                        Kann ich nicht erkennen.
                        Zur Auswahl unter ID bekam ich nur das Objekt UP angeboten.

                        'mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up'/*v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up*/
                        
                        on('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up', function (dp) {
                        
                            let payload = JSON.parse(dp.state.val).uplink_message.decoded_paylod;
                        
                            if(payload && payload.AVI1_V != undefined) {
                        
                                setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI1_mA", Math.round(payload.ACI1_mA * 100) / 100, true);
                        
                                setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI2_mA", Math.round(payload.ACI2_mA * 100) / 100, true);
                        
                                setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI1_V", Math.round(payload.AVI1_V * 100) / 100, true);
                        
                                setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI2_V", Math.round(payload.AVI2_V * 100) / 100, true);
                        
                            }
                        
                        });
                        

                        Kann ich auch mit einem Schedule jede Minute triggern?

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

                          @gregors sagte: Objekt UP

                          Ändert sich der Inhalt? Es wird nur bei Wertänderung getriggert.

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

                            @paul53
                            Der Wert im Payload ändert sich.
                            Allerdings nur AVI1_V, da es zur Zeit der einzige angeschlossene Wert ist.

                            Was bedeutet diese Zeile:

                            if(payload && payload.AVI1_V != undefined) {
                            

                            Es gibt doch 4 Variablen mit Daten.

                            Der Wert von 0_userdata.0.LoRaWAN.eui-a840414601871305.AVI1_V bleibt "0"
                            Habe ihn händisch als Datenpunkt "Number" angelegt.

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

                              @gregors sagte: Was bedeutet diese Zeile:

                              Es wird geprüft, ob das payload-Objekt vorhanden ist und ob es "AVI1_V" enthält.

                              @gregors sagte in Payload Daten in Objekte schreiben:

                              Es gibt doch 4 Variablen mit Daten.

                              Wenn "AVI1_V" enthalten ist, sind die anderen auch vorhanden.

                              Die Zeile 1 mit der ID ist hoffentlich als Kommentar gekennzeichnet?

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

                                @paul53

                                Die Zeile 1 war natürlich nicht als Kommentar gekennzeichnet.
                                Habe ich aber nachgeholt.
                                Aber die Werte stehen immer noch auf 0
                                Fehler gibt es keine

                                //'mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up'/*v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up*/
                                
                                on('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up', function (dp) {
                                    let payload = JSON.parse(dp.state.val).uplink_message.decoded_paylod;
                                    if(payload && payload.AVI1_V != undefined) {
                                        setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI1_mA", Math.round(payload.ACI1_mA * 100) / 100, true);
                                        setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI2_mA", Math.round(payload.ACI2_mA * 100) / 100, true);
                                        setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI1_V", Math.round(payload.AVI1_V * 100) / 100, true);
                                        setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI2_V", Math.round(payload.AVI2_V * 100) / 100, true);
                                    }
                                });
                                
                                Homoran 2 Replies Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @GregorS last edited by Homoran

                                  @gregors bleibt noch die uralte Frage

                                  @homoran sagte in Payload Daten in Objekte schreiben:

                                  es kommen auch immer nur diese Attribute an?

                                  bzw. nach dem Hinweis von

                                  @marc-berg sagte in Payload Daten in Objekte schreiben:

                                  Nur ein kleiner Hinweis, der LT22222 hat die unangenehme Eigenschaft, abhängig vom "work_mode" unterschiedliche Payloads bereitzustellen.

                                  die Variante:

                                  was kommt da zurück?
                                  u d zwar bei dedem Abruf?

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

                                    @homoran

                                    Ist eingestellt auf Work-Mode.

                                    {"end_device_ids":{"device_id":"eui-a840414601871305","application_ids":{"application_id":"gs-mg-dragino-01"},"dev_eui":"A840414601871305","join_eui":"A840410000000101","dev_addr":"260BE9CF"},"correlation_ids":["as:up:01H5YXJP5QRH1C5Q08ZD5DCSP3","gs:conn:01H5CGRTDQJ3EW5BPQ15D9SVP8","gs:up:host:01H5CGRTDY5KEGKQ0AQZ22XD9M","gs:uplink:01H5YXJNZ91PEK9H5YJ9MQ3KHY","ns:uplink:01H5YXJNZABG7H54KY0GZK1EHM","rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01H5YXJNZ9DDEYD157A8ZJ4MDJ","rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01H5YXJP5PHV0DBWATNA897E9W"],"received_at":"2023-07-22T13:45:43.350790106Z","uplink_message":{"session_key_id":"AYlu5XV3aMaeiMVAq8yISw==","f_port":2,"f_cnt":4181,"frm_payload":"NhMAAAAAAAA0/0E=","decoded_payload":{"ACI1_mA":0, "ACI2_mA":0, "%(#ff0000)[AVI1_V":13.843], "AVI2_V":0, "DI1_status":"L", "DI2_status":"H", "DO1_status":"H", "DO2_status":"H", "Hardware_mode":"LT22222", "RO1_status":"OFF", "RO2_status":"OFF", "Work_mode":"2ACI+2AVI"},"rx_metadata":[{"gateway_ids":{"gateway_id":"eui-503139534e7d4750","eui":"503139534E7D4750"},"time":"2023-07-22T13:45:35.699393Z","timestamp":518644732,"rssi":-104,"channel_rssi":-104,"snr":-16.75,"uplink_token":"CiIKIAoUZXVpLTUwMzEzOTUzNGU3ZDQ3NTASCFAxOVNOfUdQEPzHp/cBGgsIh7vvpQYQpY2KRSDgoIqNjN+MAQ==","channel_index":1,"received_at":"2023-07-22T13:45:43.144869029Z"}],"settings":{"data_rate":{"lora":{"bandwidth":125000, "spreading_factor":12, "coding_rate":"4/5"}}, "frequency":"868300000", "timestamp":518644732, "time":"2023-07-22T13:45:35.699393Z"},"received_at":"2023-07-22T13:45:43.146061623Z","consumed_airtime":"1.482752s","version_ids":{"brand_id":"dragino", "model_id":"lt22222-l", "hardware_version":"_unknown_hw_version_", "firmware_version":"1.5.6", "band_id":"EU_863_870"},"network_ids":{"net_id":"000013","tenant_id":"ttn","cluster_id":"eu1","cluster_address":"eu1.cloud.thethings.network"}}}
                                    
                                    {"end_device_ids":{"device_id":"eui-a840414601871305","application_ids":{"application_id":"gs-mg-dragino-01"},"dev_eui":"A840414601871305","join_eui":"A840410000000101","dev_addr":"260BE9CF"},"correlation_ids":["as:up:01H5YXZGAF6GPBPJ5YGPPSXD5G","gs:conn:01H5CGRTDQJ3EW5BPQ15D9SVP8","gs:up:host:01H5CGRTDY5KEGKQ0AQZ22XD9M","gs:uplink:01H5YXZG3X91BKRBXDNHEJCVKW","ns:uplink:01H5YXZG3ZTVCN6ZG22DTRD5F6","rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01H5YXZG3YM34J05XBMH8KEXC7","rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01H5YXZGAE19SK5WXQGSAY4RX2"],"received_at":"2023-07-22T13:52:43.342421706Z","uplink_message":{"session_key_id":"AYlu5XV3aMaeiMVAq8yISw==","f_port":2,"f_cnt":4188,"frm_payload":"NjsAAAAAAAA0/0E=","decoded_payload":{"ACI1_mA":0, "ACI2_mA":0, "%(#ff0000)[%(#ff0000)[***AVI1_V":13.883***]], "AVI2_V":0, "DI1_status":"L", "DI2_status":"H", "DO1_status":"H", "DO2_status":"H", "Hardware_mode":"LT22222", "RO1_status":"OFF", "RO2_status":"OFF", "Work_mode":"2ACI+2AVI"},"rx_metadata":[{"gateway_ids":{"gateway_id":"eui-503139534e7d4750","eui":"503139534E7D4750"},"time":"2023-07-22T13:52:35.686763Z","timestamp":938637580,"rssi":-109,"channel_rssi":-109,"snr":-15,"uplink_token":"CiIKIAoUZXVpLTUwMzEzOTUzNGU3ZDQ3NTASCFAxOVNOfUdQEIzyyb8DGgsIq77vpQYQ7pDNPyDgraPZqOuMAQ==","channel_index":3,"received_at":"2023-07-22T13:52:43.133384302Z"},{"gateway_ids":{"gateway_id":"eui-7076ff0056080b0f","eui":"7076FF0056080B0F"},"time":"2023-07-22T13:52:43.065Z","timestamp":2744651724,"rssi":-112,"channel_rssi":-112,"snr":-9.5,"uplink_token":"CiIKIAoUZXVpLTcwNzZmZjAwNTYwODBiMGYSCHB2/wBWCAsPEMyf4JwKGgsIq77vpQYQrK2YTCDg6fbP8OMjKgsIq77vpQYQwKT/Hg==","gps_time":"2023-07-22T13:52:43.065Z","received_at":"2023-07-22T13:52:42.856942638Z"}],"settings":{"data_rate":{"lora":{"bandwidth":125000, "spreading_factor":12, "coding_rate":"4/5"}}, "frequency":"867100000", "timestamp":938637580, "time":"2023-07-22T13:52:35.686763Z"},"received_at":"2023-07-22T13:52:43.135020669Z","consumed_airtime":"1.482752s","version_ids":{"brand_id":"dragino", "model_id":"lt22222-l", "hardware_version":"_unknown_hw_version_", "firmware_version":"1.5.6", "band_id":"EU_863_870"},"network_ids":{"net_id":"000013","tenant_id":"ttn","cluster_id":"eu1","cluster_address":"eu1.cloud.thethings.network"}}}
                                    

                                    Der Payload ist immer gleich.

                                    paul53 Marc Berg 2 Replies Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @GregorS last edited by

                                      @gregors sagte in Payload Daten in Objekte schreiben:

                                      Aber die Werte stehen immer noch auf 0

                                      alle?
                                      avi2_v ist 0
                                      aci1_mA ebenfalls

                                      avi1_v hat 3 Asterisk davor u d wird deswegen nicht erkannt

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

                                        @gregors sagte: Der Payload ist immer gleich.

                                        "%(#ff0000)[AVI1_V":13.843]
                                        

                                        ist ungültig und kann deshalb nicht geparst werden. In der zweiten Ausgabe sieht es noch schlimmer aus.

                                        "%(#ff0000)[%(#ff0000)[***AVI1_V":13.883***]]
                                        
                                        GregorS 1 Reply Last reply Reply Quote 0
                                        • GregorS
                                          GregorS @paul53 last edited by

                                          @homoran

                                          Habe zur Zeit nur den AVI1_V angeschlossen und DI2 gebrückt.
                                          Alle anderen Eingänge sind offen.
                                          Ist erstmal ein Test.

                                          @paul53 said in Payload Daten in Objekte schreiben:

                                          ist ungültig und kann deshalb nicht geparst werden. In der zweiten Ausgabe sieht es noch schlimmer aus.

                                          Bedeutet, ich kann es vergessen.

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

                                            @gregors sagte: Bedeutet, ich kann es vergessen.

                                            Es gibt dafür eine Ursache (beim Sender?), die behoben werden muss.
                                            Hier war das JSON noch in Ordnung.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            819
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            78
                                            3053
                                            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