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 über Aliase, virtuelle Geräte und Kategorien

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

      @homoran
      Ok wenn ich es mache wie du - also das Objekt in einen Text kopieren - dann geht es.
      Greife ich auf das Objekt direkt zu kommt eine Fehlermeldung...

      16:54:44.761	error	javascript.0 (1473) script.js.Strom.Bezug.Messdaten: Cannot parse "mqtt.0.tele.tasmota_729799.SEN"SyntaxError: Unexpected token m in JSON at position 0
      16:54:44.763	error	javascript.0 (1473) script.js.Strom.Bezug.Messdaten: Cannot get zählerstand_tarif_2 of null
      

      Gibt es einen vernünftigen Weg das originale Objekt wie es aus MQTT im ioBroker landet zu kopieren und hier einzufügen?

      Edit:
      Ich nehme alles zurück - der Depp saß vor dem Monitor.
      Man sollte auf den Wert von ObjektID gehen und nicht auf die ObjektID..

      Vielen Dank an alle!

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

                              836
                              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