Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Daten Objekt aus MQTT zerlegen und in eigene Objekte packen

    NEWS

    • Neues Video auf YouTube

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Daten Objekt aus MQTT zerlegen und in eigene Objekte packen

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

      Meine Lösung für die Nachwelt:

      var Objekt, wirkleistung, tarif1, tarif2, serverid;
      
      createState('Strom.Bezug.Wirkleistung', 0, JSON.parse('{"type": "number", "unit": "W"}'), async () => {
      });
      createState('Strom.Bezug.ZaehlerstandHT', 0, JSON.parse('{"type": "number", "unit": "kWh"}'), async () => {
      });
      createState('Strom.Bezug.ZaehlerstandNT', 0, JSON.parse('{"type": "number", "unit": "kWh"}'), async () => {
      });
      createState('Strom.Bezug.Server_ID', 0, async () => {
      });
      on({ id: [].concat(['mqtt.0.tele.tasmota_123456.SENSOR']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        Objekt = getState('mqtt.0.tele.tasmota_123456.SENSOR').val;
        wirkleistung = getAttr(getAttr(Objekt, ''), 'aktuelle_wirkleistung');
        tarif1 = getAttr(getAttr(Objekt, ''), 'zählerstand_tarif_1');
        tarif2 = getAttr(getAttr(Objekt, ''), 'zählerstand_tarif_2');
        serverid = getAttr(getAttr(Objekt, ''), 'Server_ID');
        setState('javascript.0.Strom.Bezug.Wirkleistung' /* Strom.Bezug.Wirkleistung */, wirkleistung, true);
        setState('javascript.0.Strom.Bezug.ZaehlerstandHT' /* Strom.Bezug.ZaehlerstandHT */, tarif1, true);
        setState('javascript.0.Strom.Bezug.ZaehlerstandNT' /* Strom.Bezug.ZaehlerstandNT */, tarif2, true);
        setState('javascript.0.Strom.Bezug.Server_ID' /* Strom.Bezug.Server_ID */, serverid, true);
      });
      
      
      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Meckii last edited by

        @meckii sagte in Daten Objekt aus MQTT zerlegen und in eigene Objekte packen:

        Meine Lösung für die Nachwelt:

        wo ist das Blockly dazu?
        https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

        @meckii sagte in Daten Objekt aus MQTT zerlegen und in eigene Objekte packen:

        der Fehler saß vor dem Monitor

        ID statt Wert von?

        immer alles zeigen, zeigen, zeigen!!
        was du trotz Nachfrage nicht gemacht hast

        M 2 Replies Last reply Reply Quote 0
        • M
          Meckii @Homoran last edited by Meckii

          @homoran
          Das reiche ich gerne nach.
          War nur so dass ich zwei Kinder auf mir rumturnen hatte - jetzt sind sie im Bett 🙂
          Screenshot 2023-12-10 193239.png

          Mir war übrigens nicht klar, warum ich dann etwas zeigen sollte wo ich den Fehler schon gefunden hatte...
          ICh gelobe besserung 🍻

          paul53 1 Reply Last reply Reply Quote 0
          • M
            Meckii @Homoran last edited by

            @homoran sagte in Daten Objekt aus MQTT zerlegen und in eigene Objekte packen:

            ID statt Wert von?

            immer alles zeigen, zeigen, zeigen!!
            was du trotz Nachfrage nicht gemacht hast

            Ich hatte versehentlich den oberen Block genommen statt den unteren.
            Screenshot 2023-12-10 194021.png

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Meckii last edited by Homoran

              @meckii sagte in Daten Objekt aus MQTT zerlegen und in eigene Objekte packen:

              @paul53 Da bekomme ich eine Fehlermeldung

              Cannot parse "mqtt.0.tele.tasmota_729799.SEN"SyntaxError: Unexpected token m in JSON at position 0

              das sah nämlich nach der DP ID aus, deswegen schrieb @paul53 auch sofort

              @paul53 sagte in Daten Objekt aus MQTT zerlegen und in eigene Objekte packen:

              Blockly zeigen!

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

                @meckii sagte in: Das reiche ich gerne nach.

                Einfacher:

                Blockly_temp.JPG

                1 Reply Last reply Reply Quote 2
                • CPU6502
                  CPU6502 @Meckii last edited by CPU6502

                  @Meckii
                  Das geht auch ohne Blockly:

                  Einfach einen neuen Alias für dein Quellobjekt (“mqtt.0.tele.tasmota_729799.SENSOR") anlegen und dann im Alias eine Konvertierungsfunktion beim Lesen verwenden:

                  JSON.parse(val).aktuelle_wirkleistung

                  In deinem Beispiel ist nur der Attributname des verschachtelten JSON-Objekts merkwürdigerweise leer. Das sollte eigentlich nicht sein, daher wird das so wie von mir angegeben vermutlich nicht direkt funktionieren. Du musst zunächst in deiner Tasmota-Konfiguration dafür sorgen, dass hier ein Attributname vergeben wird (z.B. „Energie“). Dann kannst du den Wert mittels

                  JSON.parse(val).Energie.aktuelle_wirkleistung

                  extrahieren.

                  Viele Grüße, Stefan

                  paul53 mickym 2 Replies Last reply Reply Quote 0
                  • paul53
                    paul53 @CPU6502 last edited by

                    @cpu6502 sagte: JSON.parse(val).aktuelle_wirkleistung

                    JSON.parse(val)[''].aktuelle_wirkleistung
                    
                    1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @CPU6502 last edited by

                      @cpu6502 sagte in Daten Objekt aus MQTT zerlegen und in eigene Objekte packen:

                      @Meckii
                      Das geht auch ohne Blockly:

                      Ja oder mit meinem Node-red Flow, der zerlegt jedes JSON in einzelne Datenpunkte.

                      1 Reply Last reply Reply Quote 0
                      • D
                        disko @Thomas Braun last edited by

                        @thomas-braun Hallo und danke für dieses Skript, Datenpunkte angepasst und es läuft
                        Gruß Dirk

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        779
                        Online

                        32.0k
                        Users

                        80.5k
                        Topics

                        1.3m
                        Posts

                        7
                        24
                        1257
                        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