Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Zerlegen eines JSON mit bestätigen Werten?

    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

    Zerlegen eines JSON mit bestätigen Werten?

    This topic has been deleted. Only users with topic management privileges can see it.
    • hg6806
      hg6806 Most Active last edited by

      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 Codierknecht 2 Replies Last reply Reply Quote 0
      • M
        MCU @hg6806 last edited by

        @hg6806 setState ergänzen

        setState(..,..,true)
        
        1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @hg6806 last edited by

          @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

          1 Reply Last reply Reply Quote 0
          • hg6806
            hg6806 Most Active last edited by hg6806

            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 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            978
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            3
            4
            234
            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