NEWS
Problem mit Logik
-
Hallo zusammen,
ich habe ein Problem bei diesem Skript.
Egal, ob die abgefragten Variablen wahr sind, das Skript läuft immer durch. Es soll jedoch nur durchlaufen werden, wenn alle der Variablen "false" sind. Vermutlich habe ich es zu sehr verschachtelt und es läuft immer durch?
Danke!
Gruß surfer
-
@surfer09 sagte in Problem mit Logik:
Es soll jedoch nur durchlaufen werden, wenn alle der Variablen "false" sind.
so steht es auch da?
Hast du mal die Werte der states überprüft?
z.B. mit einem debug-Baustein?oder befindet sich in dem abgeschnittenen Teil noch eine Überraschung?
-
@Homoran zur Sicherheit kopiere ich mal den kompletten Code hierher. Das Skript soll nur wenn die 3 Variablen false sind das Radio einschalten, sonst bei true soll es aus bleiben.
Was ich geändert habe: ich habe vor Kurzem die 3. Variable "krank" hinzugefügt. Ist das vielleicht zu viel? Vorher hat es nämlich noch funktioniert mit den 2 Variablen.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="comment" id="M@S_f!R-1^:Cp1Au5-)A" x="138" y="-138"> <field name="COMMENT">Logitech Radio Bad Wochentags um 5:55 Uhr einschalten</field> <next> <block type="schedule" id="7j]RJkq+MRMN;o,T-)-9"> <field name="SCHEDULE">{"time":{"exactTime":true,"start":"05:55"},"period":{"days":1,"dows":"[1,2,3,4,5]"}}</field> <statement name="STATEMENT"> <block type="controls_if" id="{V9-l6NQML3qA@AuF-_r"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="t,XJDKrw?bBDccyg2F0^"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id=";UT{0a9|TWh]F|}@/D,p"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="iJ{0.uTkGJpsM(GX}M*e"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="l7bc7q20?pE6]x9yYIDU"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.Urlaub</field> </block> </value> <value name="B"> <block type="logic_boolean" id="S]V`qyyEM|P(5ZUr(-m]"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="!S9v`q._3FjZ!O.zhD|`"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Pu_#t~;#kT.G%=%Bia:]"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.Feiertag</field> </block> </value> <value name="B"> <block type="logic_boolean" id=";xX6K%D34X/8*PGAZa=]"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="7U8Jon;sCP3U(;5_dfG:"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="NTlIG]Sut_a4Ni,mD7hI"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.krank</field> </block> </value> <value name="B"> <block type="logic_boolean" id="v/i$gJBxr]vIvaIN0C-|"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="P6lH!uuec[xZwMzX.e+L"> <field name="COMMENT">Logitech Radio einschalten</field> <next> <block type="request" id="@x*FIJj|_mu4.zOfq5r4"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="0k%y?Sz$IDYTLhPrObhG"> <field name="TEXT">http://192.168.1.198:9000/plugins/Favorites/index.html?action=play&index=0&player=192.168.1.202</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="oTZNZa]WI#4Ix*eYR)=!"> <field name="NAME">timeout</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="comment" id="BTkJX%h0cjH~_ZxpJ|`S"> <field name="COMMENT">Lautstärke setzen</field> <next> <block type="request" id="9=c8nZ#KmJGaxfB,L5VA"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="@TWCY9|;gRUjiE2My~CI"> <field name="TEXT">http://192.168.1.198:9000/status.html?p0=mixer&p1=volume&p2=15&player=192.168.1.202</field> </shadow> </value> <next> <block type="debug" id="D-PdPt(hw6Wmzuaob:A;"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="i4A%pS|#+BM`th_UCWd5"> <field name="TEXT">Radio Bad eingeschaltet</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="k%rWU2V.+#JNRt:t?-u("> <field name="OP">OR</field> <value name="A"> <block type="logic_operation" id="G$w+C9@^AQXYp6CH|fb2"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="ac|zy@DVE7[kov,XNKVx"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Y9I!XHv?RT=.r*:3^_QH"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.Urlaub</field> </block> </value> <value name="B"> <block type="logic_boolean" id="^I./@r154@HsLok!re!c"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="d+d8Zq3(ULx:m;x:~G1Z"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="QrxUIr!i~RoDs-)TK62!"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.Feiertag</field> </block> </value> <value name="B"> <block type="logic_boolean" id="+VeI#L{jy=|_cQMhE()0"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=";f}IgLR.C,mWkpF$O]}^"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="N$F]q]D8VB.@gISUNc_0"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.krank</field> </block> </value> <value name="B"> <block type="logic_boolean" id="vpb34zm!325;(1(ZVcXS"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="debug" id="Ov%(t%MQ$uVE.9t^y+x#"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="=TzbQXa]:jJwV_X:UqU9"> <field name="TEXT">Radio bleibt ausgeschaltet, weil Urlaub im Kalender steht, oder ein Feiertag ist</field> </shadow> </value> </block> </statement> </block> </statement> <next> <block type="comment" id="b%[{F,)kSx{%r71o`5ME"> <field name="COMMENT">Logitech Radio Bad Wochentags um 6:02 Uhr ausschalten</field> <next> <block type="schedule" id=";;#Ha2gBy_qrEL$+)BQo"> <field name="SCHEDULE">{"time":{"exactTime":true,"start":"06:02"},"period":{"days":1,"dows":"[1,2,3,4,5]"}}</field> <statement name="STATEMENT"> <block type="controls_if" id="22C`4[Zlv(m/hX@:1kOA"> <value name="IF0"> <block type="logic_operation" id="%{JFV|fwYFXlO74nqmED"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="99WiYl}NjOyK`=-4MgTo"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Uw1T?kGm09r@L5ZH5t#a"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="j.J]%Kh,JKRs{l;(i4V{"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.Urlaub</field> </block> </value> <value name="B"> <block type="logic_boolean" id="zVI^?h:.7%j8eu(fmo~E"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="MkS!(b#`WtyqXnvgus=="> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="VgAt?-M=fo$LE{wg5fs("> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.Feiertag</field> </block> </value> <value name="B"> <block type="logic_boolean" id=".Exw2huC{zeWt$2}Pih}"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="|=D{/b?B,juOe.^ai@jK"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="H4Rn;UJBsy$I(Z2yiD4v"> <field name="ATTR">val</field> <field name="OID">ical.0.events.0.today.krank</field> </block> </value> <value name="B"> <block type="logic_boolean" id="=KrKHvk#U!WoO_2V)wmY"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="request" id="S|n:dj{oiz=1O-(gsngN"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="}P]O*D3PMn{`msoXI-JV"> <field name="TEXT">http://192.168.1.198:9000/status.html?p0=stop&player=192.168.1.202</field> </shadow> </value> <next> <block type="debug" id="*$W=T7=ym%G$tdB*$?Br"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="P6$/p9O|Df[5s#|RZ7uJ"> <field name="TEXT">Radio Bad ausgeschaltet</field> </shadow> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@surfer09 sagte in Problem mit Logik:
kopiere ich mal den kompletten Code hierher.
nutzt mir leider am Handy nichts
@surfer09 sagte in Problem mit Logik:
Ist das vielleicht zu viel?
Zuviel gibt es nicht.
Wie ist der Wert, den das Blockly zu sehen bekommt?
Mit debug zur Laufzeit auslesen
-
@surfer09
Die Bedienung ist aber auch sowas von umständlich aufgebaut. Da soll alles auf falsch geptüft werden, warum also alles einzeln und das UND verknüpft. Oder noch einfach, man negiert das ganze einfach mit nem "nicht" dann kannst gleich das wahr sparen, weil das die Grundfunktion der FALLS ist. -
@Jan1 Es geht mit Sicherheit einfacher, aber ich bin auch kein Profi auf dem Gebiet ;-). Könntest du mir vielleicht einmal den oberen Teil so bauen, wie du meinst?
-
@Homoran: Das Problem hat sich höchstwahrscheinlich erledigt. Der ICAL Adapter hat irgendwie die Werte nicht korrekt ausgelesen aus meinem Kalender. Erst nach Instanz-Neustart hat er gerade die Werte aktualisiert.
-
@surfer09 sagte:
Teil so bauen, wie du meinst?
-
@surfer09 sagte in Problem mit Logik:
@Homoran: Das Problem hat sich höchstwahrscheinlich erledigt. Der ICAL Adapter hat irgendwie die Werte nicht korrekt ausgelesen aus meinem Kalender. Erst nach Instanz-Neustart hat er gerade die Werte aktualisiert.
genau dafür ist der debug-Baustein, damit man sieht wie die Werte sind mit denen das Skript arbeitet.
Werte, die man meint zu haben helfen nicht. -
@paul53 Scheint programmtechnisch ja korrekt zu sein, aber wo steckt hier das "wahr" oder "falsch"? Irgendwie kapier' ich das gerade nicht.
-
@surfer09 sagte in Problem mit Logik:
aber wo steckt hier das "wahr"
versteckt
beim Falls gilt immer "wahr", auch wenn es nicht explizit genannt ist
-
@Homoran Ahhh! Jetzt geht mir ein Licht auf, Danke!
-
@surfer09 sagte:
aber wo steckt hier das "wahr" oder "falsch"?
Im Wert der 3 Datenpunkte. Falls verzweigt bei "wahr" in "mache", bei "falsch" in "sonst".
-
Danke euch auf jeden Fall für die schnelle Hilfe und Erklärung!
-
@surfer09
Der Grund warum man es vermeidet auf falsch zu prüfen, denn das muss dann auch extra eingetragen werden. Wahr wird immer ohne extra Angabe geptüft.
Falsch wird somit durch nicht wahr ersetzt
Paul hat das ja so umgesetzt, wie ich es beschrieben hatte.