NEWS
[Gelöst] Blockly-Script mehrfach ausrollen, Variablen-IDs
-
Moin Moin,
ich habe ein Blockly-Script für jeden Raum gebastelt, welches die absolute Feuchte Innen mit der absoluten Feuchte Außen vergleicht und eine Lüftungsempfehlung per Telegramm schickt und in einen Datenpunkt (später für MQTT) speichert.
Dieses Blockly basiert auf mehreren Variablen. Kopiere ich dieses Blockly in die Zwischenablage und importiere dasselbe für einen weiteren Raum werden die Variablen-IDs nicht modifiziert - alle Räume verwenden dieselben IDs:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id=")Vz0,u.-.k*4g:m~W}7W">temperature</variable> <variable id=")(A+CMXkz]`wvY;?c89W">relFeuchte</variable> <variable id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</variable> <variable id="DLEhFoj!*h)Y^q~k=F]D">hysterese</variable> <variable id="bhmYP+APphYryr.-Yt%L">RoomRelFeuchte</variable> <variable id="SHoU+yS8Chmwr5`BVKc!">RoomTemp</variable> <variable id="Qi*.t*}WMcI(IX!Bv.@(">FensterOffen</variable> <variable id="NFfoncS?+5I:^jjVk#44">AbsoluteFeuchteInnen</variable> <variable id="wK|kdi|FcehlV~RP4v$=">AbsoluteFeuchteAussen</variable> <variable id="B8Bt^iAoys@8qoGUkT5j">statusText</variable> </variables>
Damit überschreibt ein Raum den anderen und Alarme werden mehrfach getriggert.
Was ist denn der "richtige" Weg, ein Blockly-Script mit Variablen mehrfach auszurollen und dabei verschiedene Variablen-IDs (je Script) zu haben?
Vielen Dank,
-MN
-
@Morgennebel
Dein Export enthält nur den Anfang des Blockly-Scripts. -
@paul53
Korrekt, ich sehe diese Variablen in allen Script-Kopien (also je Raum). Ich hatte dies zur Illustration des ID-Problems angefügt.Das Script läuft für einen Raum richtig, ich kann es auch vollständig posten...
Danke, - MN
-
-
Hier ist das komplette Script:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id=")Vz0,u.-.k*4g:m~W}7W">temperature</variable> <variable id=")(A+CMXkz]`wvY;?c89W">relFeuchte</variable> <variable id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</variable> <variable id="DLEhFoj!*h)Y^q~k=F]D">hysterese</variable> <variable id="bhmYP+APphYryr.-Yt%L">RoomRelFeuchte</variable> <variable id="SHoU+yS8Chmwr5`BVKc!">RoomTemp</variable> <variable id="Qi*.t*}WMcI(IX!Bv.@(">FensterOffen</variable> <variable id="NFfoncS?+5I:^jjVk#44">AbsoluteFeuchteInnen</variable> <variable id="wK|kdi|FcehlV~RP4v$=">AbsoluteFeuchteAussen</variable> <variable id="B8Bt^iAoys@8qoGUkT5j">statusText</variable> </variables> <block type="procedures_defreturn" id="=rXX/JMqsa$HI)gkpyq2" x="238" y="-137"> <mutation> <arg name="temperature" varid=")Vz0,u.-.k*4g:m~W}7W"></arg> <arg name="relFeuchte" varid=")(A+CMXkz]`wvY;?c89W"></arg> </mutation> <field name="NAME">absoluteFeuchte</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="comment" id="a[Vx=*SAkikpL08:G%}5"> <field name="COMMENT">https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/</field> <next> <block type="comment" id="qY!(H$7?eTd?1-Gt6n-*"> <field name="COMMENT">absFeuchte = ((6.112*Math.exp((17.67*temp)/(243.5+temp))*relFeuchte*2.1674)/(273.15+temp)).toFixed(1);</field> </block> </next> </block> </statement> <value name="RETURN"> <block type="math_rndfixed" id="$!z4/h83[q8DB[XEY:Yx"> <field name="n">2</field> <value name="x"> <shadow type="math_number" id="z/m{oS9:qSy3XF6gLT.*"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="$9dk$%bCfi).WmTQ0YvS"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="@|]|kf(~;UXSj{r-Py.}"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="drl{z6M9~)QK=1jWZwS1"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="?(XoR_CDs1f)=_zC_s`c"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="Ii^SaP2Kig/a4yQeL2Kp"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="W]Ok6Ex(k9gJWN%Vl0(?"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="G_aJ68Y!9?zmeHy=4+6O"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="rS7,,?%z$GHN(0DP-)Wa"> <field name="NUM">1</field> </shadow> <block type="math_number" id="Ss;2=UpBXrr%ru]F/HcD"> <field name="NUM">6.112</field> </block> </value> <value name="B"> <shadow type="math_number" id="Q_;jA]edTjm#:$`BlH8l"> <field name="NUM">1</field> </shadow> <block type="math_single" id="PgF}b=!D4^{n0iWk|%7z"> <field name="OP">EXP</field> <value name="NUM"> <shadow type="math_number" id="tV|:2_[M=j?P!6L7vh1^"> <field name="NUM">9</field> </shadow> <block type="math_arithmetic" id="4A4-v3;A2z}(iC1}/|;J"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="/DEPg%|MS4iI54Xg6-E:"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="s9-wArpJZT$DZJF(:oe_"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="wU{rm.Y~Cc:*cKP-pI6n"> <field name="NUM">17.67</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="(6gfCw,CHBNtyNrq4xf6"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="_K@|_[8M3NUw?.VA(],?"> <field name="VAR" id=")Vz0,u.-.k*4g:m~W}7W">temperature</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="._D6XRUnVpSD:3e;r6u["> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="};.N1a,UzboZAd@o+^jr"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="[:o6ZaA4M%CmKmi}Fb07"> <field name="NUM">1</field> </shadow> <block type="math_number" id="?e~,rPM[rLNAX88SQw6*"> <field name="NUM">243.5</field> </block> </value> <value name="B"> <shadow type="math_number" id=")0kFf`)/(A}-,6o=d9]?"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Gw.PQ]#i.P)4H?q0:uis"> <field name="VAR" id=")Vz0,u.-.k*4g:m~W}7W">temperature</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="=QJ@}_89oaSc6TkLXqL{"> <field name="NUM">1</field> </shadow> <block type="math_number" id="+-RP-jJ/Cl8j~X(iqtKk"> <field name="NUM">2.1674</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id=";`Yd*+h-@*2XfUACe)O8"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="tMo|!n{{H-zc)qWU3Be9"> <field name="VAR" id=")(A+CMXkz]`wvY;?c89W">relFeuchte</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="H=hU4(hGj-[YSN#G(cZ}"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="=Xf0xz;M.wOqwduBl|O+"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="*=pAEW@=`5jlHQO4GUyX"> <field name="NUM">1</field> </shadow> <block type="math_number" id="(11}Qz2^*N(([RQo~/lT"> <field name="NUM">273.15</field> </block> </value> <value name="B"> <shadow type="math_number" id="cS*9f1Zsst}!M]qx+5mO"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="lzNp]xQRt$;C}pPC=%vO"> <field name="VAR" id=")Vz0,u.-.k*4g:m~W}7W">temperature</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> <block type="comment" id="AO0TXi+67uHk7~`pN%6^" x="238" y="88"> <field name="COMMENT">0 = OK, 1 = Open, 2 = Close Windows</field> <next> <block type="create" id="Fnj,A_H^X:T+#;mOvzj^"> <field name="NAME">Calculated.AirQuality.Badezimmer</field> <value name="VALUE"> <block type="math_number" id="qu?}EiVlC/nsH([Iw/j|"> <field name="NUM">0</field> </block> </value> <next> <block type="variables_set" id=".}ZO5p5MlC=fLquil,*N"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> <value name="VALUE"> <block type="text" id="YY]2tZWJP^mo=[d+@IAj"> <field name="TEXT">Badezimmer</field> </block> </value> <next> <block type="variables_set" id="u;rAvA^Tg)fde-N$g+n("> <field name="VAR" id="DLEhFoj!*h)Y^q~k=F]D">hysterese</field> <value name="VALUE"> <block type="math_number" id="@q.bo#w=6Z#K/42*x$.3"> <field name="NUM">0.5</field> </block> </value> <next> <block type="on_ext" id="h0H?Rc*ZADB=1#^!eP#U"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t.hqhA^56V.)EI_/qc_+"> <field name="oid">hm-rpc.0.LEQ1462834.2.ACTUAL_HUMIDITY</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="C}^D7pqJ)kFq?w|bG5vp"> <field name="oid">hm-rpc.0.LEQ1462834.2.ACTUAL_TEMPERATURE</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="}ZL`4X1zj=nDl34!DVkq"> <field name="COMMENT">Aktualisiere Raumwerte</field> <next> <block type="variables_set" id="564[EGfcKuUawEsR5s)Z"> <field name="VAR" id="bhmYP+APphYryr.-Yt%L">RoomRelFeuchte</field> <value name="VALUE"> <block type="get_value" id="b~O.n*??SMn7-xV4}8UR"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.LEQ1462834.2.ACTUAL_HUMIDITY</field> </block> </value> <next> <block type="variables_set" id="MvU`1xBNm`Te:/AT^s6X"> <field name="VAR" id="SHoU+yS8Chmwr5`BVKc!">RoomTemp</field> <value name="VALUE"> <block type="get_value" id="?GS!`$uRj#{i.l5Pg[dJ"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.LEQ1462834.2.ACTUAL_TEMPERATURE</field> </block> </value> <next> <block type="variables_set" id="WCcXPQ%l2Q22FIzh.LFG"> <field name="VAR" id="Qi*.t*}WMcI(IX!Bv.@(">FensterOffen</field> <value name="VALUE"> <block type="logic_operation" id="j}8(^_UC*QREXz=U_$f*"> <field name="OP">OR</field> <value name="A"> <block type="get_value" id="_h`_~+aJtyS*oHC)~+Qj"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.OEQ0493329.1.STATE</field> </block> </value> <value name="B"> <block type="get_value" id="w7^!YZJv},z1)]e9YvEo"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.OEQ1200257.1.STATE</field> </block> </value> </block> </value> <next> <block type="comment" id="#dxsDI[gZm/B$mk_@h7t"> <field name="COMMENT">Berechne absolute Feuchte innen & aussen</field> <next> <block type="variables_set" id="77RSB{b|A2e|(j.VGQs/"> <field name="VAR" id="NFfoncS?+5I:^jjVk#44">AbsoluteFeuchteInnen</field> <value name="VALUE"> <block type="procedures_callreturn" id="@[n.kJkbzB*2q5[,*]9O"> <mutation name="absoluteFeuchte"> <arg name="temperature"></arg> <arg name="relFeuchte"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="G6@fl$W$Of#P~opd`%)s"> <field name="VAR" id="SHoU+yS8Chmwr5`BVKc!">RoomTemp</field> </block> </value> <value name="ARG1"> <block type="variables_get" id="BS$J0RuyWHwoO(_6,lig"> <field name="VAR" id="bhmYP+APphYryr.-Yt%L">RoomRelFeuchte</field> </block> </value> </block> </value> <next> <block type="variables_set" id="Iy|p8|.6TSqHrM2+qec!"> <field name="VAR" id="wK|kdi|FcehlV~RP4v$=">AbsoluteFeuchteAussen</field> <value name="VALUE"> <block type="procedures_callreturn" id="i-cG.}csmll~c[=2OH#W"> <mutation name="absoluteFeuchte"> <arg name="temperature"></arg> <arg name="relFeuchte"></arg> </mutation> <value name="ARG0"> <block type="get_value" id="k2uEw5!`=Cca*0L4KG6n"> <field name="ATTR">val</field> <field name="OID">hm-rpc.1.000EDA499C858D.1.ACTUAL_TEMPERATURE</field> </block> </value> <value name="ARG1"> <block type="get_value" id="k1x+%|N4/:@Q;fWJ#y`9"> <field name="ATTR">val</field> <field name="OID">hm-rpc.1.000EDA499C858D.1.HUMIDITY</field> </block> </value> </block> </value> <next> <block type="comment" id="XW@6(XeBm|xI/a|bqilN"> <field name="COMMENT">Telegram-Textblock</field> <next> <block type="variables_set" id="d@^V;L.]P@@Qwyd];sn3"> <field name="VAR" id="B8Bt^iAoys@8qoGUkT5j">statusText</field> <value name="VALUE"> <block type="text_join" id="-J=gbY+pRMB{n~Jf1+.)"> <mutation items="8"></mutation> <value name="ADD0"> <block type="text" id="Eh)}.*#(m}|Den{|G@@+"> <field name="TEXT">relFeuchte = </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="=07uJ@w)Dy.}^Q)fc4Q6"> <field name="VAR" id="bhmYP+APphYryr.-Yt%L">RoomRelFeuchte</field> </block> </value> <value name="ADD2"> <block type="text" id="Ea/@yz$RG5/oz0Uk_ZNe"> <field name="TEXT">%. absFeuchte Innen: </field> </block> </value> <value name="ADD3"> <block type="variables_get" id="Ksy~.$o14(%}I$!uuFFV"> <field name="VAR" id="NFfoncS?+5I:^jjVk#44">AbsoluteFeuchteInnen</field> </block> </value> <value name="ADD4"> <block type="text" id="itt!)(u1?g|LH(Da.2rr"> <field name="TEXT">g/m3. absFeuchte Außen: </field> </block> </value> <value name="ADD5"> <block type="variables_get" id="6)8tIFnS:_LWT;Qusho["> <field name="VAR" id="wK|kdi|FcehlV~RP4v$=">AbsoluteFeuchteAussen</field> </block> </value> <value name="ADD6"> <block type="text" id="bhr7FQjl!iWQcFU7D^6a"> <field name="TEXT">g/m3. Fensterstatus: </field> </block> </value> <value name="ADD7"> <block type="logic_ternary" id="Y,uhX4YCcLR6x^]FExwr"> <value name="IF"> <block type="variables_get" id=")N_jxwTXQ.6}*g5AmR@C"> <field name="VAR" id="Qi*.t*}WMcI(IX!Bv.@(">FensterOffen</field> </block> </value> <value name="THEN"> <block type="text" id="kDY@}TzuR/ZaUhdB5f5p"> <field name="TEXT">offen.</field> </block> </value> <value name="ELSE"> <block type="text" id="](@vj{RBV~IWG^j`n[cr"> <field name="TEXT">geschlossen.</field> </block> </value> </block> </value> </block> </value> <next> <block type="comment" id="v9%Om,wx%:1xeoN@+`GZ"> <field name="COMMENT">Auswertung</field> <next> <block type="controls_if" id="HZ74t70*O/eWT_FMd;1b"> <mutation elseif="1" else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="nO;#j$1}mL:IF`0|At/0"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="rP`WArcQ6R:iQI]G!n*9"> <field name="VAR" id="NFfoncS?+5I:^jjVk#44">AbsoluteFeuchteInnen</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="5hK=yg$$]a$DWPGgQ3_v"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="!Y5]I|l_B#qeL9naP(ck"> <field name="VAR" id="wK|kdi|FcehlV~RP4v$=">AbsoluteFeuchteAussen</field> </block> </value> <value name="B"> <shadow type="math_number" id="3jlVWztu]K8{+b?ms@xN"> <field name="NUM">0.33</field> </shadow> <block type="variables_get" id="~9+]mt*LDC(AwRQ(ij,J"> <field name="VAR" id="DLEhFoj!*h)Y^q~k=F]D">hysterese</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="[SZS+y,0Nh;%um-*4(/f"> <field name="COMMENT">Drinnen feuchter als aussen</field> <next> <block type="controls_if" id="3XFa.NJ*FmLNbXKU|}Rr"> <value name="IF0"> <block type="logic_compare" id="6I3#mAT]@;pkhnH*49h*"> <field name="OP">GTE</field> <value name="A"> <block type="variables_get" id="IV-23]#dP%wK|?%J-geN"> <field name="VAR" id="bhmYP+APphYryr.-Yt%L">RoomRelFeuchte</field> </block> </value> <value name="B"> <block type="math_number" id="J;sYQ#BIQ~mRhrS,.nJR"> <field name="NUM">63</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="l[YwtwjzMo|0T+~])%9."> <field name="COMMENT">Über Schimmelgrenze</field> <next> <block type="controls_if" id="%+OVo+BU]q5jnYgRotxz"> <value name="IF0"> <block type="logic_negate" id="_-S[uB)VL+R)/(T,S5/k"> <value name="BOOL"> <block type="variables_get" id=":jh,m^?l4mlC(?4ouqM-"> <field name="VAR" id="Qi*.t*}WMcI(IX!Bv.@(">FensterOffen</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="O!(q45/=Ta`$j9/N}7=N"> <field name="COMMENT">Sind Fenster zu? Dann öffnen</field> <next> <block type="controls_if" id="3Vt~tV=VbLIf3As84S]7"> <value name="IF0"> <block type="logic_compare" id="cKgh}`wx*)zc,DDtB=Ur"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="f-idB-Fyu5CRR7@^9b4g"> <field name="ATTR">val</field> <field name="OID">javascript.0.Calculated.AirQuality.Badezimmer</field> </block> </value> <value name="B"> <block type="math_number" id="TmE,Ir%$D83h4IOcnbj/"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="jXuE%GC]:Ccur`N}i]f#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Calculated.AirQuality.Badezimmer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="(WM7:R^~D8]bE;U(!anq"> <field name="NUM">1</field> </block> </value> <next> <block type="telegram" id="B;oGxx.BGF,chtbZP)M|"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="Wo0HvQ;(Itn]i,h5XS74"> <field name="TEXT">Fenster im Badezimmer schliessen. Draußen ist es feuchter...</field> </shadow> <block type="text_join" id="T;oT-VRH8lEE/URMI,){"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="TBN!x=5AOZFj~UB)TROk"> <field name="TEXT">Fenster </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="U`wvaxx~xc~{Q*34.Po8"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="=[Fe4?JMItD.2/hM2tgA"> <field name="TEXT"> öffnen. </field> </block> </value> <value name="ADD3"> <block type="variables_get" id="GBx(-1Hq^P4uAsed)GEk"> <field name="VAR" id="B8Bt^iAoys@8qoGUkT5j">statusText</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="E@V|Tr?$.(;/5qDVRiZp"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="]Uj:grWB3G6c#wV=5:k]"> <field name="VAR" id="NFfoncS?+5I:^jjVk#44">AbsoluteFeuchteInnen</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="A-L@AonfGoyP2r7Wdq;m"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="(%Y/Rg]0y%~)#]KAMl!z"> <field name="VAR" id="wK|kdi|FcehlV~RP4v$=">AbsoluteFeuchteAussen</field> </block> </value> <value name="B"> <shadow type="math_number" id="VtnD]ygXn)t7YTs_DYo6"> <field name="NUM">0.33</field> </shadow> <block type="variables_get" id="|AftdpL7[o?SGfp~2c`a"> <field name="VAR" id="DLEhFoj!*h)Y^q~k=F]D">hysterese</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="/C-XnPwr1Zpjm4J,u0~v"> <field name="COMMENT">Draussen feuchter als drinnen</field> <next> <block type="controls_if" id="avU4^{%p-A=NuC;Va]|j"> <value name="IF0"> <block type="variables_get" id="==*REg|DyOznA?{kbW(;"> <field name="VAR" id="Qi*.t*}WMcI(IX!Bv.@(">FensterOffen</field> </block> </value> <statement name="DO0"> <block type="comment" id="FZ`Y$vprZ+41JxXh5^@?"> <field name="COMMENT">Sind Fenster offen? Dann zu</field> <next> <block type="controls_if" id="2Lo7PemKi4UC#keN7uD_"> <value name="IF0"> <block type="logic_compare" id="x432QftWf287SM+;RYr="> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="]FOMYFL=81+_W6ynj/uh"> <field name="ATTR">val</field> <field name="OID">javascript.0.Calculated.AirQuality.Badezimmer</field> </block> </value> <value name="B"> <block type="math_number" id="tE.OL^t]dp{c?[cIE)yY"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="2^PXt?cHT?)X^sjT??8s"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Calculated.AirQuality.Badezimmer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="rwk~Y:R_UQFhnsJ[3Dfb"> <field name="NUM">2</field> </block> </value> <next> <block type="telegram" id="=LDK!r(pA*H!78!7o-s!"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="4e^UD,6^b6V*/s-3nV0A"> <field name="TEXT">Fenster im Badezimmer schliessen. Draußen ist es feuchter...</field> </shadow> <block type="text_join" id="w2GBpsB73A.+?;-4tFAX"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="1296fJk:M0bX9vCUz`:4"> <field name="TEXT">Fenster </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="g|Z[JT-*qjvDJX{|?ICK"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id=";C.h^.Dw8n$,@P,YHKPY"> <field name="TEXT"> schliessen. </field> </block> </value> <value name="ADD3"> <block type="variables_get" id="Nlug/$dsi2i(}MulWQ0W"> <field name="VAR" id="B8Bt^iAoys@8qoGUkT5j">statusText</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="%)kWrwr){4#2ACBT!V%K"> <field name="COMMENT">In der Hysterese mache nichts</field> <next> <block type="controls_if" id="D,[?kq3)miwp2;^2e^P/"> <value name="IF0"> <block type="logic_compare" id="RhJ]6q(NhA8nbrC`*heI"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id=":QV6ktqw*]#?1l=uYY|d"> <field name="ATTR">val</field> <field name="OID">javascript.0.Calculated.AirQuality.Badezimmer</field> </block> </value> <value name="B"> <block type="math_number" id="D$kYgeRST#^9Bo8jsD`d"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="7s{GEd{#j?7!X8;gqi2O"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Calculated.AirQuality.Badezimmer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="L8POg)Yz5v/38c,zs:S2"> <field name="NUM">0</field> </block> </value> <next> <block type="telegram" id="=Q!$9?zcAQbuCyYfys^0"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="=uC}eOc??hZt.tw3/DyE"> <field name="TEXT">Fenster im Badezimmer schliessen. Draußen ist es feuchter...</field> </shadow> <block type="text_join" id="2A+*8enlwwA?6Nr*LW1="> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="6[Bk|73:x:^*ptrhox8g"> <field name="TEXT">Fenster </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="LZc|jf1dmxD}5Vzll|-f"> <field name="VAR" id="vV[)(Yd^*q]eY_MvSScu">ThisRoom</field> </block> </value> <value name="ADD2"> <block type="text" id="TAAnlZy5$Z/6o0@Z)Mnm"> <field name="TEXT"> ist richtig. </field> </block> </value> <value name="ADD3"> <block type="variables_get" id="Y|yr(COY(J1~:r~ppF_g"> <field name="VAR" id="B8Bt^iAoys@8qoGUkT5j">statusText</field> </block> </value> </block> </value> </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> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
In Zeile 3-12 steht jeweils <variable id="XXXXXXXXXX">. Das XXXXXXX ist bei allen Scripten, die ich mit "Blöcke exportieren" und "Blöcke importieren" dupliziert habe (1 je Raum) identisch.
Danke, -MN
-
@Morgennebel
Diesen Teil musst Du in jedem Script anpassen, da die IDs Seriennummern enthalten.Den Rest kannst Du unverändert kopieren, wenn Du für den Datenpunkt "javascript.0.Calculated.AirQuality.Raumname" andere Blöcke verwendest.
Tipp: Verwende Alias-Datenpunkte. Dann muss in jedem Script nur noch die Variable ThisRoom und die ID in createState() angepasst werden.
-
Danke, das vereinfacht mein Script erheblich.
Jedoch ist meine ursprüngliches Problem leider nicht für mich behoben, ich versuche es nochmal besser zu beschreiben:
- Ich habe das Script für Raum 1
- Ich habe das gesamte Script als Block exportiert und für Raum 2 importiert
- Ich habe die Datenpunkte für die relFeuchte und Temperatur auf Raum 2 angepasst
- Ich habe die Datenpunkte "AirQuality" für Raum 2 angepasst
Diese Vorgehensweise habe ich für viele Räume wiederholt. In meiner Vorstellung sind die Scripte nicht miteinander verknüpft und laufen unabhängig voneinander.
Schaue ich jedoch die Variablen-IDs bei allen Räumen an, so sind die id=""-Strings 100% identisch für alle Räume.
Ich beobachte jetzt in meinem Telegram, daß ich mehrere Nachrichten, teilweise widersprüchlich vom selben Raum erhalte - das sollte doch aufgrund der letzten WENN-Abfrage gar nicht funktionieren:
XXX, [03.08.20 21:51] Fenster Badezimmer ist richtig. relFeuchte = 57%. absFeuchte Innen: 9.85g/m3. absFeuchte Außen: 9.57g/m3. Fensterstatus: offen. XXX, [03.08.20 21:51] Fenster Badezimmer ist richtig. relFeuchte = 58%. absFeuchte Innen: 10.02g/m3. absFeuchte Außen: 9.57g/m3. Fensterstatus: offen. XXX, [03.08.20 22:00] Fenster Badezimmer ist richtig. relFeuchte = 57%. absFeuchte Innen: 9.79g/m3. absFeuchte Außen: 9.51g/m3. Fensterstatus: offen. XXX, [03.08.20 22:12] Fenster Badezimmer ist richtig. relFeuchte = 57%. absFeuchte Innen: 9.73g/m3. absFeuchte Außen: 9.47g/m3. Fensterstatus: offen. XXX, [03.08.20 22:20] Fenster Badezimmer ist richtig. relFeuchte = 57%. absFeuchte Innen: 9.68g/m3. absFeuchte Außen: 9.54g/m3. Fensterstatus: offen.
Ich sehe im IOBroker Objektmenü auch, dass die Datenpunkte AirQuality neu gesetzt und sofort mit einem anderen Wert ersetzt werden.
Daher ist meine wilde These/Vermutung, dass die gleichen IDs der Variablen dazu führen, dass die Scripte nicht unabhängig ausgeführt werden, sondern sich gegenseitig beeinflussen.
Von dieser Beobachtung ausgehend war daher meine Frage, ob die Variablen-IDs wirklich gleich sein dürfen/sollten? Wenn nicht, wie ist die empfohlene Vorgehensweise und ein Blockly-Script mit Variablen mehrfach für verschiedene Räume auszurollen?
Danke, -MN
-
@Morgennebel sagte:
ob die Variablen-IDs wirklich gleich sein dürfen/sollten?
Du meinst Variablen-Bezeichner ? Nur Objekte in ioBroker haben IDs.
Es dürfen in jedem Skript wieder die gleichen Variablen-Bezeichner verwendet werden, da der Gültigkeitsbereich von Variablen auf das Skript beschränkt ist. Oder hast Du etwa die Skripte unter der Gruppe "global" erstellt ? -
Danke für Dein Feedback und die Aussage zu den Variablen-Bezeichnern. Das widerlegt meine These und ich setze dies daher erstmal auf gelöst.
Nur mein Script läuft jetzt nach dem Umbau nicht mehr - das muss ich mir in Ruhe Morgen nochmal anschauen.
Danke, -MN