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. Zerlegen eines JSON mit bestätigen Werten?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    883

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Zerlegen eines JSON mit bestätigen Werten?

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 3 Kommentatoren 324 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.
  • hg6806H Offline
    hg6806H Offline
    hg6806
    Most Active
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe hier eigentlich ein Blockly, welches eine Funktion aufruft und zwar folgende:

    //Datenpunkt mit MQTT-Informationen im json-Format auslesen
    json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})();
    //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
    setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'));
    setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'));
    setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt'));
    setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi'));
    //Log Ausgabe als return der Funktion
    return "MQTT MI_3F59C86390D1 aktualisiert";
    

    Das Ganze funktioniert zwar, jedoch brauche ich die Werte als bestätigt, da sonst der Statistik Adapter nicht funktioniert. Der wertet nur bestätigte Wert aus.
    Wie kann man die Funktion umschreiben?

    M CodierknechtC 2 Antworten Letzte Antwort
    0
    • hg6806H hg6806

      Hallo zusammen,

      ich habe hier eigentlich ein Blockly, welches eine Funktion aufruft und zwar folgende:

      //Datenpunkt mit MQTT-Informationen im json-Format auslesen
      json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})();
      //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
      setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'));
      setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'));
      setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt'));
      setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi'));
      //Log Ausgabe als return der Funktion
      return "MQTT MI_3F59C86390D1 aktualisiert";
      

      Das Ganze funktioniert zwar, jedoch brauche ich die Werte als bestätigt, da sonst der Statistik Adapter nicht funktioniert. Der wertet nur bestätigte Wert aus.
      Wie kann man die Funktion umschreiben?

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2

      @hg6806 setState ergänzen

      setState(..,..,true)
      

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      1 Antwort Letzte Antwort
      0
      • hg6806H hg6806

        Hallo zusammen,

        ich habe hier eigentlich ein Blockly, welches eine Funktion aufruft und zwar folgende:

        //Datenpunkt mit MQTT-Informationen im json-Format auslesen
        json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})();
        //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
        setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'));
        setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'));
        setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt'));
        setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi'));
        //Log Ausgabe als return der Funktion
        return "MQTT MI_3F59C86390D1 aktualisiert";
        

        Das Ganze funktioniert zwar, jedoch brauche ich die Werte als bestätigt, da sonst der Statistik Adapter nicht funktioniert. Der wertet nur bestätigte Wert aus.
        Wie kann man die Funktion umschreiben?

        CodierknechtC Offline
        CodierknechtC Offline
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @hg6806 sagte in Zerlegen eines JSON mit bestätigen Werten?:

        Wie kann man die Funktion umschreiben?

        So wie von @MCU beschrieben.

        Die Doku dazu:
        https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#setstate

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        1 Antwort Letzte Antwort
        0
        • hg6806H Offline
          hg6806H Offline
          hg6806
          Most Active
          schrieb am zuletzt editiert von hg6806
          #4

          Danke euch.

          Hier funktioniert es:

          //Datenpunkt mit MQTT-Informationen im json-Format auslesen
          json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.A4C1381BD71A").val);} catch(e) {return {};}})();
          //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
          setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Temperature", getAttr(json, 'tempc'),true);
          setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Humidity", getAttr(json, 'hum'),true);
          setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Battery", getAttr(json, 'batt'));
          setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.RSSI", getAttr(json, 'rssi'));
          setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Volt", getAttr(json, 'volt'));
          //Log Ausgabe als return der Funktion
          return "MQTT MI_A4C1381BD71A aktualisiert";
          

          Aber hier leider nicht:

          //Datenpunkt mit MQTT-Informationen im json-Format auslesen
          json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})();
          //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
          setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'),true);
          setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'),true);
          setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt'));
          setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi'));
          //Log Ausgabe als return der Funktion
          return "MQTT MI_3F59C86390D1 aktualisiert";
          

          da kommt dann jeweils ein

          {"ack":true}
          

          EDIT: Manchmal kommt beim letzteren ein Wert, manchmal das "{"ack":true}"

          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

          752

          Online

          32.6k

          Benutzer

          82.1k

          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