Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Blockly - Sub-Objekt Wert ändern

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    249

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    240

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    899

Blockly - Sub-Objekt Wert ändern

Geplant Angeheftet Gesperrt Verschoben Blockly
4 Beiträge 2 Kommentatoren 201 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • BananaJoeB Online
    BananaJoeB Online
    BananaJoe
    Most Active
    schrieb am zuletzt editiert von BananaJoe
    #1

    Ich habe gestern meinen ersten Shelly Pro 3 erhalten und - ähnlich wie @Walter-O - baue ich mir gerade ein Skript für die Auswertung und das Schalten (über MQTT / RPC).

    Zum Schalten muss ich einen JSON wie diesen senden:

    {"id":0,"src":"shellies/ShellyPro3-Buero-59/rpc-response","method":"Switch.Set","params":{"id":0,"on":false}}
    

    unter params muss ich die id 0,1 oder 2 wählen, dazu dann on auf true oder false
    src gibt an, an welchem Topic das Ergebnis aka Result vom Shelly gesendet wird.

    Nun dacht ich, ich mache es mir einfach und wandle das JSON in ein Objekt, ändere die Werte und sende es wiederum in ein JSON konvertiert an den entsprechenden MQTT-Datenpunkt.
    Nun ist param ja ein - ich nennen das jetzt mal so - Subobjekt / Unterobjekt.
    Wie mache ich das mit den vorgegebenen Bausteinen?

    6d8e62a7-9293-46c4-99d4-d8384f9eaf01-image.png
    und der Export:

    <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
        <variable id="1SE|mW%0mMn7R3:V^R1}">MyJSON</variable>
        <variable id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</variable>
      </variables>
      <block type="variables_set" id="/!PewV:=To515X^%8,YG" x="62" y="62">
        <field name="VAR" id="1SE|mW%0mMn7R3:V^R1}">MyJSON</field>
        <value name="VALUE">
          <block type="text" id="9!l2fKzf=aH521#|S+)1">
            <field name="TEXT">{"id":0,"src":"shellies/ShellyPro3-Buero-59/rpc-response","method":"Switch.Set","params":{"id":0,"on":false}}</field>
          </block>
        </value>
        <next>
          <block type="variables_set" id="9ms?NL|0B21P}(C/Jib7">
            <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
            <value name="VALUE">
              <block type="convert_json2object" id="@qulm)U2$ZJ8Y(G}8]Tq">
                <value name="VALUE">
                  <block type="text" id="X.#/3yNBs+lkp3AOW$}4">
                    <field name="TEXT">{"id":0,"src":"shellies/ShellyPro3-Buero-59/rpc-response","method":"Switch.Set","params":{"id":0,"on":false}}</field>
                  </block>
                </value>
              </block>
            </value>
            <next>
              <block type="object_set_attr" id="UZrMs;N{pyDzb[WeRlSO">
                <field name="ATTR">src</field>
                <value name="OBJECT">
                  <block type="variables_get" id="CW-dvJi#_{BTr=yiGmBk">
                    <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                  </block>
                </value>
                <value name="VALUE">
                  <shadow type="text" id="L]|A]:gAiw/rf1wnHu8p">
                    <field name="TEXT">NurEinTest</field>
                  </shadow>
                </value>
                <next>
                  <block type="debug" id="1V?[]u6!bb*2`S#?Hc,m">
                    <field name="Severity">log</field>
                    <value name="TEXT">
                      <shadow type="text" id="g*4-QP/wF}}.GC:FBPi%">
                        <field name="TEXT">test</field>
                      </shadow>
                      <block type="variables_get" id="$nl[s0Oa!wrbvS-^#o!`">
                        <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                      </block>
                    </value>
                    <next>
                      <block type="object_set_attr" id="[GTA1boehshefRT}e1S+">
                        <field name="ATTR">params.on</field>
                        <value name="OBJECT">
                          <block type="variables_get" id="f3KMRHJtyE47+*]!P=i!">
                            <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                          </block>
                        </value>
                        <value name="VALUE">
                          <shadow type="text" id="7[VE~al7}LB8bT%Q2svp">
                            <field name="TEXT">NurEinTest</field>
                          </shadow>
                          <block type="logic_boolean" id="T,~~IRUwio_%:/,p4hx^">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                        <next>
                          <block type="debug" id="0T3zfR%q3[~VL/)U:E*}">
                            <field name="Severity">log</field>
                            <value name="TEXT">
                              <shadow type="text" id="g*4-QP/wF}}.GC:FBPi%">
                                <field name="TEXT">test</field>
                              </shadow>
                              <block type="variables_get" id="7l;x({FJuM?_Nw)!]k5b">
                                <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                              </block>
                            </value>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </xml>
    

    Wie wäre die richtige Schreibweise in dem "Setze Attribut" Block um auf das Sub-Item zuzugreifen? er hängt das nur an:

    2024-03-15 10:21:00.756  - info: javascript.0 (2441614) script.js.Tests.Forum_Test_JSON: {
      id: 0,
      src: 'NurEinTest',
      method: 'Switch.Set',
      params: { id: 0, on: false },
      'params.on': true
    }
    
    

    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • BananaJoeB BananaJoe

      Ich habe gestern meinen ersten Shelly Pro 3 erhalten und - ähnlich wie @Walter-O - baue ich mir gerade ein Skript für die Auswertung und das Schalten (über MQTT / RPC).

      Zum Schalten muss ich einen JSON wie diesen senden:

      {"id":0,"src":"shellies/ShellyPro3-Buero-59/rpc-response","method":"Switch.Set","params":{"id":0,"on":false}}
      

      unter params muss ich die id 0,1 oder 2 wählen, dazu dann on auf true oder false
      src gibt an, an welchem Topic das Ergebnis aka Result vom Shelly gesendet wird.

      Nun dacht ich, ich mache es mir einfach und wandle das JSON in ein Objekt, ändere die Werte und sende es wiederum in ein JSON konvertiert an den entsprechenden MQTT-Datenpunkt.
      Nun ist param ja ein - ich nennen das jetzt mal so - Subobjekt / Unterobjekt.
      Wie mache ich das mit den vorgegebenen Bausteinen?

      6d8e62a7-9293-46c4-99d4-d8384f9eaf01-image.png
      und der Export:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="1SE|mW%0mMn7R3:V^R1}">MyJSON</variable>
          <variable id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</variable>
        </variables>
        <block type="variables_set" id="/!PewV:=To515X^%8,YG" x="62" y="62">
          <field name="VAR" id="1SE|mW%0mMn7R3:V^R1}">MyJSON</field>
          <value name="VALUE">
            <block type="text" id="9!l2fKzf=aH521#|S+)1">
              <field name="TEXT">{"id":0,"src":"shellies/ShellyPro3-Buero-59/rpc-response","method":"Switch.Set","params":{"id":0,"on":false}}</field>
            </block>
          </value>
          <next>
            <block type="variables_set" id="9ms?NL|0B21P}(C/Jib7">
              <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
              <value name="VALUE">
                <block type="convert_json2object" id="@qulm)U2$ZJ8Y(G}8]Tq">
                  <value name="VALUE">
                    <block type="text" id="X.#/3yNBs+lkp3AOW$}4">
                      <field name="TEXT">{"id":0,"src":"shellies/ShellyPro3-Buero-59/rpc-response","method":"Switch.Set","params":{"id":0,"on":false}}</field>
                    </block>
                  </value>
                </block>
              </value>
              <next>
                <block type="object_set_attr" id="UZrMs;N{pyDzb[WeRlSO">
                  <field name="ATTR">src</field>
                  <value name="OBJECT">
                    <block type="variables_get" id="CW-dvJi#_{BTr=yiGmBk">
                      <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                    </block>
                  </value>
                  <value name="VALUE">
                    <shadow type="text" id="L]|A]:gAiw/rf1wnHu8p">
                      <field name="TEXT">NurEinTest</field>
                    </shadow>
                  </value>
                  <next>
                    <block type="debug" id="1V?[]u6!bb*2`S#?Hc,m">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                        <shadow type="text" id="g*4-QP/wF}}.GC:FBPi%">
                          <field name="TEXT">test</field>
                        </shadow>
                        <block type="variables_get" id="$nl[s0Oa!wrbvS-^#o!`">
                          <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                        </block>
                      </value>
                      <next>
                        <block type="object_set_attr" id="[GTA1boehshefRT}e1S+">
                          <field name="ATTR">params.on</field>
                          <value name="OBJECT">
                            <block type="variables_get" id="f3KMRHJtyE47+*]!P=i!">
                              <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                            </block>
                          </value>
                          <value name="VALUE">
                            <shadow type="text" id="7[VE~al7}LB8bT%Q2svp">
                              <field name="TEXT">NurEinTest</field>
                            </shadow>
                            <block type="logic_boolean" id="T,~~IRUwio_%:/,p4hx^">
                              <field name="BOOL">TRUE</field>
                            </block>
                          </value>
                          <next>
                            <block type="debug" id="0T3zfR%q3[~VL/)U:E*}">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                                <shadow type="text" id="g*4-QP/wF}}.GC:FBPi%">
                                  <field name="TEXT">test</field>
                                </shadow>
                                <block type="variables_get" id="7l;x({FJuM?_Nw)!]k5b">
                                  <field name="VAR" id="zZO9u;/n=^Ub?PoYZDJf">MyObjekt</field>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
      </xml>
      

      Wie wäre die richtige Schreibweise in dem "Setze Attribut" Block um auf das Sub-Item zuzugreifen? er hängt das nur an:

      2024-03-15 10:21:00.756  - info: javascript.0 (2441614) script.js.Tests.Forum_Test_JSON: {
        id: 0,
        src: 'NurEinTest',
        method: 'Switch.Set',
        params: { id: 0, on: false },
        'params.on': true
      }
      
      
      haus-automatisierungH Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von haus-automatisierung
      #2

      @bananajoe Screenshot 2024-03-15 at 10.25.08.png

      Der Block ist aktuell nicht so konzipiert, dass man damit beliebige Pfade angeben kann. Alternativ müsstest Du das Objekt erst holen (Attribut params von Objekt), dann ändern und dann wieder setzen.

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      BananaJoeB 1 Antwort Letzte Antwort
      1
      • haus-automatisierungH haus-automatisierung

        @bananajoe Screenshot 2024-03-15 at 10.25.08.png

        Der Block ist aktuell nicht so konzipiert, dass man damit beliebige Pfade angeben kann. Alternativ müsstest Du das Objekt erst holen (Attribut params von Objekt), dann ändern und dann wieder setzen.

        BananaJoeB Online
        BananaJoeB Online
        BananaJoe
        Most Active
        schrieb am zuletzt editiert von
        #3

        @haus-automatisierung Danke, hat sofort geklappt!

        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        haus-automatisierungH 1 Antwort Letzte Antwort
        0
        • BananaJoeB BananaJoe

          @haus-automatisierung Danke, hat sofort geklappt!

          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @bananajoe Warum nutzt Du nicht einfach den Shelly-Adapter? Dort habe ich mir die Gedanken zu den JSON-Payloads ja bereits für Dich gemacht.

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          1 Antwort Letzte Antwort
          0

          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

          Registrieren Anmelden
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          423

          Online

          32.8k

          Benutzer

          82.8k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe