NEWS
Zwei Skripte greifen parallel auf ein Gerät zu ?
-
Guten Tag,
ich habe folgendes Problem:
Mein erstes Skript "zeigt" in 5 Grad Abständen die Temperatur anhand von einer Farbe an.
Das zweite Skript soll nun, falls der Ping Adapter mein Handy im Wlan erkannt hat, die Lampe für eine bestimmte Zeit (sagen wir mal 20 Sekunden) blinken lassen und dann wieder auf die "Temperaturanzeige" springen. Falls die Lampe aus ist, soll sie noch eingeschaltet werden.
Das Problem ist das es nun ganze zeit hin und her springt. Es ist durchgängig auf dem zweiten Skript, ändert sich die Temperatur zeigt er dies kurz an und springt wieder auf das zweite Skript. Das mit dem "Timer" bekomme ich leider nicht so hin.
Bei meiner Yeelight gibt es eine vorgefertigte Szene "Notification", die jedoch ein "Button" ist. Kann ich diese einbinden, denn das blinken bekomme ich ebenfalls nicht so hin?Freue mich auf Rückmeldungen.
Mit freundlichen Grüßen -
@BlurayXL sagte in Zwei Skripte greifen parallel auf ein Gerät zu ?:
Das Problem ist das es nun ganze zeit hin und her springt. Es ist durchgängig auf dem zweiten Skript, ändert sich die Temperatur zeigt er dies kurz an und springt wieder auf das zweite Skript. Das mit dem "Timer" bekomme ich leider nicht so hin.
???? Wer springt wie, wohin?
VIS?????
Die Scripte haben nichts miteinander zu tun. -
Wo ist denn der cleartimeout? Falls du häufiger als alle 15 Sekunden anpingst, wird da ein timeout nach dem anderen eingestellt.
Und wie rantanplan schon sagte: die Skripte haben laut Screenshots nichts miteinander zu tun..
Ich habe ja Probleme, blockly zu lesen, aber imho löst das Skript wohl ständig aus, weil du ja prüfst, ob du anwesend bist
Wenn die ip also alle x Sekunden gepinged wird, wird auch alle x Sekunden ausgeführt.Es müsste imho sein, dass du "falls Objekt wurde geändert" und dann auf "wahr" prüfst
Interessehalber: warum soll eine Lampe blinken, wenn du dich ins WLAN einloggst?
-
Das sind Testskripte für ein Projekt.
Ich habe es nun hinbekommen, indem ich ein timeout und eine Variable die hochzählt, eingefügt habe.
Die Skripte an sich haben nichts miteinander zutun, jedoch greifen beide auf die Lampe zu. -
Das Skript oben funktioniert, wenn das Gerät jedoch erneut als true angezeigt wird passiert nichts, ich muss das Skript neustarten & dann funktioniert es wieder. Wie kann ich das beheben?
-
Das Script kann so nicht sauber funktionieren. Du initialisiert den Wert Zeit nicht, erhöhst ihn aber immer. Damit ist er irgendwann >3, und damit wird dein gesetzter Timeout immer sofort gestoppt.
Ich wuerde das ganze etwas anders machen:
Zunächst den Trigger: Nicht auf "ist wahr" sondern auf "ist grösser als vorher". Damit triggert er nur wenn das Objekt von Falsch auf Wahr gesetzt wurde. (fun Fact - in JS ist true > false)
Dann an Stelle des timeout ein intervall Objekt nehmen, das alle 15 Sekunden ausgeführt wird. In dem Objekt machst du dann das was aktuell im timeout gemacht wird.
VOR dem intervall Objekt dann noch ein "zeit = 0" und du bist sauber.
Das Falls am Ende muss dann auch noch in das Intervall hinein - am Ende, so das das Intervall sich selber beendet wenn es 3 mal gelaufen ist.Ich hoffe das ist so verständlich - ich hab kein Blockly hier um das zusammen zu basteln.
A.