NEWS
[Gelöst] Gibt es eine Logik-Abfrage "Existiert DP"?
-
Moin Moin,
ich versuche, eine generisches Blockly-Script für verschiedene Szenarien zu bauen.
Beispiel: Mittelwert der Ventilstände aller Heizungen in einem Raum. Nun kann es 1-4 Heizungen ("Heizung", "Heizung.Links", "Heizung.Mitte", "Heizung.Rechts") je Raum geben.
Wenn ich "Mittelwert der"-Liste und "Erzeuge Liste mit" verwende, kann ich Datenpunkte auswählen. Baue ich diese mit "Wert von" und Textfeldern zusammen, könnte ich alle vier Varianten nehmen:
<block xmlns="https://developers.google.com/blockly/xml" type="math_on_list" id=";mCpvB)K+}W%6pE6q,Y1" x="63" y="1413"> <mutation op="AVERAGE"></mutation> <field name="OP">AVERAGE</field> <value name="LIST"> <block type="lists_create_with" id=":p:oUY[{e171hUyS/${e"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value_var" id="Lm*f{u*86zI=9cHMkm06"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="Z{#^Mk9WZ.8eyv}POy1S" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="BfuNqkf*70SGt)qfPgv{"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="I19e9=zM3c=TLJ4^}y}z"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="_@b3}M!iu/7$TGa$Q=G+"> <field name="TEXT">.Heizung</field> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="get_value_var" id="g39KKo_Kr)9kF7kl1hAf"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="X%}=/pM2ye|uQ7)Ima_R" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="|kmY%eE4JeILw?:|iUQw"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="f}fWV1EP@q!vnO~b3i8%"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="t1-vz8qpCt`vwsas$(.I"> <field name="TEXT">.Heizung.Links</field> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="get_value_var" id="HeP/26+o=PDqk]V}_9C!"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="ei./xytp!``TIsH(]),r" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="KhKqhhYYxZ+#[7.SL4zC"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="2a87Eo|`1c65{]D%!fn="> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="1i9B%NizuhupBc@?:sTv"> <field name="TEXT">.Heizung.Mitte</field> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="get_value_var" id="#BGp#Xw-9K$e5{k2+b=-"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="Wa(K.L_vuMm3HOX+[bn!" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="DyiCSRXuSzGE:U.fINsk"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="y:,=@Ee2PgA!]9BzW8e-"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="v=7f@XCPmP%yon-1}}?c"> <field name="TEXT">.Heizung.Rechts</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> <block xmlns="https://developers.google.com/blockly/xml" type="math_on_list" id=";mCpvB)K+}W%6pE6q,Y1" x="63" y="1413"> <mutation op="AVERAGE"></mutation> <field name="OP">AVERAGE</field> <value name="LIST"> <block type="lists_create_with" id=":p:oUY[{e171hUyS/${e"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value_var" id="Lm*f{u*86zI=9cHMkm06"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="Z{#^Mk9WZ.8eyv}POy1S" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="BfuNqkf*70SGt)qfPgv{"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="I19e9=zM3c=TLJ4^}y}z"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="_@b3}M!iu/7$TGa$Q=G+"> <field name="TEXT">.Heizung</field> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="get_value_var" id="g39KKo_Kr)9kF7kl1hAf"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="X%}=/pM2ye|uQ7)Ima_R" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="|kmY%eE4JeILw?:|iUQw"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="f}fWV1EP@q!vnO~b3i8%"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="t1-vz8qpCt`vwsas$(.I"> <field name="TEXT">.Heizung.Links</field> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="get_value_var" id="HeP/26+o=PDqk]V}_9C!"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="ei./xytp!``TIsH(]),r" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="KhKqhhYYxZ+#[7.SL4zC"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="2a87Eo|`1c65{]D%!fn="> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="1i9B%NizuhupBc@?:sTv"> <field name="TEXT">.Heizung.Mitte</field> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="get_value_var" id="#BGp#Xw-9K$e5{k2+b=-"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="text_join" id="Wa(K.L_vuMm3HOX+[bn!" inline="true"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="DyiCSRXuSzGE:U.fINsk"> <field name="TEXT">linkeddevices.0.LD.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="y:,=@Ee2PgA!]9BzW8e-"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="v=7f@XCPmP%yon-1}}?c"> <field name="TEXT">.Heizung.Rechts</field> </block> </value> </block> </value> </block> </value> </block> </value> </block>
Aber da nicht immer alle vier Heizungen in einem Raum existieren, erhalte ich Fehlermeldungen.
Gibt es eine Möglichkeit abzufragen, ob der Datenpunkt existiert?
Danke, -MN
-
@Morgennebel Moin
das geht z.B. mit:
if (!getObject(Objektname)) {... } // Wenn der Datenpunkt nicht existiert, dann mache ...
-
suche benutzt ???
siehe:
https://forum.iobroker.net/topic/27985/prüfen-ob-datenpunkt-existiert -
@a200 sagte:
das geht z.B. mit:
getObject(id) erzeugt bei nicht vorhandenem Objekt eine Warnung. Besser fragt man Datenpunkte ab mit
if(existsState(id)) {...}
Hierbei wird überprüft, ob ein Zustand (state) existiert.
-
Danke für die Hilfe.
Soweit bin ich gekommen:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="MGG-}+S7S,)N`{yVXqDu">dataPoint</variable> <variable id="pLCU6_yps4))/0vPDO!K">room</variable> </variables> <block type="procedures_defcustomreturn" id="ch(a~8U*ef4VU*.Y{((k" x="263" y="13"> <mutation statements="false"> <arg name="dataPoint" varid="MGG-}+S7S,)N`{yVXqDu"></arg> </mutation> <field name="NAME">ifExistsDP</field> <field name="SCRIPT">aWYgKGV4aXN0c1N0YXRlKGRhdGFQb2ludCkpIHsNCiAgICByZXR1cm4gZ2V0U3RhdGUoZGF0YVBvaW50KS52YWw7DQp9IGVsc2Ugew0KICAgIHJldHVybiBudWxsOw0KfQ0K</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="AO0TXi+67uHk7~`pN%6^" x="266" y="77"> <field name="COMMENT">Datenpunkte</field> <next> <block type="create" id="Fnj,A_H^X:T+#;mOvzj^" inline="true"> <field name="NAME">Calculated.Ventile.Arbeitszimmer</field> <value name="VALUE"> <block type="math_number" id="qu?}EiVlC/nsH([Iw/j|"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="6%[@o6Nl{eP=s6~3|r$+" inline="true"> <field name="NAME">Calculated.Ventile.Garderobe</field> <value name="VALUE"> <block type="math_number" id="_aXZ:mK:2a^T%2XY~@a{"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="ce5H}YXEPgZ/uaeuTeUa" inline="true"> <field name="NAME">Calculated.Ventile.Esszimmer</field> <value name="VALUE"> <block type="math_number" id="+S*eFNaH]!%moN((jgjE"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="!R`A0CB}u/W%Ao6bwgLV" inline="true"> <field name="NAME">Calculated.Ventile.Toilette</field> <value name="VALUE"> <block type="math_number" id="@+|h9y.F(_%lf3E#hP7p"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="v7|+T{J7-1(g/BY~)D;8" inline="true"> <field name="NAME">Calculated.Ventile.Gaestebad</field> <value name="VALUE"> <block type="math_number" id=")H)#*apKCf/+)ZJ,vq[X"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="=Vq]UR:~)B(@jR)Eg=w6" inline="true"> <field name="NAME">Calculated.Ventile.Lennart</field> <value name="VALUE"> <block type="math_number" id="Vf7s0gkVb_P${VcLhSx!"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="QulQwWaO_7kbJ!tiXU20" inline="true"> <field name="NAME">Calculated.Ventile.Keller</field> <value name="VALUE"> <block type="math_number" id="a0]Wg*Fu~sU=48tSsuiI"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="EcWm*-BUSi#)C]%NzFMn" inline="true"> <field name="NAME">Calculated.Ventile.HWR</field> <value name="VALUE"> <block type="math_number" id="!5%Gh{rfGBCd9rl`BLr0"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="vHJeu.9%6BetC}=6kv0E" inline="true"> <field name="NAME">Calculated.Ventile.Wintergarten</field> <value name="VALUE"> <block type="math_number" id="WbOaZe~q|ns4di6Gj(Zo"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id=";^Ji#q)Jgtw;8A^nQ~JV" inline="true"> <field name="NAME">Calculated.Ventile.Kueche</field> <value name="VALUE"> <block type="math_number" id="|C67l0v{!IKb7WCC#|8z"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="!xMibJu6iBw+F+c3u]OZ" inline="true"> <field name="NAME">Calculated.Ventile.Wohnzimmer</field> <value name="VALUE"> <block type="math_number" id="yC5$_TQJZsI_)=!3Sk%1"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="XpM/6=n$.QMpZWD8J=,5" inline="true"> <field name="NAME">Calculated.Ventile.InekeSchlaf</field> <value name="VALUE"> <block type="math_number" id="Eh0BBgv[??36Zf8Xpj7m"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="P;=PS*8Q(LcZ;c+s}b|A" inline="true"> <field name="NAME">Calculated.Ventile.InekeArbeit</field> <value name="VALUE"> <block type="math_number" id="`O^H6]@Av`lTceI8gB~f"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="h,2mm#=lYFC6`bMjewB#" inline="true"> <field name="NAME">Calculated.Ventile.Schlafzimmer</field> <value name="VALUE"> <block type="math_number" id="hM,)k!@{ombQslB[j~6f"> <field name="NUM">0</field> </block> </value> <next> <block type="schedule" id="TVp?k`{R*{y26=]@Y(;O"> <field name="SCHEDULE">*/5 * * * *</field> <statement name="STATEMENT"> <block type="controls_forEach" id="~SU$kYoZ]]t7hmM_xyVK"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> <value name="LIST"> <block type="lists_create_with" id="r!x1ueY%Gcz5`O{MPrGL" inline="true"> <mutation items="11"></mutation> <value name="ADD0"> <block type="text" id="LC%@*-WuKZEzQ(~aKz.i"> <field name="TEXT">Arbeitszimmer</field> </block> </value> <value name="ADD1"> <block type="text" id="Oea66]?8#8(-jO/[*QEa"> <field name="TEXT">Garderobe</field> </block> </value> <value name="ADD2"> <block type="text" id="$lI5Xu3l!z)62Wto2;K="> <field name="TEXT">Esszimmer</field> </block> </value> <value name="ADD3"> <block type="text" id="s:FkHLgK6%E@gcnbt(ha"> <field name="TEXT">Toilette</field> </block> </value> <value name="ADD4"> <block type="text" id="ZX!MQenz=}Z6W=,oTy[2"> <field name="TEXT">Gaestebad</field> </block> </value> <value name="ADD5"> <block type="text" id="Lr~w/Q3jZ:PC2(K*)EK@"> <field name="TEXT">Lennart</field> </block> </value> <value name="ADD6"> <block type="text" id="@sK-D{lGUI4;M3#9g%!R"> <field name="TEXT">Keller</field> </block> </value> <value name="ADD7"> <block type="text" id="NN3$_1Hio!}IEqgZW|gN"> <field name="TEXT">HWR</field> </block> </value> <value name="ADD8"> <block type="text" id="?]]}/EE?0Y)Zrvbf/Gj$"> <field name="TEXT">Wintergarten</field> </block> </value> <value name="ADD9"> <block type="text" id="y#-`FP$Vk5+S8;)DAFwP"> <field name="TEXT">Kueche</field> </block> </value> <value name="ADD10"> <block type="text" id="2TGFVt`NV)J_4Uh_uP*8"> <field name="TEXT">Wohnzimmer</field> </block> </value> </block> </value> <statement name="DO"> <block type="control_ex" id="]G/mPJ@)RD3Moj!uGu!y"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="AXY{5i3Uqe~zOcX;s,2k"> <field name="oid">javascript.0.Calculated.Ventile.Arbeitszimmer</field> </shadow> <block type="text_join" id="c26f$0GrwHL~Qk71ZuP," inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="/J?V:X_UOm])~K!kkV}["> <field name="TEXT">Calculated.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="~88T*VTqN2$8FM:,0Am/"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id=":bb*b*EnN6op|-]%;tS4"> <field name="BOOL">TRUE</field> </shadow> <block type="math_on_list" id=";mCpvB)K+}W%6pE6q,Y1"> <mutation op="AVERAGE"></mutation> <field name="OP">AVERAGE</field> <value name="LIST"> <block type="lists_create_with" id=":p:oUY[{e171hUyS/${e"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value_var" id="?zbi%f.g%Z@QVlc;}680" inline="false"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="HV4X;}g{q4?2AqfQT!gs"> <field name="TEXT"></field> </shadow> <block type="procedures_callcustomreturn" id="hk)f98:c{;z#Xw_[G~36" inline="true"> <mutation name="ifExistsDP"> <arg name="dataPoint"></arg> </mutation> <value name="ARG0"> <block type="text_join" id="b4tN,@0CRT1OIIo2,iL=" inline="false"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="$[f@oD3LuFGSgEcQ*EOe"> <field name="TEXT">linkeddevices.0.LD.Aktor.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="vBj2Ftg%LA=Y6CvBE.3^"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> <value name="ADD2"> <block type="text" id="iNTp{g,?PC~NH{2^xb/j"> <field name="TEXT">.Heizung.VALVE_STATE</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="get_value_var" id="mduIHGxsg|0QtLjMzGr0" inline="false"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="V[)emyr+=)iK9O*e~Y#t"> <field name="TEXT"></field> </shadow> <block type="procedures_callcustomreturn" id="daK+zS6w)!-}!4wgWn$U" inline="true"> <mutation name="ifExistsDP"> <arg name="dataPoint"></arg> </mutation> <value name="ARG0"> <block type="text_join" id="1y0S]R#F=R}a@)KX@Vr3" inline="false"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="w:El-?2xf,DQT#=OJ973"> <field name="TEXT">linkeddevices.0.LD.Aktor.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="C)O00-BRe42Fx~V_Q=9y"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> <value name="ADD2"> <block type="text" id="g$hLlL17jJO`UM@b*xnq"> <field name="TEXT">.Heizung.Links.VALVE_STATE</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="get_value_var" id=";O+9ZHiTJ=2D#qR6[A_P" inline="false"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="wmE|g.w(eKH^.b%p).9("> <field name="TEXT"></field> </shadow> <block type="procedures_callcustomreturn" id="D}*]1PZIDscgWbltBLEU" inline="true"> <mutation name="ifExistsDP"> <arg name="dataPoint"></arg> </mutation> <value name="ARG0"> <block type="text_join" id="[eu_|ty`p,pLIBW_|LHV" inline="false"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="/{(cu61/TwP8;m3f`MIu"> <field name="TEXT">linkeddevices.0.LD.Aktor.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="kGT$QMAo+hy7~i-tz%Dg"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> <value name="ADD2"> <block type="text" id="QX4cvDLgW*#62d[tY=:^"> <field name="TEXT">.Heizung.Mitte.VALVE_STATE</field> </block> </value> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="get_value_var" id="~mBqACzTMDXJLSRTtPU9" inline="false"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="*K|6VQL%ujYYC,Uvb;]6"> <field name="TEXT"></field> </shadow> <block type="procedures_callcustomreturn" id="v+@X~QAC8OSzQktOk=00" inline="true"> <mutation name="ifExistsDP"> <arg name="dataPoint"></arg> </mutation> <value name="ARG0"> <block type="text_join" id="1J$0^kKH25LSjDf03Q4A" inline="false"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="K}hp25Gs}5-/%_skdmu/"> <field name="TEXT">linkeddevices.0.LD.Aktor.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="#VqoZjxYN:/pG;5|Pawz"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> <value name="ADD2"> <block type="text" id="qaJ6J,#wY/{wTVL~z*_~"> <field name="TEXT">.Heizung.Rechts.VALVE_STATE</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="XTCwP#E$vE[Awl/-h3U0"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Allerdings gibt dies immer noch Fehler: javascript.0 (29950) at Object.<anonymous> (script.js.Heizung.Ventildurchschnitt_alle_Räume:51:72)
Hmmm, vermutlich ist dies wieder mein Anfängerfehler und ich verwechsle ObjekteID mit anderen mir noch fremden Termini in IObroker...
Danke, -MN
-
@Morgennebel
Deine Funktion ifExistsDP(id) gibt bereits den Wert des Datenpunktes zurück, wenn er existiert - keine ID.if (existsState(dataPoint)) { return getState(dataPoint).val; } else { return null; }
Also muss auch der Wert weiter verwendet werden.
Allerdings funktioniert die Mittelwertbildung mit null im Array nicht, denn der Listeneintrag wird als zusätzliche 0 gewertet.
Erzeuge eine leere List und füge den Wert jedes existierenden Datenpunktes an:
mit ifExistsDP(dataPoint):
return existsState(dataPoint);
-
Vielen Dank für Deine Erklärungen und Hilfe. Es scheint alles zu funktionieren - kann ich Dir online ein Bier schicken?
Für die Suchfunktion, hier ist meine vollständige Lösung - allerdings noch nicht im Heizbetrieb getestet:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="MGG-}+S7S,)N`{yVXqDu">dataPoint</variable> <variable id="pLCU6_yps4))/0vPDO!K">room</variable> <variable id=".0pF7Tmg..jU{NZH][d!">HeatersInRoom</variable> <variable id="~Y9B1$#XIRK*6Yec={7I">PossibleHeaterLocations</variable> </variables> <block type="procedures_defcustomreturn" id="ch(a~8U*ef4VU*.Y{((k" x="263" y="13"> <mutation statements="false"> <arg name="dataPoint" varid="MGG-}+S7S,)N`{yVXqDu"></arg> </mutation> <field name="NAME">ifExistsDP</field> <field name="SCRIPT">cmV0dXJuIGV4aXN0c1N0YXRlKGRhdGFQb2ludCk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="AO0TXi+67uHk7~`pN%6^" x="266" y="77"> <field name="COMMENT">Datenpunkte</field> <next> <block type="create" id="Fnj,A_H^X:T+#;mOvzj^" inline="true"> <field name="NAME">Calculated.Ventile.Arbeitszimmer</field> <value name="VALUE"> <block type="math_number" id="qu?}EiVlC/nsH([Iw/j|"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="6%[@o6Nl{eP=s6~3|r$+" inline="true"> <field name="NAME">Calculated.Ventile.Garderobe</field> <value name="VALUE"> <block type="math_number" id="_aXZ:mK:2a^T%2XY~@a{"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="ce5H}YXEPgZ/uaeuTeUa" inline="true"> <field name="NAME">Calculated.Ventile.Esszimmer</field> <value name="VALUE"> <block type="math_number" id="+S*eFNaH]!%moN((jgjE"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="!R`A0CB}u/W%Ao6bwgLV" inline="true"> <field name="NAME">Calculated.Ventile.Toilette</field> <value name="VALUE"> <block type="math_number" id="@+|h9y.F(_%lf3E#hP7p"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="v7|+T{J7-1(g/BY~)D;8" inline="true"> <field name="NAME">Calculated.Ventile.Gaestebad</field> <value name="VALUE"> <block type="math_number" id=")H)#*apKCf/+)ZJ,vq[X"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="=Vq]UR:~)B(@jR)Eg=w6" inline="true"> <field name="NAME">Calculated.Ventile.Lennart</field> <value name="VALUE"> <block type="math_number" id="Vf7s0gkVb_P${VcLhSx!"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="QulQwWaO_7kbJ!tiXU20" inline="true"> <field name="NAME">Calculated.Ventile.Keller</field> <value name="VALUE"> <block type="math_number" id="a0]Wg*Fu~sU=48tSsuiI"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="EcWm*-BUSi#)C]%NzFMn" inline="true"> <field name="NAME">Calculated.Ventile.HWR</field> <value name="VALUE"> <block type="math_number" id="!5%Gh{rfGBCd9rl`BLr0"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="vHJeu.9%6BetC}=6kv0E" inline="true"> <field name="NAME">Calculated.Ventile.Wintergarten</field> <value name="VALUE"> <block type="math_number" id="WbOaZe~q|ns4di6Gj(Zo"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id=";^Ji#q)Jgtw;8A^nQ~JV" inline="true"> <field name="NAME">Calculated.Ventile.Kueche</field> <value name="VALUE"> <block type="math_number" id="|C67l0v{!IKb7WCC#|8z"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="!xMibJu6iBw+F+c3u]OZ" inline="true"> <field name="NAME">Calculated.Ventile.Wohnzimmer</field> <value name="VALUE"> <block type="math_number" id="yC5$_TQJZsI_)=!3Sk%1"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="XpM/6=n$.QMpZWD8J=,5" inline="true"> <field name="NAME">Calculated.Ventile.InekeSchlaf</field> <value name="VALUE"> <block type="math_number" id="Eh0BBgv[??36Zf8Xpj7m"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="P;=PS*8Q(LcZ;c+s}b|A" inline="true"> <field name="NAME">Calculated.Ventile.InekeArbeit</field> <value name="VALUE"> <block type="math_number" id="`O^H6]@Av`lTceI8gB~f"> <field name="NUM">0</field> </block> </value> <next> <block type="create" id="h,2mm#=lYFC6`bMjewB#" inline="true"> <field name="NAME">Calculated.Ventile.Schlafzimmer</field> <value name="VALUE"> <block type="math_number" id="hM,)k!@{ombQslB[j~6f"> <field name="NUM">0</field> </block> </value> <next> <block type="schedule" id="TVp?k`{R*{y26=]@Y(;O"> <field name="SCHEDULE">*/5 * * * *</field> <statement name="STATEMENT"> <block type="comment" id="3N2}|LHgeo^[6S(cZ~}L"> <field name="COMMENT">Homematic-Stellantriebe abstrahiert mit LinkedDevices</field> <next> <block type="controls_forEach" id="~SU$kYoZ]]t7hmM_xyVK"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> <value name="LIST"> <block type="lists_create_with" id="r!x1ueY%Gcz5`O{MPrGL" inline="true"> <mutation items="14"></mutation> <value name="ADD0"> <block type="text" id="LC%@*-WuKZEzQ(~aKz.i"> <field name="TEXT">Arbeitszimmer</field> </block> </value> <value name="ADD1"> <block type="text" id="Oea66]?8#8(-jO/[*QEa"> <field name="TEXT">Garderobe</field> </block> </value> <value name="ADD2"> <block type="text" id="$lI5Xu3l!z)62Wto2;K="> <field name="TEXT">Esszimmer</field> </block> </value> <value name="ADD3"> <block type="text" id="s:FkHLgK6%E@gcnbt(ha"> <field name="TEXT">Toilette</field> </block> </value> <value name="ADD4"> <block type="text" id="ZX!MQenz=}Z6W=,oTy[2"> <field name="TEXT">Gaestebad</field> </block> </value> <value name="ADD5"> <block type="text" id="Lr~w/Q3jZ:PC2(K*)EK@"> <field name="TEXT">Lennart</field> </block> </value> <value name="ADD6"> <block type="text" id="@sK-D{lGUI4;M3#9g%!R"> <field name="TEXT">Keller</field> </block> </value> <value name="ADD7"> <block type="text" id="NN3$_1Hio!}IEqgZW|gN"> <field name="TEXT">HWR</field> </block> </value> <value name="ADD8"> <block type="text" id="?]]}/EE?0Y)Zrvbf/Gj$"> <field name="TEXT">Wintergarten</field> </block> </value> <value name="ADD9"> <block type="text" id="y#-`FP$Vk5+S8;)DAFwP"> <field name="TEXT">Kueche</field> </block> </value> <value name="ADD10"> <block type="text" id="2TGFVt`NV)J_4Uh_uP*8"> <field name="TEXT">Wohnzimmer</field> </block> </value> <value name="ADD11"> <block type="text" id="Hah~A,#`8^454J.{tjP^"> <field name="TEXT">Schlafzimmer</field> </block> </value> <value name="ADD12"> <block type="text" id="b=AH~cdUn]E5(.,8TMCp"> <field name="TEXT">InekeArbeit</field> </block> </value> <value name="ADD13"> <block type="text" id="GX9TWC//LITHAHHz0/45"> <field name="TEXT">InekeSchlaf</field> </block> </value> </block> </value> <statement name="DO"> <block type="comment" id="}-N``Wn2IPO7s5_sU0;u"> <field name="COMMENT">Speichert existierende Heizungen im Raum "room"</field> <next> <block type="variables_set" id="T`fu7aRzdmwAC)g:c0xg"> <field name="VAR" id=".0pF7Tmg..jU{NZH][d!">HeatersInRoom</field> <value name="VALUE"> <block type="lists_create_with" id="x}:t**!@%x*`baCIOig@"> <mutation items="0"></mutation> </block> </value> <next> <block type="comment" id="bB6+SG=7uUy%%tJtfx78"> <field name="COMMENT">Mögliche Lokationen = Namens-Schema</field> <next> <block type="controls_forEach" id="r~YU2*sw1)_~oC!VJG1."> <field name="VAR" id="~Y9B1$#XIRK*6Yec={7I">PossibleHeaterLocations</field> <value name="LIST"> <block type="lists_create_with" id="u|dU9ERxw0)[O$:4(k,1" inline="true"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="+$uK:Y+~Yj=J+$H*X|h`"> <field name="TEXT">Heizung</field> </block> </value> <value name="ADD1"> <block type="text" id="w4*7rLdBpI5GrMnyGGQI"> <field name="TEXT">Heizung.Links</field> </block> </value> <value name="ADD2"> <block type="text" id="CICMG.YN.v`1=STjjwZd"> <field name="TEXT">Heizung.Mitte</field> </block> </value> <value name="ADD3"> <block type="text" id="oY`:lb!lfjFd$XS??#Yw"> <field name="TEXT">Heizung.Rechts</field> </block> </value> </block> </value> <statement name="DO"> <block type="controls_if" id="S?sNHyr6SV{Qj?U;GgJ#"> <value name="IF0"> <block type="procedures_callcustomreturn" id="hk)f98:c{;z#Xw_[G~36" inline="true"> <mutation name="ifExistsDP"> <arg name="dataPoint"></arg> </mutation> <value name="ARG0"> <block type="text_join" id="b4tN,@0CRT1OIIo2,iL=" inline="false"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="$[f@oD3LuFGSgEcQ*EOe"> <field name="TEXT">linkeddevices.0.LD.Aktor.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="vBj2Ftg%LA=Y6CvBE.3^"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> <value name="ADD2"> <block type="text" id="#TfI+YAl-7-wT#,+cF$`"> <field name="TEXT">.</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="ADswfrDl;`cSEm4}C#=O"> <field name="VAR" id="~Y9B1$#XIRK*6Yec={7I">PossibleHeaterLocations</field> </block> </value> <value name="ADD4"> <block type="text" id="iNTp{g,?PC~NH{2^xb/j"> <field name="TEXT">.VALVE_STATE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="lists_setIndex" id="jLOhHkj3UczYQ}~CV-Di"> <mutation at="false"></mutation> <field name="MODE">INSERT</field> <field name="WHERE">LAST</field> <value name="LIST"> <block type="variables_get" id="8Mja#aBasQs!T~f+I/)!"> <field name="VAR" id=".0pF7Tmg..jU{NZH][d!">HeatersInRoom</field> </block> </value> <value name="TO"> <block type="get_value_var" id="mduIHGxsg|0QtLjMzGr0"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="V[)emyr+=)iK9O*e~Y#t"> <field name="TEXT"></field> </shadow> <block type="text_join" id="lQM`y/#@H8b*UjKWLW`E" inline="false"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id=")c|?c2oVk*TAA:C/wM{K"> <field name="TEXT">linkeddevices.0.LD.Aktor.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="JmYv=}2lBDZdU6kkK#]o"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> <value name="ADD2"> <block type="text" id="+(7AM8WMZa3:RdV35mdc"> <field name="TEXT">.</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="_x_nfyAw%P]a7IL#Gdv/"> <field name="VAR" id="~Y9B1$#XIRK*6Yec={7I">PossibleHeaterLocations</field> </block> </value> <value name="ADD4"> <block type="text" id="gjJYYYi{(_m$b!zOEom3"> <field name="TEXT">.VALVE_STATE</field> </block> </value> </block> </value> </block> </value> </block> </statement> </block> </statement> <next> <block type="control_ex" id="]G/mPJ@)RD3Moj!uGu!y"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="AXY{5i3Uqe~zOcX;s,2k"> <field name="oid">javascript.0.Calculated.Ventile.Arbeitszimmer</field> </shadow> <block type="text_join" id="c26f$0GrwHL~Qk71ZuP," inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="/J?V:X_UOm])~K!kkV}["> <field name="TEXT">Calculated.Ventile.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="~88T*VTqN2$8FM:,0Am/"> <field name="VAR" id="pLCU6_yps4))/0vPDO!K">room</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id=":bb*b*EnN6op|-]%;tS4"> <field name="BOOL">TRUE</field> </shadow> <block type="math_on_list" id=";mCpvB)K+}W%6pE6q,Y1"> <mutation op="AVERAGE"></mutation> <field name="OP">AVERAGE</field> <value name="LIST"> <block type="variables_get" id="7Kpt?*SS9O.|H!7?,d03"> <field name="VAR" id=".0pF7Tmg..jU{NZH][d!">HeatersInRoom</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="XTCwP#E$vE[Awl/-h3U0"> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Danke, -MN