Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Shelly per Blockly auslesen / parsen

    NEWS

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    Shelly per Blockly auslesen / parsen

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

      Moin zusammen,

      ich habe mal wieder eine Frage / ein Anliegen:

      Meine Shelly-Geräte übermitteln ihre Werte alle per MQTT an meinen zentralen MQTT Server (EMQX). Den Shelly-Adapter möchte ich eigentlich nicht nutzen, da ich alles auf dem MQTT Server halten möchte.

      Meine Shellys schreiben ihre Informationen also alle in Richtung des MQTT Server, den habe ich im ioBroker abonniert und die Werte stehen dann in den entsprechenden Datenpunkt, hier also der Datenpunkt:

      mqqt/0/Waermepumpe1/status/switch:0:
      

      In dem Datenpunkt stehen dann folgende Informationen:

      {"id":0, "source":"init", "output":true, "apower":1072.6, "voltage":231.4, "current":4.870, "aenergy":{"total":4145268.729,"by_minute":[17865.943,17855.005,17845.969],"minute_ts":1758697440},"temperature":{"tC":45.3, "tF":113.5}}
      

      Nun würde ich gerne den Wert apower und total auslesen. Den Wert "apower" kann ich nun mit dem untenstehenden Blockly auslesen, den Wert aenergy/total leider nicht.

      Und eine Frage: Ist mein Vorgehen so "logisch" okay oder komplett falsch abgebogen?

      Hier mein Blockly-Segment (das ist quasi nur eine Herleitung, bin schon froh, dass überhaupt apower kommt):

      schedule("*/5 * * * * *", async () => {
        console.info((() => { try { return JSON.parse(getState('mqtt.0.Waermepumpe1.status.switch:0').val); } catch (e) { return {}; }})());
        console.info(getAttr((() => { try { return JSON.parse(getState('mqtt.0.Waermepumpe1.status.switch:0').val); } catch (e) { return {}; }})(), 'apower'));
        console.info(getAttr((() => { try { return JSON.parse(getState('mqtt.0.Waermepumpe1.status.switch:0').val); } catch (e) { return {}; }})(), 'total'));
      });
      

      Für den Wert "aenergy/total" bekomme ich aber nur "undefined" zurück, ich glaube weil der verschachtelt unter aenergy hängt?

      Mag mir da mal jemand helfen?

      Ich kann leider keine weiteren Screenshots hochladen, ich weiß nicht warum 😞

      Danke,
      Moritz

      Asgothian paul53 2 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @DasMoritz last edited by

        @dasmoritz die Funktion getAttr kenn ich nicht, aber:

        JSON.parse("dein Payload").aenergy.total sollte deinen Wert beinhalten.

        Wenn du dir sorgen machst das er nicht existiert, dann:

        const jsonObj = JSON.parse(obj.val);
        const total = jsonObj.aenergy ? jsonObj.aenergy.total ? 'no energy';
        const power = jsonObj.apower;
        

        Ansonsten:

        • warum zum Teufel ein Heartbeat ?
        • warum liest du den gleichen State im Heartbeat 3 mal ein ?
        • warum parsed du den gleichen String im Heartbeat 3 mal ?
        • Du willst blockly - warum postest du dann JS Code ?

        A.

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

          @dasmoritz sagte: Für den Wert "aenergy/total" bekomme ich aber nur "undefined" zurück

          Das trennt man mit einem Punkt:

          Blockly_temp.JPG

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

          Support us

          ioBroker
          Community Adapters
          Donate

          927
          Online

          32.1k
          Users

          80.8k
          Topics

          1.3m
          Posts

          3
          3
          65
          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