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.
    • paul53
      paul53 @Marc Berg last edited by

      @marc-berg sagte: unterschiedliche Payloads

      Dann sollte man prüfen.

      Blockly_temp.JPG

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            479
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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