Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. mqtt Payload von TNN zu IOBroker decoden

    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

    mqtt Payload von TNN zu IOBroker decoden

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      flehmann1234 last edited by flehmann1234

      Hallo,

      ich bin neu hier und hoffe auf einen Tipp für mein kleines Problem mit dem Decodieren von MQTT Payloads. Ich bekomme es nicht so recht hin, die Daten im IO Broker anzulegen. Viele meiner anderen Fragen konnte ich bereits im Forum nachlesen, wirklich sehr sehr hilfreich, danke dafür!

      Sobald ich einen neuen Fenstersensor in TNN integriere, wird dieser automatisch als Objekt im IOBroker angelegt, soweit so gut.

      8726dc1e-72ad-4597-98ba-c7bc940b23c6-image.png

      Im Feld Wert wird folgender Wert eingespeichert:

      {"end_device_ids":{"device_id":"05-kg-kueche-hintertuer","application_ids":{"application_id":"fenstersensoren"},"dev_eui":"A84041926183EDDA","join_eui":"A840410000000107","dev_addr":"260B2243"},"correlation_ids":["as🆙01FV3D09B9V3ETAP1BZAEFMT3Z","gs:conn:01FTS84B358ED261TB5RY6N9F8","gs🆙host:01FTS84B3D4E5BA1AV56C125R0","gs:uplink:01FV3D09454QG2TJ9JXPXXANB7","ns:uplink:01FV3D094NQ8537EYWK2E7YP4Y","rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01FV3D094NZXAX2WHYX625J3HD","rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01FV3D09B8KF91AYJSJBBJVXQK"],"received_at":"2022-02-04T22:17:16.906561406Z","uplink_message":{"session_key_id":"AX6WxzPUM62CROAz2oRFeA==","f_port":10,"f_cnt":104,"frm_payload":"DFoBAAA3AAAAAA==","decoded_payload":{"ALARM":0,"BAT_V":3.162,"DOOR_OPEN_STATUS":0,"DOOR_OPEN_TIMES":55,"LAST_DOOR_OPEN_DURATION":0,"MOD":1},"rx_metadata":[{"gateway_ids":{"gateway_id":"05-andreasberg","eui":"A84041211B2C4150"},"time":"2022-02-04T22:17:16.657852Z","timestamp":4174745691,"rssi":-91,"channel_rssi":-91,"snr":8.2,"location":{"latitude":52.3220922480177,"longitude":10.401136254215945,"source":"SOURCE_REGISTRY"},"uplink_token":"ChwKGgoOMDUtYW5kcmVhc2JlcmcSCKhAQSEbLEFQENug1sYPGgwI7Mv2jwYQhbaSwwIg+MbvkcCzQSoMCOzL9o8GEOCM2LkC"}],"settings":{"data_rate":{"lora":{"bandwidth":125000,"spreading_factor":7}},"coding_rate":"4/5","frequency":"868100000","timestamp":4174745691,"time":"2022-02-04T22:17:16.657852Z"},"received_at":"2022-02-04T22:17:16.693896219Z","consumed_airtime":"0.061696s","version_ids":{"brand_id":"dragino","model_id":"lds01","hardware_version":"unknown_hw_version","firmware_version":"1.3.0","band_id":"EU_863_870"},"network_ids":{"net_id":"000013","tenant_id":"ttn","cluster_id":"ttn-eu1"}}}
      

      Ich würde gern den Payload auslesen und als einzelne Werte im Fenstersensor anzeigen lassen

      decoded_payload":{"ALARM":0,"BAT_V":3.162,"DOOR_OPEN_STATUS":0,"DOOR_OPEN_TIMES":55,"LAST_DOOR_OPEN_DURATION":0,"MOD":1}

      Folgendes Script habe ich gefunden, welches in einem ähnlichem Fall die Werte ausliest und in IOBROKER abspeichert.


      Die Umsetzung in ioBroker-Variablen erfolgt über ein JavaScript-Script. Dieses konvertiert die Werte passend zum ioBroker. Auskommentiert ist noch eine Möglichkeit die rohen JSON-Pakete vom TTN zum entsprechenden Sensor mitzuloggen.

      ttn_decode
      
      
      
      //Temperatursensor 1
      createState("custom.ttn.temp_sensor01.temperature", false, {
          name: "Temperature",
          read: true, 
          write: false, 
          desc: "", 
          def: 0, 
          unit: "°C",
          role: "value.temperature",
          type: "number"
      });
      createState("custom.ttn.temp_sensor01.humidity", false, {
          name: "Humidity",
          read: true, 
          write: false, 
          desc: "", 
          def: 0, 
          unit: "%",
          role: "value.humidity",
          type: "number"
      });
      createState("custom.ttn.temp_sensor01.pressure", false, {
          name: "Pressure",
          read: true, 
          write: false, 
          desc: "", 
          def: 0, 
          unit: "hPa",
          role: "value.pressure",
          type: "number"
      });
      createState("custom.ttn.temp_sensor01.battery", false, {
          name: "Battery",
          read: true, 
          write: false, 
          desc: "", 
          def: 0, 
          unit: "V",
          role: "",
          type: "number"
      });
       
      //const fs = require('fs');
       
      on({id: 'mqtt.1.mh-sensornetwork.devices.temp_sensor01.up', change: "ne"}, function (obj) {
          obj = JSON.parse(getState("mqtt.1.mh-sensornetwork.devices.temp_sensor01.up").val);
          setState("custom.ttn.temp_sensor01.temperature", parseFloat(obj["payload_fields"]["temperature"].toFixed(2)), true);
          setState("custom.ttn.temp_sensor01.humidity", parseFloat(obj["payload_fields"]["humidity"].toFixed(2)), true);
          setState("custom.ttn.temp_sensor01.pressure", parseFloat((obj["payload_fields"]["pressure"]/100.0).toFixed(2)), true);
          setState("custom.ttn.temp_sensor01.battery", parseFloat(((3.3/1024.0)*parseFloat(obj["payload_fields"]["battery"])*2.0).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("mqtt.1.mh-sensornetwork.devices.temp_sensor01.up").val + "\r\n");
          */
      });
      

      1. Meine Frage wäre nun, wo muss ich das Script einfügen, damit es auf die neuen automatisch hinzugefügten Geräte reagiert? Mache ich das über Node Red oder Blockly? und wie triggere ich das Script?

      Danke vielmals

      Grüße Fabian

      F mickym 2 Replies Last reply Reply Quote 0
      • F
        flehmann1234 @flehmann1234 last edited by

        @flehmann1234 jetzt habe ich was gefunden...

        https://forum.iobroker.net/topic/46100/mqtt-parsen-mit-blockly?_=1644016678753

        c06f8317-4868-40f9-a704-a914973b2727-image.png

        könnte das so funktioieren?

        J 1 Reply Last reply Reply Quote 0
        • J
          J_Paul @flehmann1234 last edited by J_Paul

          @flehmann1234 Ich habe Dir mal geschrieben.
          1cab3800-b414-4a67-80f3-36a76a598785-image.png

          F S 2 Replies Last reply Reply Quote 0
          • F
            flehmann1234 @J_Paul last edited by

            @j_paul danke für deine Hilfe, hast mir sehr weiter geholfen.

            Jetzt kann ich endlich loslegen... Grüße

            1 Reply Last reply Reply Quote 1
            • S
              starfish @J_Paul last edited by starfish

              @j_paul sagte in mqtt Payload von TNN zu IOBroker decoden:

              @flehmann1234 Ich habe Dir mal geschrieben.
              1cab3800-b414-4a67-80f3-36a76a598785-image.png

              das ist genau was ich suche - gibts dazu auch noch ein script?

              1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @flehmann1234 last edited by

                @flehmann1234 Wenn Du es über Node-Red machen möchtest, habe ich bereits eine fertige Node, die Dir alle Datenpunkte anlegt und befüllt.

                Da musst Du quasi nichts mehr programmieren:

                https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

                Ich habe eigentlich alles erklärt. Falls Du noch Fragen hast, dann melde Dich einfach.

                F 1 Reply Last reply Reply Quote 0
                • F
                  flehmann1234 @mickym last edited by

                  @mickym danke für den Hinweis, schaue ich mir mal in Ruhe an.

                  Derzeit habe ich mich mit einem Blockly Sript beholfen.
                  67971771-12a8-4200-8f83-006a12afcb0c-image.png

                  Hier hat mir @hafenmeister sehr geholfen.

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @flehmann1234 last edited by

                    @flehmann1234 sagte in mqtt Payload von TNN zu IOBroker decoden:

                    @mickym danke für den Hinweis, schaue ich mir mal in Ruhe an.

                    Kein Problem - kam durch Dich auf die Idee - meine Node noch zu erweitern, damit ist sie noch universeller nutzbar und man kann damit automatisiert ganze Objektbäume erstellen. 😉

                    Und wenn Du mit Deiner Lösung zufrieden bist, dann ist ja alles gut. 🙂

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    776
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    830
                    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