NEWS
Was kann Nodered was Blockly nicht kann?
-
@Hamudulu Du hast es eh schon selbst geschrieben: statt 'aktualisiere' einfach 'steuere' nehmen.
-
Ich hatte beides versucht. Leider regiert meine Hardware nicht darauf. Es wird in den Objekten zwar richtig gesetzt aber nicht wirklich geschaltet. Wobei bei Nodered schon. Woran kann das liegen?
-
@Hamudulu
Mit aktualisieren wird es definitiv nicht laufen, da das quasi nur den DP ohne "Enter" schreibt, also den Wert nicht abschickt.
Dann läuft der Cron im Minuten Takt, würde ich durch ein Trigger der auf Änderung der zwei Nod-Red DPs reagiert ersetzten. So wird das nur ausgeführt, wenn sich einer der Werte auch tatsächlich ändert.
Ansonsten muss das so funktionieren. -
@Jan1 Der Trick war den Trigger nicht auf egal stehen zu lassen. Er muss auf update stehen damit der Befehl ausgeführt wird. Den Rest hab ich umgesetzt wie von dir vorgeschlagen. Funktioniert soweit.
Danke schön. -
@Hamudulu
Ich hab nicht ein Script bei dem ich den Trigger nicht auf egal stehen habe. Wobei mir die Funktion auch nicht 100% klar ist. Daran dürfte es nicht gelegen haben. -
@Jan1 bei mir ist es jedenfalls der Trick dass es funktioniert...komisch, ist aber so...wenn s hilft dann soll das eben so sein
-
@Hamudulu
Wenn es auf update steht ist nur Update relevant, bei egal eben alles. Heißt es kann nicht sein dass es mit egal nicht funktioniert aber mit Updat. Egal beinhaltet update und ich würde das auch wieder auf egal umstellen. -
@Jan1 ja, vermutlich hast du recht, ich bin noch recht neu in blockly. Ich optimiere grad nochmal die Regelung und hab es wieder auf egal.
Mal sehen ob es klappt.
Sollte so aber klappen, oder?
-
So wird es nicht klappen, du setzt zum Scriptstart beide Variablen und bei Änderungen der Ausgangswerte vergleichst du die beim Scriptstart gesetzten Variablen nicht die aktuellen Werte.
Enrico
-
@RappiRN Versteh ich nicht. Ich definiere die Variable mit der ich arbeiten will. Warum sollte das nicht klappen?
Ich könnte die Variablen ja auch weglassen, und direkt mit dem Wert aus arbeiten, ist aber das gleiche oder? -
@Hamudulu... genau, aber du stellst die Variable genau einmal, nämlich zum Scriptstart, auf den Wert deiner Objekte.
Vergleichen tust du aber die zum Scriptstart erstellten Variablen, die da auch genau einmal den Wert der Objekte bekommen, nach Veränderung der Objekte.
Oder startest du das Script jede Minute? Das wäre auch nicht ratsam.Mal ein Beispiel mit Werten:
Zum Scriptstart sind die Werte für Feuchtigkeit und Fenster(?)Position auf 60 bzw 90, dann werden die beiden Variablen auf genau diese Werte gesetzt.
Das Script läuft dann und nach Änderung, von mir aus, beider Werte auf 68 und 97 läuft das Script durch und vergleicht die Werte 60 und 90 und schaltet aus.Es fehlt also ein Bindeblock, der die Variablen und Objekte verbindet, anders gesagt, wird dann die Variable bei jeder Änderung des Objektes angepasst.
Enrico
-
So sollte es aber klappen , oder?
-
@Hamudulu ja
-
@Hamudulu sagte in Was kann Nodered was Blockly nicht kann?:
So sollte es aber klappen , oder?
Entweder so, oder Du setzt die beiden setze Werte mit in den Trigger, über das falls, also nur einmal da reinziehen, das sollte auch funktionieren.
Oder beide kopieren und einmal da rein ziehen. Dann werden die Variablen beim Scriptstart einmalig gesetzt und im Betrieb bei Änderung. -
So, das ist es im Endeffekt geworden. Funktioniert soweit.<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="(B*.i$?=:Z/@zm9h(ab)">luftfeuchtigkeit</variable> <variable type="" id="[8FVGmlBF@N?v$xwfL#r">temperatur</variable> <variable type="" id="Lv/#?]#gfWreC?fS%m4d">taupunkt</variable> </variables> <block type="comment" id="M!ZZ@pn}RJs+$wHk2il#" x="-513" y="-538"> <field name="COMMENT">Luftfeuchtigkeit Keller</field> <next> <block type="on_ext" id="A8^ai?hR%4U$=ufQ`+GF"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}DYy],8@=uM=H^721oyU"> <field name="oid">homee.0.TemperatureAndHumiditySensor-172.RelativeHumidity-1014</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="poY540!PU2/+Qx.iZG}B"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="oi0Fnc(eqg?=-Hv7T)L,"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="i+z/|hTW*(cP5C-79j=D"> <field name="ATTR">val</field> <field name="OID">homee.0.TemperatureAndHumiditySensor-172.RelativeHumidity-1014</field> </block> </value> <value name="B"> <block type="math_number" id="})wwr[d#h;;btdk|m@Rj"> <field name="NUM">65</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="[5^lL}G0P4*3zzlf@Ux4"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">luftfeuchtigkeit</field> <value name="VALUE"> <block type="logic_boolean" id="vNO^YS)A(^}Rvz4#!%z`"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id=")!]hRgT$.C$:O(1Ey!tN"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">luftfeuchtigkeit</field> <value name="VALUE"> <block type="logic_boolean" id="Q.97jV*%v?0Z(]+OQ5Lt"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="procedures_callnoreturn" id="KEw@)QuVJv^~CF/@}Zmh"> <mutation name="lüftung"></mutation> </block> </next> </block> </statement> </block> </next> </block> <block type="procedures_defnoreturn" id="~b)D{PD27_%[RUAYQr(-" x="87" y="-538"> <field name="NAME">lüftung</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="controls_if" id=":@5|m#mR~#xLK-%.#6ks"> <mutation else="1"></mutation> <value name="IF0"> <block type="variables_get" id="t!rnBt%.Ts#dr;a1c_pr"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">luftfeuchtigkeit</field> </block> </value> <statement name="DO0"> <block type="controls_if" id="N1RvCNQ9x(8l(|a,1jTP"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="i_BbMnEvbW$[V5/i`7r]"> <field name="OP">AND</field> <value name="A"> <block type="variables_get" id="=XFnTl/dY!FrwAPj4KPw"> <field name="VAR" id="[8FVGmlBF@N?v$xwfL#r" variabletype="">temperatur</field> </block> </value> <value name="B"> <block type="variables_get" id="xQR(vGj{r.Bj~)Xz63RP"> <field name="VAR" id="Lv/#?]#gfWreC?fS%m4d" variabletype="">taupunkt</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="(_krL4B:;^4-n=dG`!(m"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.ElectricMotorMeteringSwitch-61.Position-508</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="aI+2~+n[7+4+~3]J7T.}"> <field name="NUM">20</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="{1;vG=tu7*LbgxRJ)8-h"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="8sU!#cO(4CHE~g{qJC_g"> <field name="VAR" id="(B*.i$?=:Z/@zm9h(ab)" variabletype="">luftfeuchtigkeit</field> </block> </value> <value name="B"> <block type="logic_boolean" id="f#Dai2xZM(aB=QFj0)xv"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="mM$KO6bDgtr5:)Id$ofs"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.DoubleOnOffSwitch-174.OnOff-1018</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="{P{Dv+DV*`ZzCWt%t@)w"> <field name="NUM">1</field> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="control" id="JTtu7Pew.+g*uAsP69Sb"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.DoubleOnOffSwitch-174.OnOff-1018</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="uIK5SmlYfl0YHDLS7ef`"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="eH3G8~=$p{R-6Y5P7Msx"> <mutation delay_input="false"></mutation> <field name="OID">homee.0.ElectricMotorMeteringSwitch-61.Position-508</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="@ZhVcqO$H3JFWV?ny3!I"> <field name="NUM">97</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> <block type="comment" id=":l`H$GprV;f|TQumI.N(" x="-512" y="-237"> <field name="COMMENT">Aussentemperatur</field> <next> <block type="on_ext" id="(57P08c=o{Hy:yk%{@)t"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="U_=FtFd:|*5FXLzSk}BG"> <field name="oid">homee.0.TemperatureAndHumiditySensor-168.Temperature-1002</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="t+UdDouks(mnH/,|5z[S"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="Ft=v6i;W.]RZ807sCI2o" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="CEc3+VQFHR]o}z/MN4qD"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="~+oWSHFLmBI]k(ba;Y^M"> <field name="ATTR">val</field> <field name="OID">homee.0.TemperatureAndHumiditySensor-168.Temperature-1002</field> </block> </value> <value name="B"> <block type="math_number" id="dF5N8C{#s]lcG(r~R+)e"> <field name="NUM">12</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="|;yz1kp|syCZd^A^6/ta"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="=iwOS@jWD9D0Mwk;K[J3"> <field name="ATTR">val</field> <field name="OID">homee.0.TemperatureAndHumiditySensor-168.Temperature-1002</field> </block> </value> <value name="B"> <block type="math_number" id="6z:AdEYB0m]3cy(YImY^"> <field name="NUM">25</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id=".l;d;vt0y91=gJ[?.Gta"> <field name="VAR" id="[8FVGmlBF@N?v$xwfL#r" variabletype="">temperatur</field> <value name="VALUE"> <block type="logic_boolean" id="5RSo{T5:Zl.yfk^0M8W@"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id=":)5nCSp9cnVzWKTEugU2"> <field name="VAR" id="[8FVGmlBF@N?v$xwfL#r" variabletype="">temperatur</field> <value name="VALUE"> <block type="logic_boolean" id="QDMfIC@3sWG{,!P(Ai,)"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="procedures_callnoreturn" id="Vxv2pctYKes~^8:m_Sdi"> <mutation name="lüftung"></mutation> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="LBytHUC~DS?m{XN]=OZz" x="-513" y="113"> <field name="COMMENT">Taupunkt</field> <next> <block type="on_ext" id="e+(}P3_FLe)@P^u`?V~S"> <mutation items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="wL8VpU!_$`VA31N@}Zfm"> <field name="oid">node-red.0.Taupunkt_aussen</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="iL[:a!%:9CWimwL$tEeh"> <field name="oid">node-red.0.Taupunkt_innen</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id=",]X8n{]$%iE(X/|!rY*+"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="!tqV^qhccI@@ly:}dK`d"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="djy)lb~PFy17,6uDl_@z"> <field name="ATTR">val</field> <field name="OID">node-red.0.Taupunkt_innen</field> </block> </value> <value name="B"> <block type="get_value" id="L+dV$Nm`BFJg)r2KPZdT"> <field name="ATTR">val</field> <field name="OID">node-red.0.Taupunkt_aussen</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="NKpt*u+9jUHKrhGj|;)#"> <field name="VAR" id="Lv/#?]#gfWreC?fS%m4d" variabletype="">taupunkt</field> <value name="VALUE"> <block type="logic_boolean" id="0?u[vHgys+/YB([K~}E^"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="H%Op*=zYsC0:b!Glc$%,"> <field name="VAR" id="Lv/#?]#gfWreC?fS%m4d" variabletype="">taupunkt</field> <value name="VALUE"> <block type="logic_boolean" id="JN}=GE.;3v+ZO!)VOkxZ"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="procedures_callnoreturn" id="K1S|d!2Lp:g[%.t4g:Pu"> <mutation name="lüftung"></mutation> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
@Hamudulu
Sieht doch ganz gut aus, auch die Funktion sinnvoll verwendet.
Dann noch der standard Hinweis, bei falls ist =wahr nicht nötig, da Grundfunktion des Block.