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 Zeichenkette JSON parsen

    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 Zeichenkette JSON parsen

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

      Hallo Gemeinde!

      Ich versuche den Mqtt-String eines Tasmota Smart-Meters in einzelne Datenpunkte zu zerlegen.
      Für mein Vorhaben gibt es auch gute Beispiele, ich komme aber nicht weiter.

      Kann mal bitte jemand über das Script gucken und mir sagen, wo es klemmt?

      Die Zeichenkette die via mqtt kommt sieht so aus:

      {"Time":"2022-08-24T17:17:12","":{"Meter_Number":"XXXXXXXXXXXXXXX","Total_in":792.5229,"Total_out":290.8330,"Power_curr":25}}
      

      Folgendes Script verwende ich:

      on({id: 'mqtt.0.tele.tasmota_121518.SENSOR', change: "any"}, function (obj) {
      
              var Total_in
              var Total_out
              var Power_curr
          
      
         //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
         try {obj = JSON.parse(getState('mqtt.0.tele.sonoff.SENSOR').val);
         } catch (e) {
                 console.error('Cannot parse: ' + getState('mqtt.0.tele.tasmota_121518.SENSOR').val);
                 return;
          }
         
         Total_in = obj.Total_in;
         Total_out = obj.Total_out;
         Power_curr = obj.Power_curr;
        
        
        setState('javascript.0.Total_in', (Total_in));
        setState('javascript.0.Total_out', (Total_out));
        setState('javascript.0.Power_curr', (Power_curr));
      
         
      });
      
      

      Unter den Objekten im Unterordner Javascript.0 habe ich die 3 Variablen Total_in, Total_out und Power_curr angelegt (Zahl).

      Vielen Dank schonmal für eure Hilfe!

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

        @dundee

           setState('javascript.0.Total_in', obj[''].Total_in, true);
           setState('javascript.0.Total_out', obj[''].Total_out, true);
           setState('javascript.0.Power_curr', obj[''].Power_curr, true);
        
        D 1 Reply Last reply Reply Quote 0
        • D
          dundee @paul53 last edited by dundee

          @paul53

          Funktioniert leider auch nicht. Die Log sagt folgendes:

          19:29:22.641	warn	javascript.0 (496) at Object.<anonymous> (script.js.Smartmeter_JS:9:26)
          19:29:22.642	error	javascript.0 (496) at Object.<anonymous> (script.js.Smartmeter_JS:15:19)
          

          //EDIT:
          Typischer copy / paste Fehler in Zeile neun. Habe dort mein Gerät nicht eingetragen.... Danke für die Hilfe!

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

          Support us

          ioBroker
          Community Adapters
          Donate

          671
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          2
          3
          514
          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