NEWS
blockly eleganter machen
-
ich komme mit dem variablen Teil nicht klar. angefangen bei ParentID
bis runter zum common. nameich weiß nicht was in dem Fall Variablen sind, was feste definition sind, und komm mit dem debug auch nicht wirklich klar ...
-
@dos1973 Hast Du mal mein Script importiert? Dann wird das doch alles automatisch richtig gesetzt. Siehe oben "Spoiler"
-
ja, für Homematik klappt es, aber ich brauche die Shellys und schaffe es nicht es umzubauen/ nachzubauen.
-
@dos1973 Statt des JSON poste doch bitte nur mal den Namen/die ID des Datenpunktes eines Shellys, den Du auf Erreichbarkeit prüfen willst
-
shelly.0.SHSW-25#E563E8#1.online
-
@dos1973 said in blockly eleganter machen:
shelly.0.SHSW-25#E563E8#1.online
ok, dann ist der "ID vom Selektor..." Eintrag
shelly.0.*.online
und bei "setze ParentID" im "Text i suche letztes Auftreten des Begriffs ".online"
-
es geht, aber ich verstehe es leider immer noch nicht...
ich verstehe nicht wie wir das ".online" da abziehen, bzw. warum wir das abziehen müssen, damit es funktioniert?
common.name
wo kommt das her, wie kann ich das nachvollziehen? -
@dos1973 In meinem Beispiel oben:
frage ich den Wert des Objektes
hm-rpc.1.<irgendeineserienummer>.0.UNREACH
ab. Der Name steht aber "2 Etagen höher" beim Gerät
hm-rpc.1.<irgendeineserienummer>
im Feld "common.name" (siehe gelbe Markierung oben rechts).
Nachlesbar z.B. hier: Doku
Wird's jetzt klarer?
-
@Ahnungsbefreit
ok, zum common.name muss ich mal diese Doku lesen...aber das abschneiden verstehe ich immer noch nicht.
für jeden i.... selector...*shelly
kommt doch als Ergebnis alle Shelly mit dem gesamten String
shelly.0.SHSW-25#00B00D#1.onlinejetzt schneide ich das online von "shelly.0.SHSW-25#00B00D#1.online"
ab.ich nächsten Abschnitt such ich ob dieser Wert, mit online
shelly.0.SHSW-25#00B00D#1.online = True istFalls Wert von i ist true
-
@dos1973 Versteh die Frage nicht so ganz aber die Idee ist
-
mit "shelly.0.SHSW-25#00B00D#1.online" haben wir die ID des Objektes, das wir abfragen wollen und
-
und dem "common.name" von "shelly.0.SHSW-25#00B00D#1" den Namen für die Ausgabe
-
-
ja, ist kompliziert zu beschrieben Danke für deine Geduld und Mühe!!
die ID's haben wir über den Selektor erhalten
- shelly.0.SHSW-25#00B00D#1.online
- ...
warum schneide ich dann das .online ab?
im nächsten Step frage ich doch genau diesen Wert (mit .online) wieder ab
- shelly.0.SHSW-25#00B00D#1.online = True/false
-
@dos1973 Wir merken uns die "abgeschnittene" Version doch nur für die Abfrage des Namens über "common.name", wir brauchen also beides, Namen und die ID des "online" Objekts.
Wenn bei Dir der Name auch direkt über "common.name" von "shelly.0.SHSW-25#00B00D#1.online" korrekt (also so, wie er in der Textliste bzw. im JSON erscheinen soll) rauskommt, dann kannst Du das Abschneiden weglassen
-
jetzt habe ich es verstanden... oh mann.
aus dem Wert
- shelly.0.SHSW-25#00B00D#1.online
würde ich keinen "common.name" erhalten, daher das abschneiden.
-
@dos1973 Genau! Zumindest keinen "sauberen" Namen. In meinem Beispiel wäre das dann "BUR-RAU:0.UNREACH" statt nur "BUR-RAU". Evtl. ist der Name auch gar nicht gesetzt für den DP "UNREACH" bzw. in Deinem Fall "online"
-
@Ahnungsbefreit
ich muss nochmals etwas fragen, mit welchem Widget zeigst du das Json im VIS an. Bei mir werden alle klammern angezeigt?
habe es mit Basic und HTML widget versucht -
@dos1973 vis-inventwo JSON
-
du machst mich fertig
von einem Problem ins andere... ich habe das mal installiert... da kommt erstmal nichts an - mal sehen. -
@dos1973 ich poste morgen mal ein Beispiel, bin jetzt nicht mehr am PC
-
@dos1973 So kannst Du das Widget vis-inventwo JSON Table ganz einfach konfigurieren, damit das JSON angezeigt wird:
Als Objekt ID verwendest Du das Objekt, in das am Ende meines Blockly Scripts das JSON geschrieben wird und das Du natürlich "von Hand" als Zeichenkette angelegt hast.
-
Danke für eure Inspiration.
Ich habe mir anhand eurer Diskussion ein Skript bauen können, welches mir eine schöne HTML-Tabelle erstellt.
Mit dieser lasse ich mir zeigen, ob meine HomematicIP-Geäte den Akku schwach haben (zum Testen steht es grade noch auf dem Schaltzustand, damit ich unterschiedliche Werte habe.).Lässt sich natürlich für jegliche Abfrage mit true und false missbrauchen.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="q=Q/4S_nykMJv,R-%5SK">id</variable> <variable id="SKh+R[G%ptX]9uv^hB,!">wahr</variable> <variable id=";O,|I4cqK/q|U6dt.?NN">falsch</variable> <variable id="%62`(Q[9y{,UvP3o}T|/">i</variable> <variable id="GI^dumJfw0)4Nzi2HVw`">ParentID</variable> </variables> <block type="schedule" id="=M?}+$74/A|+fu)hob?*" x="1188" y="463"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="dZ;P0S=A~Ue9U{sxWFjF"> <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field> <value name="VALUE"> <block type="text" id="1Rdn%LJ,UsyiTo}^fQyi"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="JoJ{Z)?hFmCa3B.z1B~;"> <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field> <value name="VALUE"> <block type="text" id="I)B703c6WPKo}@_L8ai^"> <field name="TEXT"></field> </block> </value> <next> <block type="controls_forEach" id="VXic[*WK}rqr0-!U:EFy"> <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field> <value name="LIST"> <block type="selector" id="vI2MD73D2c=a4z1nh`=`"> <field name="TEXT">hm-rpc.0.*.1.STATE</field> </block> </value> <statement name="DO"> <block type="variables_set" id="5%|F-TdcQ{4t*4:+v!]w"> <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field> <value name="VALUE"> <block type="text_getSubstring" id="`QFsslqwXJcDRwUQ_z;$" inline="false"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="2K5mqiyK-@A,u?+%_r-I"> <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field> </block> </value> <value name="AT1"> <block type="math_number" id="_q*GktBrg4YS~$oc@#.$"> <field name="NUM">1</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="BHxb,^*vvK^,t3OWIp~N" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="V4^8g/Fq~(QA(Gn,=_g9"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id=";@~lMPhmFt@}zblOq8}z" inline="false"> <field name="END">LAST</field> <value name="VALUE"> <block type="variables_get" id="ZxgO1Qq@jpN)?*](o;s%"> <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field> </block> </value> <value name="FIND"> <shadow type="text" id="xWkYFdwM0dR_rBOFM|zY"> <field name="TEXT">.1.STATE</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="h-25vZ[WT=N4?QJ3saG%"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="controls_if" id="[t4#.[R7stu?S`@$u3BW"> <mutation else="1"></mutation> <value name="IF0"> <block type="get_value_var" id="Iq+@rH{{dyJ9HWgoI~T4"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="B)n%:}PX%zZGvt#JtbR("> <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="sh;fX7NWP+]`^FcnbVjU"> <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field> <value name="VALUE"> <block type="text_join" id="|Xz[CQA5p*BCe{uu*,ir"> <mutation items="5"></mutation> <value name="ADD0"> <block type="variables_get" id="F4J0jDpn[Na[1p8Ruf=%"> <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field> </block> </value> <value name="ADD1"> <block type="text" id="C+UnHlb%GLN.|tA3o,`C"> <field name="TEXT"><tr><td></field> </block> </value> <value name="ADD2"> <block type="get_attr" id="=z[7ycSqfif0h~4Sz*|=" inline="false"> <value name="PATH"> <shadow type="text" id="C*^0Xt3cP0zy%F4#veYO"> <field name="TEXT">common.name</field> </shadow> </value> <value name="OBJECT"> <block type="procedures_callcustomreturn" id=",{*p|W,%6Npy^h.,(XSP"> <mutation name="GetObjectByID"> <arg name="id"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="dgPrr_H^_1Z}0!cS+Iw{"> <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="text" id="yNUk#G;)wLb1Xq!/%A[M"> <field name="TEXT"></td> <td ALIGN="CENTER"><font size="3"><b><font color=green>●</font> </td> </tr></field> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="S+Gd]Tap?Ej$]1P.V.(_"> <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field> <value name="VALUE"> <block type="text_join" id="5?soV=/V!gT:YP;%=C7*"> <mutation items="4"></mutation> <value name="ADD0"> <block type="variables_get" id="t5Hgf|mSwoVqQ}(:~9Y7"> <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field> </block> </value> <value name="ADD1"> <block type="text" id="xa}qmEJ|8{^pBcPkIB|C"> <field name="TEXT"><tr><td></field> </block> </value> <value name="ADD2"> <block type="get_attr" id="N%K=-ar/nF2t;vp68{4;" inline="false"> <value name="PATH"> <shadow type="text" id="NEKfB0mKYNB9yf[p[(LM"> <field name="TEXT">common.name</field> </shadow> </value> <value name="OBJECT"> <block type="procedures_callcustomreturn" id="mBvJ_WhP|}o*z}@Nf9Gx"> <mutation name="GetObjectByID"> <arg name="id"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="D:=8pGehBP5ZOKH2LV2?"> <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="text" id="2WmqZ^-K89eQ9Z!T.Sg!"> <field name="TEXT"></td> <td ALIGN="CENTER"><font size="3"><b><font color=red>●</font> </td> </tr></field> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="update" id="|*Wyl;F2(g0J1J^:!x68"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.VIS.Akkumeldungen.hmip_akku_tabelle</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="CF52S*}*)[vTA|Y~w+@1"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="yxd%qU_@2Bv39AdiqwQ*"> <field name="TEXT"><table style="width: 100%;"> <tbody> <tr> <td width=100%><b><font size="3">Gerät</b></td></font> <td ALIGN="CENTER"><b><font size="3">Batteriestatus</b></td></font> </tr></field> </block> </value> <value name="ADD1"> <block type="text" id="`hArP:}QO5fa:5w(*q*y"> <field name="TEXT"><tr> <td colspan="2"> <hr> </dt> </tr></field> </block> </value> <value name="ADD2"> <block type="variables_get" id="!NM$6J~B9mGR:#`~#8V_"> <field name="VAR" id=";O,|I4cqK/q|U6dt.?NN">falsch</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="JwXRwyMGnb)]ut6eTQc-"> <field name="VAR" id="SKh+R[G%ptX]9uv^hB,!">wahr</field> </block> </value> <value name="ADD4"> <block type="text" id="#E/@/Eiu!x|i4nvHP^wR"> <field name="TEXT"></tbody> </table></field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defcustomreturn" id="z1v5P%=uhnATnl`x*fMU" x="1287" y="462"> <mutation statements="false"> <arg name="id" varid="q=Q/4S_nykMJv,R-%5SK"></arg> </mutation> <field name="NAME">GetObjectByID</field> <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZCk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>