NEWS
[gelöst] Trigger Problem/Verständnisproblem Blockly Skript Lichtsteuerung
-
Hi,
ich habe folgendes Problem wo ich nicht verstehe wie oder wieso es nicht klappt wie ich möchte.
Ich beschreibe erstmal was ich gerne hätte:
Ich habe einen Reciever (VU Plus), von welchem ich die Zustände im IOBroker habe (also standby aktiv oder nicht....).
Damit möchte ich eine Lampe (Yeelight) und eine Steckdose (Tasmota geflashte Gosund SP1) steuern und zwar folgendermassen:
Wenn Uhrzeit zw. 19 Uhr und 4 Uhr (per Astro Dämmerung oder sowas ginge auch) und Reciever eingeschaltet, dann soll Lampe eingeschaltet werden.
Wenn Reciever wieder ausgeschaltet, dann halt wieder ausschalten mit Verzögerung.....Soweit so gut, das hab ich auch hinbekommen und es klappt, aaaaber:
Schalte ich den Reciever jetzt VOR 19 Uhr ein, geht logischerweise die Lampe ab 19 Uhr nicht an, da ja das Skript nicht mehr ausgeführt wird, da ichs im Moment so habe das der Trigger die änderung von Objekt VU Standby ist.
Ok, das verstehe ich soweit auch, warum dass dann nicht klappt.Jetzt habe ich das gleiche Skript nochmal probiert mit Trigger Zeit zwischen 19 und 4 Uhr jede Sekunde von Jeder Minute von Jeder Stunde also (* * * 19-4 * * *) so,
jedoch passiert dann gar nichts mehr und genau da ist mein Problem, denn ich verstehe nicht wieso.
So müsste er doch (etwas overkill wahrsch. das jede Sekunde zu machen), jede Sekunde das Skript durchlaufen und wenn dann Reciever = an, lampe an usw...
Es passiert dann aber gar nichts mehr.
Ich sehe auch kein Output unter dem Skript, daher kA was da nicht geht, es kommt aber auch kein WARN oder Error..Hier mal das Skript welches geht,
das was nicht geht ist eigentl. das gleiche nur der Trigger getauscht mit Zeitplan wie beschrieben.! -
Wäre es nicht am einfachsten Du machst ein eigenes Script und triggerst auf 19:00h
Wenn VU ist eingeschaltet, dann Licht an, sonst nichtDann hast Du den Fall, VU ist vor 19:00h eingeschaltet abgefangen.
Nach 19:00h greift dein ursprungsscript -
achso du meinst nochmal ein extra Skript um das abzufangen? Ja das währe wohl am einfachsten, würde ich auch hinbekommen, ich dachte nur das geht evtl. alles in einem Skript um das Übersichtlicher zu behalten und ich lerne noch was dabei, deswegen hab ich mal hier nachgefragt und erhoffe mir eine Lösung
-
@W0RSCHD es sind ja zwei unterschiedliche Trigger und man sollte keine 2 Trigger in einem Script haben.
Ausserdem mag ich es einfach , wenn es denn geht
-
Einfacher wäre doch wenn es nur 1 Skript gäbe, wo er einfach ab 19 Uhr anfängt abzufrangen Standby true oder false und dann halt dementsprechend Steuert.
So wäre ja quasi alles abgefangen.
Ich hatte das ja so probiert mit jede Sekunde (erhöhrt wahrsch. die Last extrem auf dem RPI), was aber letzten Endes nichts gebracht hat, da gar nichts passiert ist dann und nichts geschaltet wurde. Und ich verstehe nicht wieso das nicht geklappt hat, darum auch meine Frage hier. -
@W0RSCHD nein, warum sollst Du das System mit unsinnigen permamementen Abfragen im Sekundentakt belasten, wenn Du das ganze mit einer einzigen Abfrage um 19:00h abfangen könntest?
Als Nebeneffekt - vor allem falls Du kein JavaScript Experte bist - ist es doch auch nach Jahren viel einfacher zu erkennen was ein Script überhaupt ausführen soll wenn es nur eine gezielte Aufgabe erfüllt, als wenn Du ein kompliziertes Werk vor dir hast, welches alle Eventualitäten in einem komplexem Script abfängt.
[Nachtrag]
Keiner zwingt Dich meinen Vorschlag anzunehmen -
Hehe, dein Vorschlag ist schon gut keine Frage, ich werde das wahrsch. auch so umsetzen. Mir war auch klar das ich mit der Sekündlichen Abfrage die Last auf dem IOBroker deutlich erhöhe und das recht unnötig, da hast du auch recht, ich wollte aber verstehen wieso dies so nicht funktioniert hat, bzw. was ich da Falsch gemacht habe. Deine Lösung ist effektiv die Lastärmere und wahrsch. auch effektivere.
-
@BBTown sagte:
man sollte keine 2 Trigger in einem Script haben.
Wie kommst Du darauf ? In einem Skript können beliebig viele Trigger verwendet werden. Nur geschachtelte Tigger (Trigger im Triggerbaustein) sollte man vermeiden.
-
@paul53 ja, da habe ich mich unglücklich ausgedrückt - Du kannst Sie losgelöst von einander anordnen, aber findest Du dass dies die Übersichtlichkeit für Anfänger steigert gegenüber einem separatem Script?
-
@BBTown du meinst quasi das 2. Skript so
richtig?
-
@W0RSCHD beinahe ... den "falsch" Bereich brauchst Du doch nicht ... wenn der VU aus ist passiert doch um 19:00h nichts
-
stimmt, das war ein logikfehler meinerseits ^^
Könnte ich die beiden Trigger im selben Skript nacheinander anhängen oder arbeitet er die dann nicht ab also den 2. nicht wenn der erste nicht gelaufen ist?
Oder Funktionieren die trotzdem unabhängig voneinander?
Also würde das auch funktionieren wenn ich den Zeitplan Trigger im ersten Skript hinter/unter den andren Trigger hänge? -
-
ah super, ok das ist top! Danke euch beiden
-
@W0RSCHD schreibts Du dann noch ein [gelöst] vor deinem Post?
-
mach ich