NEWS
Szenen in Blockly
-
Hi zusammen, in meiner Umgebung nutze ich zB Szenen um zb die Garten Beleuchtung an und aus zu schalten wenn eine Tür (xiaomi sensor) geöffnet wird.
Die Szene funktioniert auch wenn ich die Szene manuell aktiviere.
Setze ich die Lampen manuell in das Blockly funktioniert das Blockly auch. Jedoch möchte ich das etwas komprimiert machen also die Szene ins Blockly gepackt.
Ergebnis, die Garten Beleuchtung geht bei geöffneter Tür nicht an oder aus.
Kann ein Blockly Script nicht mit Szenen umgehen?
Gruß
Stefan
-
Poste doch mal dein Blockly Script (exportiert im Code Tag).
-
Das bekomme ich hin.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="variables_set" id="o3Ii^Z;(^[/Wl[]Tw3L" x="-162" y="63"><field name="VAR">Licht_Küche_war_aus</field> <value name="VALUE"><block type="logic_negate" id="V!5ydH97_wW*XXT1|?s!"><value name="BOOL"><block type="get_value" id=";hv1XkhoOp?%h(GvH?_l"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1502825.1.STATE</field></block></value></block></value> <next><block type="variables_set" id="Rg2;En^MI3z3U/jCDi}}"><field name="VAR">Licht_Gartenbeleuchtung_war_aus</field> <value name="VALUE"><block type="logic_negate" id="gZI/sj6.+Ja!z[6iKh=o"><value name="BOOL"><block type="get_value" id="TTno-h6c~hC!b
w3|EOc"><field name="ATTR">val</field>
<field name="OID">javascript.0.Scene.Gartenbeleuchtung</field></block></value></block></value>
<next><block type="on" id="X;Cp_fbl5.{}9+*MBtnW"><field name="OID">mihome.0.devices.magnet_158d0001d821d1.state</field>
<field name="CONDITION">true</field><statement name="STATEMENT"><block type="controls_if" id="r4;C-s:gJHryisv4KGb`"><value name="IF0"><block type="logic_compare" id="UDQ/e84{v6!/G`]9t7QB"><field name="OP">LT</field> <value name="A"><block type="get_value" id="U2EWT0XNsJOW]@]Yk=~f"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.OEQ0271572.1.BRIGHTNESS</field></block></value> <value name="B"><block type="math_number" id="p?TJR~lG*ACFgAtTx8Q6"><field name="NUM">100</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="mc-/457kBLeVlnE*0U5U"><mutation else="1"></mutation> <value name="IF0"><block type="get_value" id="HJ*WB)WwDP/-Zr4?+oaN"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ1502825.1.STATE</field></block></value> <statement name="DO0"><block type="variables_set" id="qNoIPrg/8j}w@iXh;u{G"><field name="VAR">Licht_Küche_war_aus</field> <value name="VALUE"><block type="logic_boolean" id="%r=#Xdt{2cPQouQ]JIn-"><field name="BOOL">FALSE</field></block></value></block></statement> <statement name="ELSE"><block type="control" id="Zvj.L!dIA2R1COxH|?;H"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.NEQ1502825.1.STATE</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="Y-C2(|qU(jar*9o~.nR0"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="v^35z/4wSF6)P:OGjilj"><field name="VAR">Licht_Küche_war_aus</field> <value name="VALUE"><block type="logic_boolean" id="fJ.jCeh`SBtx0@%G/f#="><field name="BOOL">TRUE</field></block></value></block></next></block></statement> <next><block type="controls_if" id="n*v5Mey4,E={?7uOA|;+"><mutation else="1"></mutation> <value name="IF0"><block type="get_value" id="ua[[e5-V,3|Cd8cb+-Ys"><field name="ATTR">val</field> <field name="OID">javascript.0.Scene.Gartenbeleuchtung</field></block></value> <statement name="DO0"><block type="variables_set" id="@,3h9HvhwwahNpW[-n*B"><field name="VAR">Licht_Gartenbeleuchtung_war_aus</field> <value name="VALUE"><block type="logic_boolean" id="GDBd@}JCq{64Ps1;NwSb"><field name="BOOL">FALSE</field></block></value></block></statement> <statement name="ELSE"><block type="control" id="Eyw1aZS{T`@j,As{:f.:"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Scene.Gartenbeleuchtung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="kq~bv(+7[x-s%e%=03wa"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="ja)eLeTb|%f@E6DN4xTp"><field name="VAR">Licht_Gartenbeleuchtung_war_aus</field> <value name="VALUE"><block type="logic_boolean" id="b:LKwM9;zQQLCG#,~UoI"><field name="BOOL">TRUE</field></block></value></block></next></block></statement> <next><block type="timeouts_cleartimeout" id="^9kndE@5R7DmO.Pb3ZWr"><field name="NAME">timeout</field> <next><block type="timeouts_settimeout" id="1m)Q_r6s:]S6[6JqKIcH"><field name="NAME">timeout</field> <field name="DELAY">3</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="controls_if" id="q}VKP`-H5aXwG#1=6+qW"><value name="IF0"><block type="variables_get" id="6H_4wR[~ocbT/Bz18Rdl"><field name="VAR">Licht_Küche_war_aus</field></block></value> <statement name="DO0"><block type="control" id="ftP!r*}f{K0X.R)Uax?:"><mutation delay_input="true"></mutation> <field name="OID">hm-rpc.0.NEQ1502825.1.STATE</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="Z7hs,k@|2R:*~^FsIB~#"><field name="BOOL">FALSE</field></block></value></block></statement> <next><block type="controls_if" id="y_.48SkPAFfw-s{!;CVH"><value name="IF0"><block type="variables_get" id="-Wpbof*~W^0+_qSMUU`e"><field name="VAR">Licht_Gartenbeleuchtung_war_aus</field></block></value> <statement name="DO0"><block type="control" id="X/(^=/hR[cU*!1p,tN+c"><mutation delay_input="true"></mutation> <field name="OID">javascript.0.Scene.Gartenbeleuchtung</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">4</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="Q78@%r/U+%Y)Z^cEi]FG"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></statement></block></next></block></next></block></next></block></statement></block></statement></block></next></block></next></block></xml>
-
Die Abfrage macht irgendwie keinen Sinn:
if (getState("hm-rpc.0.OEQ0271572.1.BRIGHTNESS").val < 100) { if (getState("hm-rpc.0.NEQ1502825.1.STATE").val) { Licht_K_C3_BCche_war_aus = false; } else { setState("hm-rpc.0.NEQ1502825.1.STATE", true); Licht_K_C3_BCche_war_aus = true; }
if (getState("hm-rpc.0.NEQ1502825.1.STATE").val) ````ist doch immer wahr, insofern ist Licht_K_C3_BCche_war_aus auch immer falsch, egal was in deinem Script passiert.
-
Erstmal Danke für die Antwort - auch wenn ich damit nichts anfange kann.
-
Mir fällt auf, dass die Bezeichnung im Export komisch sind, eigentlich heißt das Objekt "Licht_Küche".
-
Wenn ich die Szene raus nehme und anstelle die einzelnen Geräte innerhalb der Szene dort einfüge funktioniert alles.
Warum macht das keinen Sinn? Im Prinzip: Wenn die Tür geöffnet wird und Licht in der Küche ist an soll der Timer nicht greifen und das Licht weiterhin an bleiben. ist das Licht aus bei Öffnen der Tür wird Licht eingeschaltet (und eben die Lampen innerhalb der Szene - was ja nicht geht) und nacht Timer wieder ausgeschaltet. Das funktioniert auch wie gewünscht.
Gruß
Stefan
-
-
Mit der von mir zitierten Abfrage wird nur gefragt, ob das Objekt vorhanden ist und das ist eben immer wahr.
Du musst den Zustand des Objekts abfragen und nicht das Objekt selbst.
Also if Objekt == irgendwas und nicht if Objekt.
-
das ist doch nur ne Kurzschreibform? Wenn der Val true/false ist, ist das kurz für if (getState("hm-rpc.0.NEQ1502825.1.STATE").val === true)
-
Ich entschuldige mich für meine Unwissenheit, nehme alles zurück und behaupte das Gegenteil.
Dann würde ich mal die Umlaute aus allen Objekten usw. entfernen.
-
Umlaute entfernen kann es ja auch nicht sein, Küche ist nun mal Küche und nicht Kueche oder Fluege
Und; die Szene "Gartenbeleuchtung" greift ja zB auch nicht. Wie gesagt, füge ich die Geräte einzeln ein geht alles.
Und; Du nimmst alles zurück und behauptest das Gegenteil?! Wie meinen??? Hilft jetzt nicht oder verstehe ich Dich jetzt nicht?
Gruß
-
Umlaute entfernen kann es ja auch nicht sein, Küche ist nun mal Küche und nicht Kueche oder Fluege
Und; die Szene "Gartenbeleuchtung" greift ja zB auch nicht. Wie gesagt, füge ich die Geräte einzeln ein geht alles. `
HalloAuf Umlaute sollte man beim Programmieren möglichst verzichten.
JavaScript kennt keine Umlaute. Deshalb siehst Du beim Export diese kryptischen Übersetzungen.
Es ist also immer zusätzliche Programmierung notwendig, nur weil jemand unbedingt Küche und nicht Kueche schreiben will. :roll:
Ich würde mich nicht darauf verlassen, dass sich, bei irgend einem Update, ein Bug in diese "Übersetzung" schleicht.
Hast Du schon mal den Debug-Baustein gesehen?
Damit kann man sehr schön den Ablauf eines Programms überprüfen.
Grüße