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.
    • paul53
      paul53 @Meckii last edited by

      @meckii sagte: Greife ich auf das Objekt direkt zu kommt eine Fehlermeldung...

      Wie erfolgt der Zugriff? Zeigen!

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

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

        @meckii sagte: Greife ich auf das Objekt direkt zu kommt eine Fehlermeldung...

        Wie erfolgt der Zugriff? Zeigen!

        Ist erledigt.
        Habs ein Beitrag weiter oben beschrieben - der Fehler saß vor dem Monitor 🙂

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

                            800
                            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