NEWS
[gelöst] Erstes eigenes Blockly Script - funktioniert plötzlich nicht mehr
-
Hallo Leute,
Ich habe vor einiger Zeit mitbekommen das mit Blockly "visuelles Scripting" möglich ist und habe mich sogleich damit beschäftigt d.h. ein Script mit Wenn/Dann Verknüpfung angelegt. Hat auch fast auf Anhieb funktioniert, worauf ich natürlich sehr stolz war. Nun ist es aber so das (wie immer) aus unerklärlichen Gründen das Teil nicht mehr läuft und ich schon gerätselt habe woran es liegen könnte.
Stelle den Code mal rein:
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="XRVe4HX:v:8|%E;}@Q-*" x="13" y="-887"><mutation items="1"></mutation> <field name="CONDITION">true</field> <value name="OID0"><shadow type="field_oid" id="*Nm6y6qBl7(2[_Z^xaD4"><field name="oid">default</field></shadow> <block type="logic_compare" id="?AJ:-DL?|JTpCas=tFAD"><field name="OP">LT</field> <value name="A"><block type="get_value" id="L#aunzA)lUvQVa[*TYsm"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ0320690.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="Cw05_9bH8h#O%3A?^9)f"><field name="TEXT">30</field></block></value></block></value> <statement name="STATEMENT"><block type="control" id="}YIu]#}K)Z=LjbI3ehG("><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.MEQ1438874.1.STATE</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="S:yt)o=J8^Q-S7Q)thfr"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="f/S/Ei|kY^%.82Opu-0m"><mutation delay_input="true"></mutation> <field name="OID">hm-rpc.0.MEQ1438874.1.STATE</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">7200000</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="Qvkr`(o:od:W?m8=yWTq"><field name="BOOL">FALSE</field></block></value></block></next></block></statement> <next><block type="pushover" id="AY;G(Wxxxxx5.V[{z]{"><field name="INSTANCE">.0</field> <field name="SOUND">bugle</field> <field name="PRIORITY">0</field> <value name="MESSAGE"><shadow type="text" id="Z{dLen%l-7%egHK={q8Z"><field name="TEXT">Kugellampen bei Dämmerung für 2h an (< 30)</field></shadow></value> <value name="URL"><block type="text" id="CTQcG;Pq4(J-rdW(#(am"><field name="TEXT">http://xxxx:8082/vis/#Tablet_Final</field></block></value> <next><block type="email" id="3H9OWJf3/vDSiJwX-.eA"><field name="INSTANCE">.0</field> <field name="IS_HTML">TRUE</field> <value name="TO"><shadow type="text" id="hx,z}JE_`sT0O;UA1E0H"><field name="TEXT">xxxx@gmail.com</field></shadow></value> <value name="TEXT"><shadow type="text" id="(K+=P`xf=Nm!cx,,=lJp"><field name="TEXT">Kugellampen bei Dämmerung für 2h an (< 30)</field></shadow></value> <value name="SUBJECT"><shadow type="text" id="DVkB8}Al:alQL-ewpYQg"><field name="TEXT">http://xxxxx:8082/vis/#Tablet_Final</field></shadow></value></block></next></block></next></block></xml>
Vielleicht hat jemand eine Idee, wo der Haken an der Sache ist,
Wie gesagt, hat funktioniert.
Das einzige was nicht funktioniert hat war die Leuchtdauer der Lampen. Nach zwei Stunden wurde nicht ausgeschalten.
Das wurde erst, nachdem die Helligkeit wieder über 30 stieg.
Vielen Dank im Voraus für Eure Hilfe !
crepp
-
ähm…
entweder echten Skript Export oder ein Screenshot deines Blockly "Codes" würde ich vorschlagen.
Das da oben ist ja kaum zu lesen mit den ganzen tags.
-
Sorry hier ist er.
on({id: getState("hm-rpc.0.NEQ0320690.1.BRIGHTNESS").val < '30', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("hm-rpc.0.MEQ1438874.1.STATE"/*Kugellampe.STATE*/, true); setStateDelayed("hm-rpc.0.MEQ1438874.1.STATE"/*Kugellampe.STATE*/, false, 7200000, true); }); sendTo("pushover.0", "send", { message: 'Kugellampen bei Dämmerung für 2h an (< 30)', sound: "bugle", url: 'http://xxxx:8082/vis/#Tablet_Final' }); sendTo("email.0", "send", { html: 'Kugellampen bei Dämmerung für 2h an (< 30)', to: 'xxxx@gmail.com', subject: 'http://xxxx:8082/vis/#Tablet_Final' });
Gruß
crepp
-
ähm…
entweder echten Skript Export oder ein Screenshot deines Blockly "Codes" würde ich vorschlagen.
Das da oben ist ja kaum zu lesen mit den ganzen tags. `
ähm… Das ist ein richtiger Export.Was mir so auf die Schnelle auffällt.
Pushover und Email werden nur 1x beim starten des Scripts ausgeführt.
Die Bausteine befinden sich nicht innerhalb des Triggers.
Was willst Du denn mit dem Script bewirken?
Momentan wird der Trigger JEDESMAL ausgeführt wenn es kleiner (dunkler) als 30 wird.
z.B.
Bei 29 wird der Trigger ausgeführt.
Lampe wird eingeschaltet, Timeout für 2 Std. gestartet um Lampe wieder auszuschalten.
Soweit OK.
Jetzt wird es innerhalb der 2 Std. dunkler (was ja auch zu erwarten ist)
Bei 28 wird der Trigger wieder ausgeführt.
Lampe wird eingeschaltet, obwohl sie schon eingeschaltet ist. (sollte man grundsätzlich vermeiden, DutyCycle)
Dann wird der Timer gelöscht und wieder auf 2 Std. gesetzt.
Das gleiche bei 27, 26, 25......
Jetzt wird es wieder heller 0, 1, 2.........
Das Script wird wieder jedes mal ausgeführ. Der Wert ist immer noch <30.
Das Konzept würde ich noch mal überdenken.
Grüße
-
also ich fand Variante zwei irgendwie lesbarer.
Ich gebe zu, meine Formulierung war nicht ideal. Letztlich ging es aber darum, die Wahrscheinlichkeit für Feedback zu erhöhen (also eine freundliche Absicht). Und ich glaube, dass mehr Leute die wenigen Zeilen lesen als sich durch die lange Variante zu quälen.
Aber das ist jetzt OT.
-
also ich fand Variante zwei irgendwie lesbarer. `
[OT: ON]Du bist ja auch wahrscheinlich ein echter Scriptler.
Für uns kleine Blocklyler sind Export und Bildchen am schönsten
[OT: OFF]
Grüße
-
Danke für die Tipps, werde ich Mal überprüfen
Gesendet von meinem HUAWEI MT7-L09 mit Tapatalk
-
Ziel des Scripts ist das Anschalten der Lampen bei Erreichen von Helligkeit 30 für 2h. Den Rest der Nacht sollen diese ausbleiben.
Gesendet von meinem HUAWEI MT7-L09 mit Tapatalk
-
Ziel des Scripts ist das Anschalten der Lampen bei Erreichen von Helligkeit 30 für 2h. Den Rest der Nacht sollen diese ausbleiben. `
Als Beispiel habe ich Dein Blockly mal etwas umgebaut. (nicht getestet)Da ich Deine Datenpunkte nicht habe, musst Du die an zwei Stellen selbst einsetzen.
Hier der Export:
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="0pHZ{vcW)lJY`fb6pck" x="37" y="-1113"><field name="COMMENT">BRIGHTNESS triggern</field>
<next><block type="on_ext" id="d;BVWqUDoaqqfnc}A8a"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="wiw3!IYQfI[=?G_KN(-R"><field name="oid">default</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="*)u)s01(+a.^cr=YjEo)"><field name="COMMENT">gewünschte Werte eingrenzen</field> <next><block type="controls_if" id="HqdptKMJmdh*Qg^n-Fl+"><value name="IF0"><block type="logic_operation" id="?XTdy!]m,h@ucSm:WV`0" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="pg^]I{[Ho-W)E8vojt_?"><field name="OP">LTE</field> <value name="A"><block type="get_value" id="^1b23It8Qy^3y%h]Y!T^"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ0320690.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="k(.Y_+6=0aNO!;?q=Z30"><field name="TEXT">30</field></block></value></block></value> <value name="B"><block type="logic_compare" id="LAdEMDDHWXKMWh:VjwS4"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="Z?j,,misEqa[_VT]7d.T"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.NEQ0320690.1.BRIGHTNESS</field></block></value> <value name="B"><block type="text" id="91yN)@K1c=n`1S?L)qY#"><field name="TEXT">25</field></block></value></block></value></block></value> <statement name="DO0"><block type="comment" id="+S?0|pZATaMz1}CzX^~."><field name="COMMENT">Nur ausführen wenn Lampe aus ist</field> <next><block type="controls_if" id="YJb4cCS+,@jNK9CWFz?z"><value name="IF0"><block type="logic_compare" id=";|)#0MYE[E5#(0=JzXk/"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="u)L61t7Dh0@VPRfs!8EF"><field name="ATTR">val</field> <field name="OID">ID auswählen</field></block></value> <value name="B"><block type="logic_boolean" id="qqvtv]*tRZ7sgB^2V3bE"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="procedures_callnoreturn" id="b}b7X}%mxQ2/i!je]A0%"><mutation name="LampeEin"></mutation> <next><block type="procedures_callnoreturn" id=":~}9e0W4xmofiGxnwW]l"><mutation name="LampeAus"></mutation></block></next></block></statement></block></next></block></statement></block></next></block></statement></block></next></block>
<block type="procedures_defnoreturn" id="8_KqmQLaVS6L(-X%G}i" x="-288" y="-763"><field name="NAME">LampeEin</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK"><block type="control" id="d],9gsKL`X1f:(FjP,5"><mutation delay_input="false"></mutation>
<field name="OID">hm-rpc.0.MEQ1438874.1.STATE</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="logic_boolean" id=")=Xq?8E}6QPPtq~+D3w!"><field name="BOOL">TRUE</field></block></value>
<next><block type="pushover" id="AY;G(Wxxxxx5.V[{z]{"><field name="INSTANCE">.0</field>
<field name="SOUND">bugle</field>
<field name="PRIORITY">0</field><value name="MESSAGE"><shadow type="text" id="Z{dLen%l-7%egHK={q8Z"><field name="TEXT">Kugellampen bei Dämmerung für 2h an (< 30)</field></shadow></value> <value name="URL"><block type="text" id="CTQcG;Pq4(J-rdW(#(am"><field name="TEXT">http://xxxx:8082/vis/#Tablet_Final</field></block></value></block></next></block></statement></block>
<block type="procedures_defnoreturn" id="|OJe]Y-?I7fd!m[GI
]S" x="312" y="-763"><field name="NAME">LampeAus</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="timeouts_settimeout" id="%?YX2J)iGt#;:Hg3@9!("><field name="NAME">timeout</field> <field name="DELAY">7200000</field> <statement name="STATEMENT"><block type="control" id="f/S/Ei|kY^%.82Opu-0m"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.MEQ1438874.1.STATE</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="Qvkr
(o:od:W?m8=yWTq"><field name="BOOL">FALSE</field></block></value>
<next><block type="email" id="3H9OWJf3/vDSiJwX-.eA"><field name="INSTANCE">.0</field>
<field name="IS_HTML">TRUE</field><value name="TO"><shadow type="text" id="hx,z}JE_`sT0O;UA1E0H"><field name="TEXT">xxxx@gmail.com</field></shadow></value> <value name="TEXT"><shadow type="text" id="(K+=P`xf=Nm!cx,,=lJp"><field name="TEXT">Kugellampen AUS</field></shadow></value> <value name="SUBJECT"><shadow type="text" id="DVkB8}Al:alQL-ewpYQg"><field name="TEXT">http://xxxxx:8082/vis/#Tablet_Final</field></shadow></value></block></next></block></statement></block></statement></block></xml>
! ````
Bei Fragen fragen
Grüße
-
Hab es gerade probiert und hat auf Anhieb funktioniert. Das Script hat mir auch geholfen die Logik dahinter zu verstehen. Vielen Dank für deine Hilfe!
Gruß crepp
-
Danke für die Rückmeldung, gern geschehen.
Würdest Du bitte noch den Betreff in Deinem ersten Beitrag mit [gelöst] ändern.
Weitere Infos findest Du hier. http://forum.iobroker.net/viewtopic.php?f=8&t=2451
Grüße
-
Klar
-
Wie ich jetzt festgestellt habe funktioniert das Script grundsätzlich, allerdings schaltet die Lampe abends mit Einbruch der Dämmerung wie gewollt, am morgen zwischen den eingestellten Triggerwerten jedoch auch. Das ist natürlich so nicht gewollt. Ich habe dann damit experimentiert den Zeitbereich einzugrenzen (zw, 18:00 und 22:00) Dann hat das Script aber nicht mehr funktioniert. Weiss jemand Rat ? Ich möchte die Lampe auch nicht die ganze Nacht leuchten lassen …
MfG
crepp
Im Anhang noch mal die aktuelle Version.
686_unbenannt.png -
Ich habe dann damit experimentiert den Zeitbereich einzugrenzen (zw, 18:00 und 22:00) Dann hat das Script aber nicht mehr funktioniert. Weiss jemand Rat ? Ich möchte die Lampe auch nicht die ganze Nacht leuchten lassen … `
Hallo
Zeige doch mal Deine Versuche.
Grüße
-
Hallo,
Das war die Version die überhaupt nicht funktioniert hat.
Ich habe diese Version aber leider gelöscht, nachdem ich tagelang verschieden Sachen getestet hatte.
Ich hatte hier an der Stelle mit dem Pfeil eine Zeitfunktion nach der Art "und nur zwischen 16.00 und 22:00"
Ich finde aber den entsprechenden Baustein nicht mehr.
Ich dachte mit der Zeitfunktion kann ich die Schaltung beeinflussen …
War das programmlogisch nicht richtig ?
Gruß
crepp
-
Hallo crepp
Der Baustein den Du suchst ist der 2. unter "Datum und Zeit".
Klick mal auf den Pfeil hinter "kleiner als".
Viele Wege führen nach Rom.
Deine Lösung könnte jetzt so aussehen.
Grüße
-
Ah ok, ich hatte den Zeitbaustein unter den Trigger Helligkeit gesetzt, ich probier das jetzt mal so.
Danke für die schnelle Hilfe
crepp
-
Bin gerade auf der Suche wie man "und" und "oder" Bedingungen gruppiert in Blockly und bin dabei auf eueren schönen "und" mit 2 Ausgängen gestoßen. Wenn man den auf "oder" umstellen kann wäre das sicher die Lösung von meinem Problem aber ich finde und kenne nur den einfachen "und/oder" Block mit einem Ein- und Ausgang. Wo ist denn der versteckt?
-
Bin gerade auf der Suche wie man "und" und "oder" Bedingungen gruppiert in Blockly und bin dabei auf eueren schönen "und" mit 2 Ausgängen gestoßen. Wenn man den auf "oder" umstellen kann wäre das sicher die Lösung von meinem Problem aber ich finde und kenne nur den einfachen "und/oder" Block mit einem Ein- und Ausgang. Wo ist denn der versteckt? `
HalloEine Frage stellen, die mit dem Thema dieses Thread nicht zutun hat, der zudem mit [gelöst] gekennzeichnet ist, macht nicht viel Sinn!
Aber sei es drum. Klick doch einfach mal auf das Pfeilchen hinter dem "und"…....
Grüße
-
So offtopic fand ich es gar nicht aber sorry. Ich finde den Block ja erst gar nicht Den einzigen "und" Block den ich finde ist der in Logik und der schaut ganz anders aus. Soll ich einen neuen Thread aufmachen und hierher verlinken um den "und" Block zu beschreiben den ich suche?
2548_bildschirmfoto_2017-05-21_um_13.18.50.png