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 Json

    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 Json

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

      Hallo,

      habe eine Scriptvorlage auf meine Bedürfnisse angepasst, mache aber irgend einen Fehler.
      Ich hätte jetzt erwartet, dass mir das Script die Datenpunkte unter "alias.0.tasmota" anlegt. Leider klappt das nicht.

      Die Daten kommen über einen IR Lesekopf am Stromzähler über Tasmota.
      Kann mir jemand sagen was ich hier falsch mache?

      const JSPath = "alias.0"                              // JS- Pfad
      const parsedStatesPath   = JSPath + ".tasmota"         // Pfad fuer geparste States
      const zigbee2mqttJsonPath = "mqtt.0.tele.tasmota_192_168_50_134_strom.SENSOR"           //Pfad fuer zigbee2mqtt Json Objekte
      let IDs = [];
       
       
      $("[id=" + zigbee2mqttJsonPath + ".*]").each(function (id) {
          IDs.push(id)
      })
      on({id: IDs, change: "ne"}, function (obj) {
          let JsonObj = JSON.parse(obj.state.val)
          Object.keys(JsonObj).forEach(function(key){
              if (getState(obj.id.replace(zigbee2mqttJsonPath, parsedStatesPath)).notExist){
                  createState(obj.id.replace(zigbee2mqttJsonPath, parsedStatesPath) + '.' + key, JsonObj[key], {read: true, write: true, type: typeof(JsonObj[key]), name: '' , desc: ''},function(){
                      setState(obj.id.replace(zigbee2mqttJsonPath, parsedStatesPath) + '.' + key, JsonObj[key])
              })
              }else {
                  setState(obj.id.replace(zigbee2mqttJsonPath, parsedStatesPath) + '.' + key, JsonObj[key])
              };
          })
      })
      
      
      paul53 T 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @ralf2201 last edited by

        @ralf2201
        Unter "alias.0" kann man keine Datenpunkte mittels createState() erstellen, sondern nur unter "0_userdata.0" und unter "javascript.N".

        1 Reply Last reply Reply Quote 0
        • R
          ralf2201 last edited by ralf2201

          Danke hab ich auf "0_userdata.0" geändert aber der Datenpunkt wird leider nicht angelegt.

          Das Log sagt folgendes.

          
          javascript.0
          2023-06-26 16:34:10.527	info	script.js.common.Skript_5: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @ralf2201 last edited by

            @ralf2201 sagte: registered 0 subscriptions

            "SENSOR" ist ein Verzeichnis unter dem es Datenpunkte gibt?
            Das Skript ist hoffentlich nicht unter der Gruppe "global" erstellt?

            1 Reply Last reply Reply Quote 0
            • R
              ralf2201 last edited by

              Das Script liegt unter "common".

              Der String sieht so aus.

              {"Time":"2023-06-26T16:05:50","E320":{"Total_out":5096.790,"Total_in":3976.460,"Power_in":-6219.000,"Meter_Number":"0a014c475a0003804049"}}

              6104ee9d-21b9-4a23-a3c3-ae3b04c72872-image.png

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

                @ralf2201
                "SENSOR" ist der Datenpunkt. Dann funktioniert der Selektor mit ".*" am Ende nicht.
                Mache es besser so:

                on(zigbee2mqttJsonPath, function(obj) {
                
                1 Reply Last reply Reply Quote 0
                • T
                  TT-Tom @ralf2201 last edited by

                  @ralf2201

                  nur mal gefragt: kommen deine Daten über MQTT - Adapter als JSON?

                  wäre das vielleicht eine Variante ohne Script

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @TT-Tom last edited by paul53

                    @tt-tom sagte: ohne Script

                    Ich würde unter "alias.0" manuell 3 Datenpunkte mit Lesekonvertierung erstellen.

                    • JSON.parse(val).E320.Total_out
                    • JSON.parse(val).E320.Total_in
                    • JSON.parse(val).E320.Power_in

                    Beispiel: Energie-Bezug

                    Alias_MQTT_Bezug.JPG

                    1 Reply Last reply Reply Quote 0
                    • R
                      ralf2201 last edited by

                      Danke, so hat es jetzt auf Anhieb funktioniert. Jetzt werde ich mit dem Script noch etwas tüfteln.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      844
                      Online

                      31.8k
                      Users

                      79.9k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      501
                      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