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. mqtt json-string format

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

mqtt json-string format

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptcommunication
5 Beiträge 3 Kommentatoren 3.5k 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.
  • W Offline
    W Offline
    wannabe
    schrieb am zuletzt editiert von
    #1

    Hallo allerseits,

    ich wusste nicht so wirklich, wie die Überschrift lauten sollte. Da bin ich für Verbesserungsvorschläge offen.
    Zur Sache ... ich habe ein kleines Problemchen, bei dem ich einfach nicht weiterkomme. Die Hauptaktoren bei der Problematik sind IoBroker und ein ESP32 basierender Planzensensor, namens LILYGO TTGO T-Higrow. Vorgeschlagene Firmware bietet kein mqtt. Dank anderer Firmware funktioniert das aktuell auch, der Datenpunkt wird unter mqtt erzeugt und laufend aktualsiert. Soweit, so gut. Läuft, aber ...

    Leider bekomme ich die Werte in einem einzigen Json-String. Den kann ich mangels weiterer Kentnisse nicht in Vis darstellen und auch nicht in weitere Scripte einbinden.

    1.png

    {"Vista":{"Vista":"Pflanze1"},"date":{"date":"09-01"},"time":{"time":"14:28"},"sleep5Count":{"sleep5Count":0},"bootCount":{"bootCount":0},"lux":{"lux":22.5},"temp":{"temp":14.7},"humid":{"humid":70},"soil":{"soil":5},"salt":{"salt":0},"bat":{"bat":154},"rel":{"rel":"1.7"}}
    

    Der Datenpinkt, in den der Json-String geschrieben wird, sieht so aus:

    {
      "common": {
        "name": "Vista/Pflanze1",
        "write": true,
        "read": true,
        "role": "variable",
        "desc": "mqtt server variable",
        "type": "string"
      },
      "native": {
        "topic": "Vista/Pflanze1"
      },
      "type": "state",
      "from": "system.adapter.mqtt.0",
      "user": "system.user.admin",
      "ts": 1610195297496,
      "_id": "mqtt.0.Vista.Pflanze1",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    

    Ich habe ebenfalls von Xiaomi die FlowerCare Sensoren, die Meßwerte sind, sagen wir mal naja.
    Aber die Ausgabe der Daten in seperaten Datenpunkten macht es mir möglich damit weiter zu arbeiten.
    Das Bluetooth Signal von den Flower Care Sensoren wird von mit einem ESP32 aufgefangen und per mqqt
    an einen Broker gesendet. Die Ordnerstruktur und die Datenpunkte sind identisch zu denen, die per Bluetooth übertragen werden.

    2.png

    {
      "type": "state",
      "common": {
        "role": "value",
        "read": true,
        "write": false,
        "name": "Moisture",
        "desc": "Moisture of the soil",
        "type": "number",
        "unit": "%"
      },
      "native": {},
      "from": "system.adapter.ble.0",
      "user": "system.user.admin",
      "ts": 1608768882852,
      "_id": "ble.0.c4:7c:8d:6a:d2:67.moisture",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    

    So hätte ich das auch gern, anstelle des einen Json strings. Bekommt man soetwas sauber hin?
    Den String so behalten, die Werte auslesen und die Datenpunkte seperat aus dem String erzeugen.
    Würde mich aber auch glücklich machen.

    Ich bin mir nicht sicher, ob jemand das Problem versteht, ich hoffe aber schwer drauf, weil ich sonst nicht weiß, wo ich fragen kann und das Projekt damit auf der Kippe steht. Die scripte kann ich bei Bedarf auch dazu hochladen.

    Ich sitze nun seit 2 Tagen davor und habe gefühlt nichts geschafft oder begriffen. Hilfe wäre cool.
    Und nochmals 1,5 Stunden an dem Post hier. :face_with_rolling_eyes:

    paul53P P 2 Antworten Letzte Antwort
    0
    • W wannabe

      Hallo allerseits,

      ich wusste nicht so wirklich, wie die Überschrift lauten sollte. Da bin ich für Verbesserungsvorschläge offen.
      Zur Sache ... ich habe ein kleines Problemchen, bei dem ich einfach nicht weiterkomme. Die Hauptaktoren bei der Problematik sind IoBroker und ein ESP32 basierender Planzensensor, namens LILYGO TTGO T-Higrow. Vorgeschlagene Firmware bietet kein mqtt. Dank anderer Firmware funktioniert das aktuell auch, der Datenpunkt wird unter mqtt erzeugt und laufend aktualsiert. Soweit, so gut. Läuft, aber ...

      Leider bekomme ich die Werte in einem einzigen Json-String. Den kann ich mangels weiterer Kentnisse nicht in Vis darstellen und auch nicht in weitere Scripte einbinden.

      1.png

      {"Vista":{"Vista":"Pflanze1"},"date":{"date":"09-01"},"time":{"time":"14:28"},"sleep5Count":{"sleep5Count":0},"bootCount":{"bootCount":0},"lux":{"lux":22.5},"temp":{"temp":14.7},"humid":{"humid":70},"soil":{"soil":5},"salt":{"salt":0},"bat":{"bat":154},"rel":{"rel":"1.7"}}
      

      Der Datenpinkt, in den der Json-String geschrieben wird, sieht so aus:

      {
        "common": {
          "name": "Vista/Pflanze1",
          "write": true,
          "read": true,
          "role": "variable",
          "desc": "mqtt server variable",
          "type": "string"
        },
        "native": {
          "topic": "Vista/Pflanze1"
        },
        "type": "state",
        "from": "system.adapter.mqtt.0",
        "user": "system.user.admin",
        "ts": 1610195297496,
        "_id": "mqtt.0.Vista.Pflanze1",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Ich habe ebenfalls von Xiaomi die FlowerCare Sensoren, die Meßwerte sind, sagen wir mal naja.
      Aber die Ausgabe der Daten in seperaten Datenpunkten macht es mir möglich damit weiter zu arbeiten.
      Das Bluetooth Signal von den Flower Care Sensoren wird von mit einem ESP32 aufgefangen und per mqqt
      an einen Broker gesendet. Die Ordnerstruktur und die Datenpunkte sind identisch zu denen, die per Bluetooth übertragen werden.

      2.png

      {
        "type": "state",
        "common": {
          "role": "value",
          "read": true,
          "write": false,
          "name": "Moisture",
          "desc": "Moisture of the soil",
          "type": "number",
          "unit": "%"
        },
        "native": {},
        "from": "system.adapter.ble.0",
        "user": "system.user.admin",
        "ts": 1608768882852,
        "_id": "ble.0.c4:7c:8d:6a:d2:67.moisture",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      So hätte ich das auch gern, anstelle des einen Json strings. Bekommt man soetwas sauber hin?
      Den String so behalten, die Werte auslesen und die Datenpunkte seperat aus dem String erzeugen.
      Würde mich aber auch glücklich machen.

      Ich bin mir nicht sicher, ob jemand das Problem versteht, ich hoffe aber schwer drauf, weil ich sonst nicht weiß, wo ich fragen kann und das Projekt damit auf der Kippe steht. Die scripte kann ich bei Bedarf auch dazu hochladen.

      Ich sitze nun seit 2 Tagen davor und habe gefühlt nichts geschafft oder begriffen. Hilfe wäre cool.
      Und nochmals 1,5 Stunden an dem Post hier. :face_with_rolling_eyes:

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @wannabe sagte:

      die Werte auslesen und die Datenpunkte seperat aus dem String erzeugen.

      Vorschlag (nicht getestet):

      const idJson = 'mqtt.0.Vista.Pflanze1';
      const path = '0_userdata.0.Vista.Pflanze1.';
      
      on(idJson, function(dp) {
          let obj = JSON.parse(dp.state.val);
          let id = path + 'temperature';
          if(existsState(id)) setState(id, obj.temp.temp, true);
          else createState(id, obj.temp.temp, {type: 'number', name: 'Temperatur', role: 'value', unit: '°C'});
          id = path + 'humidity';
          if(existsState(id)) setState(id, obj.humid.humid, true);
          else createState(id, obj.humid.humid, {type: 'number', name: 'rel. Luftfeuchte', role: 'value', unit: '%'});
          // usw. für weitere Datenpunkte
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      W 1 Antwort Letzte Antwort
      1
      • paul53P paul53

        @wannabe sagte:

        die Werte auslesen und die Datenpunkte seperat aus dem String erzeugen.

        Vorschlag (nicht getestet):

        const idJson = 'mqtt.0.Vista.Pflanze1';
        const path = '0_userdata.0.Vista.Pflanze1.';
        
        on(idJson, function(dp) {
            let obj = JSON.parse(dp.state.val);
            let id = path + 'temperature';
            if(existsState(id)) setState(id, obj.temp.temp, true);
            else createState(id, obj.temp.temp, {type: 'number', name: 'Temperatur', role: 'value', unit: '°C'});
            id = path + 'humidity';
            if(existsState(id)) setState(id, obj.humid.humid, true);
            else createState(id, obj.humid.humid, {type: 'number', name: 'rel. Luftfeuchte', role: 'value', unit: '%'});
            // usw. für weitere Datenpunkte
        });
        
        W Offline
        W Offline
        wannabe
        schrieb am zuletzt editiert von wannabe
        #3

        @paul53 said in mqtt json-string format:

        ohhh wunderbar, so schnell hast du das Problem gelöst. Es geht und ich klatsche wie ein Duracell Hase.
        Erst kamen nur die Ordner trotz 2x ausführen.
        Hab "temperature" in "temp" und "humidity" in "humid" umbenannt, dann kam auch die Datenpunkte zu den Ordnern.

        Vielen, vielen Dank. Geil ;)

        Kommando zurück, mein editieren war glaub ich ein Schuß in den Ofen.
        Deine Lösung war wohl schon genau richtig. Hauptsache erstmal verbessert, ohne Ahnung zu haben. :face_with_rolling_eyes:.

        paul53P 1 Antwort Letzte Antwort
        0
        • W wannabe

          @paul53 said in mqtt json-string format:

          ohhh wunderbar, so schnell hast du das Problem gelöst. Es geht und ich klatsche wie ein Duracell Hase.
          Erst kamen nur die Ordner trotz 2x ausführen.
          Hab "temperature" in "temp" und "humidity" in "humid" umbenannt, dann kam auch die Datenpunkte zu den Ordnern.

          Vielen, vielen Dank. Geil ;)

          Kommando zurück, mein editieren war glaub ich ein Schuß in den Ofen.
          Deine Lösung war wohl schon genau richtig. Hauptsache erstmal verbessert, ohne Ahnung zu haben. :face_with_rolling_eyes:.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @wannabe sagte:

          Erst kamen nur die Ordner trotz 2x ausführen.

          Offenbar war der Admin-Puffer noch nicht aktualisiert. Die ID-Änderung hat keinen Einfluss.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          1
          • W wannabe

            Hallo allerseits,

            ich wusste nicht so wirklich, wie die Überschrift lauten sollte. Da bin ich für Verbesserungsvorschläge offen.
            Zur Sache ... ich habe ein kleines Problemchen, bei dem ich einfach nicht weiterkomme. Die Hauptaktoren bei der Problematik sind IoBroker und ein ESP32 basierender Planzensensor, namens LILYGO TTGO T-Higrow. Vorgeschlagene Firmware bietet kein mqtt. Dank anderer Firmware funktioniert das aktuell auch, der Datenpunkt wird unter mqtt erzeugt und laufend aktualsiert. Soweit, so gut. Läuft, aber ...

            Leider bekomme ich die Werte in einem einzigen Json-String. Den kann ich mangels weiterer Kentnisse nicht in Vis darstellen und auch nicht in weitere Scripte einbinden.

            1.png

            {"Vista":{"Vista":"Pflanze1"},"date":{"date":"09-01"},"time":{"time":"14:28"},"sleep5Count":{"sleep5Count":0},"bootCount":{"bootCount":0},"lux":{"lux":22.5},"temp":{"temp":14.7},"humid":{"humid":70},"soil":{"soil":5},"salt":{"salt":0},"bat":{"bat":154},"rel":{"rel":"1.7"}}
            

            Der Datenpinkt, in den der Json-String geschrieben wird, sieht so aus:

            {
              "common": {
                "name": "Vista/Pflanze1",
                "write": true,
                "read": true,
                "role": "variable",
                "desc": "mqtt server variable",
                "type": "string"
              },
              "native": {
                "topic": "Vista/Pflanze1"
              },
              "type": "state",
              "from": "system.adapter.mqtt.0",
              "user": "system.user.admin",
              "ts": 1610195297496,
              "_id": "mqtt.0.Vista.Pflanze1",
              "acl": {
                "object": 1636,
                "state": 1636,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator"
              }
            }
            

            Ich habe ebenfalls von Xiaomi die FlowerCare Sensoren, die Meßwerte sind, sagen wir mal naja.
            Aber die Ausgabe der Daten in seperaten Datenpunkten macht es mir möglich damit weiter zu arbeiten.
            Das Bluetooth Signal von den Flower Care Sensoren wird von mit einem ESP32 aufgefangen und per mqqt
            an einen Broker gesendet. Die Ordnerstruktur und die Datenpunkte sind identisch zu denen, die per Bluetooth übertragen werden.

            2.png

            {
              "type": "state",
              "common": {
                "role": "value",
                "read": true,
                "write": false,
                "name": "Moisture",
                "desc": "Moisture of the soil",
                "type": "number",
                "unit": "%"
              },
              "native": {},
              "from": "system.adapter.ble.0",
              "user": "system.user.admin",
              "ts": 1608768882852,
              "_id": "ble.0.c4:7c:8d:6a:d2:67.moisture",
              "acl": {
                "object": 1636,
                "state": 1636,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator"
              }
            }
            

            So hätte ich das auch gern, anstelle des einen Json strings. Bekommt man soetwas sauber hin?
            Den String so behalten, die Werte auslesen und die Datenpunkte seperat aus dem String erzeugen.
            Würde mich aber auch glücklich machen.

            Ich bin mir nicht sicher, ob jemand das Problem versteht, ich hoffe aber schwer drauf, weil ich sonst nicht weiß, wo ich fragen kann und das Projekt damit auf der Kippe steht. Die scripte kann ich bei Bedarf auch dazu hochladen.

            Ich sitze nun seit 2 Tagen davor und habe gefühlt nichts geschafft oder begriffen. Hilfe wäre cool.
            Und nochmals 1,5 Stunden an dem Post hier. :face_with_rolling_eyes:

            P Offline
            P Offline
            PeterKoch
            schrieb am zuletzt editiert von
            #5

            @wannabe darf ich fragen welche Firmware du verwendest hast und ob ein Tutorial zum flashen existiert?

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


            Support us

            ioBroker
            Community Adapters
            Donate

            926

            Online

            32.5k

            Benutzer

            81.6k

            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