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.
    • Homoran
      Homoran Global Moderator Administrators @Marc Berg last edited by

      @marc-berg sorry, der cache hatte deine Antwort geschluckt. hab sie jetzt nur durch Pauls reponse gefunden.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            871
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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