NEWS
Blockly - Sub-Objekt Wert ändern
-
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
paramsmuss ich dieid0,1 oder 2 wählen, dazu dannonauftrueoderfalse
srcgibt 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 istparamja ein - ich nennen das jetzt mal so - Subobjekt / Unterobjekt.
Wie mache ich das mit den vorgegebenen Bausteinen?
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 } -
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
paramsmuss ich dieid0,1 oder 2 wählen, dazu dannonauftrueoderfalse
srcgibt 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 istparamja ein - ich nennen das jetzt mal so - Subobjekt / Unterobjekt.
Wie mache ich das mit den vorgegebenen Bausteinen?
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 }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.
-
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.
@haus-automatisierung Danke, hat sofort geklappt!
-
@haus-automatisierung Danke, hat sofort geklappt!
@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.
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
