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 @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

                          373
                          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