Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. JSON als Datenpunkt/mqtt

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

JSON als Datenpunkt/mqtt

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
5 Beiträge 3 Kommentatoren 1.2k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Z Offline
    Z Offline
    zecki79
    schrieb am zuletzt editiert von
    #1

    Hallo Leute,

    habe mir den "Air Quality Monitor" SPS208 zugelegt.

    Dieser sendet mir per mqtt folgende Json:

    {"ts":"2019-02-18T22:21:00Z","rco2 (ppm)":857.1,"rtemp":-45,"rhumid":0,"km102.rtvoc (ppb)":125.3,"km102.rhumid":43.82,"km102.rtemp":21.63,"km100.rgt25":0,"km100.rpm25":1.13,"km100.rpm25c":1.349,"km100.rgt03":507.9,"km100.rpm10":1.174,"km100.rpm10c":1.4,"rbtrytemp":30,"rbtryvoltage_now":3544000,"rbtryvoltage_max":4100000,"rbtrycurrent_now":-441000,"rbrdtemp":30}
    

    mit folgendem java script (aus einem anderen Beitrag kopiert ;-) )kann ich auch gewisse Datenpunkte auslesen:

    //MQTT Json to Objekt
     
    // var setzen
     
    // Create States
    createState('javascript.0.jsonconverter.sonoff.Watt', 0,{type: 'nummer',name: 'Aktuelle Watt Zahl', read: true,write: true,role: 'value.watt'})
    createState('javascript.0.jsonconverter.sonoff.Volt', 0,{type: 'nummer',name: 'Aktuelle Volt Zahl', read: true,write: true,role: 'value.voltage'})
    createState('javascript.0.jsonconverter.sonoff.Ampere', 0,{type: 'nummer',name: 'Aktuelle Ampere Zahl', read: true,write: true,role: 'value.ampere'})
     
    // Script beginning
    on({id: "sonoff.0.Büro.POWER"/*Büro POWER*/, change: "any"}, function (obj) {
     
       //variabele erstellen fuer meine 3 beispiel objecte
            var volt;
            var watt;  
            var ampere; 
     
       //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.device.pro.history.42a2b53b-2db4-4c44-81d4-feb55209f1f8"/*device/pro/history/42a2b53b-2db4-4c44-81d4-feb55209f1f8*/).val);
       } catch (e) {
               console.error('Cannot parse: ' + getState("mqtt.0.device.pro.history.42a2b53b-2db4-4c44-81d4-feb55209f1f8"/*device/pro/history/42a2b53b-2db4-4c44-81d4-feb55209f1f8*/).val);
               return;
        }
        //hier schreien wir die daten des json strings in die variabelen, links die variable und rechts der name im json. obj bedeuten halt lese den wert nach :
        // bei dir waere das z.b. obj.time / obj.yesterday usw
       volt = obj.ts;
       watt = obj.rhumid;
       ampere = obj.rtemp;
     
    //
     
    setState('javascript.0.jsonconverter.sonoff.Watt', (watt));
    setState('javascript.0.jsonconverter.sonoff.Volt', (volt));
    setState('javascript.0.jsonconverter.sonoff.Ampere', (ampere));
     
       //jetzt lass uns mal im log zeigen was wir bekommen haben
       log(volt);
       log(watt);
       log(ampere);
    });
    

    Nur leider kann ich keine Datenpunkte mit einem Leerzeichen (zB volt =obj.rco2 (ppm);) oder mit einem Punkt (zB. volt= obj.km102.rhumid;) auslesen, es kommt immer ein error.

    Wie kann ich diese Datenpunkte auslesen?

    Das Script werde ich dann anpassen, wenn ich alle Daten auslesen kann.

    Kann leider kein javascript. Habe bisher immer alles mit blockly gemacht, nur in diesem Fall komme ich leider damit auch nicht weiter.

    Herzlichen Dank für Eure Hilfe!!!

    lg
    Chris

    1 Antwort Letzte Antwort
    0
    • Lenny.CBL Offline
      Lenny.CBL Offline
      Lenny.CB
      Most Active
      schrieb am zuletzt editiert von
      #2

      so vielleicht:

      var json = '{"ts":"2019-02-18T22:21:00Z","rco2 (ppm)":857.1,"rtemp":-45,"rhumid":0,"km102.rtvoc (ppb)":125.3,"km102.rhumid":43.82,"km102.rtemp":21.63,"km100.rgt25":0,"km100.rpm25":1.13,"km100.rpm25c":1.349,"km100.rgt03":507.9,"km100.rpm10":1.174,"km100.rpm10c":1.4,"rbtrytemp":30,"rbtryvoltage_now":3544000,"rbtryvoltage_max":4100000,"rbtrycurrent_now":-441000,"rbrdtemp":30}';
      
      var obj = JSON.parse(json);
      
      for (i=0; i<Object.keys(obj).length; i++){
          log(Object.keys(obj)[i] + ': ' + obj[Object.keys(obj)[i]]);    
      }
      
      1 Antwort Letzte Antwort
      0
      • BuZZyB Offline
        BuZZyB Offline
        BuZZy
        schrieb am zuletzt editiert von BuZZy
        #3

        Verwende einfach die sogenannte bracket notation um auf die Werte zuzugreifen..
        Also so:

        co2 = obj['rco2 (ppm)'];
        

        Gruß

        1 Antwort Letzte Antwort
        0
        • Z Offline
          Z Offline
          zecki79
          schrieb am zuletzt editiert von
          #4

          Hi,

          herzlichen Dank für die Lösungsvorschläge!
          Werde ich heute nach der Arbeit ausprobieren!

          Lg
          Chris

          1 Antwort Letzte Antwort
          0
          • Z Offline
            Z Offline
            zecki79
            schrieb am zuletzt editiert von
            #5

            So, der Hinweis von BuZZy konnte mein Problem lösen! Nochmals herzlichen Dank!

            lg

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            554

            Online

            32.4k

            Benutzer

            81.4k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe