NEWS
[gelöst] Farbwechsel wiederholen
-
Hallo
Ich wollte über Blockly nach dem Einschalten einer Lampe in gewissen Abständen die Farbe wechseln, dieses sollte sich wiederholen bis wieder ausgeschaltet wird.
Ich stehe da auf dem Schlauch wie in das im Blockly realisieren kann.
Ich bin mir sicher da kann mir da jemand auf die Sprünge helfen?
Danke -
- Um den Farbwechsel (die 4 Steuere Befehle) selber setzt du einen "Ausführen Intervall" Baustein. Als zeit sollte da mindestens 180 Sekunden angegeben werden.
- vor den Falls Baustilen setzt du einen "anhalten Intervall Baustein.
Fettich.
A.
Nachtrag: Das gilt sofern der Datenpunkt "switch" in deinem Skript so lange wahr bleibt bis der Farbwechsel zu ende ist. Falls das nicht der Fall ist:- den "Anhalten Intervall" Baustein direkt vor den "Ausführen Intervall" Baustein setzen
- in dem Trigger mit dem du das ganze anhalten willst einen weiteren "Anhalten Intervall" Baustein nutzen.
-
@asgothian
Ich habe es so wie du gesagt hast versucht. Der Farbwechsel wiederholt sich aber wenn das Licht ausgeschaltet wird wenn Gelb an war, wird beim Einschalten wieder Gelb angemacht und nicht wie eigentlich die Reihenfolge ist mit Blau beginnend.
Mit dem Anhalten Intervall Baustein hat kein Farbwechsel stattgefunden
-
@biker1602 Du musst schon meinen gesamten Post lesen, insbesondere den Nachtrag.
Wenn du das Intervall nie anhältst dann wird der Farbwechsel dauerhaft angesteuert.
Beschreibe doch mal das Zeitverhalten des Datenpunktes "switch", und wie du den Farbwechsel ausschalten willst.
A.
-
@asgothian
Eigentlich ist die Idee so, dass wenn Licht angeschaltet wird, die Lampe mit blau anfängt und im Interwall z.B. 30 Sekunden die Farbe wechselt und wenn er bei der letzten Farbe angekommen ist wieder von vorne anfängt. Wenn ich das Licht abschalte, soll egal bei welcher Farbe er ausgegangen ist beim Einschalten wieder mit Blau beginnen. So ist der Plan -
@biker1602 Das dieses der Plan ist war schon aus dem vorherigen Post erkennbar. Was nicht erkennbar ist ist wie du das aktuell triggerst, sprich wie sich der Datenpunkt "Switch" verhält und was sich dahinter verbirgt.
A.
-
@asgothian
Das ist nur eine Lampe die ich mit Alexa ein bzw. ausschalten will, wo dann per Blockly der Farbwechsel vorgenommen wird. Meinst du das? -
@biker1602 Nein.
Ich will wissen wie sich der Datenpunkt "Switch" verhält, welche Werte er annehmen kann und wodurch Werteänderungen dieses Datenpunktes angestossen werden.
-
@asgothian
Das ist eine Lampe von Shelly. Die ist in der Alexa App und unter Shelly im ioBroker eingebunden.
-
@biker1602 sagte in Farbwechsel wiederholen:
Das ist eine Lampe von Shelly.
@asgothian sagte in Farbwechsel wiederholen:
welche Werte er annehmen kann
false wissen wir jetzt schon mal. Was noch?
-
@homoran
Ich bin ehrlich ich weiß nicht, was ihr da wissen wollt, wo ein False ist in der Regel auch ein True und wenn ich Alexa Sage schalte auf Rot dann macht sie das halt. -
@biker1602 sagte in Farbwechsel wiederholen:
wo ein False ist in der Regel auch ein True
möglich, aber bis zu deinem Screenshot wussten wir auch das false nicht.
geh auf den Bleistift und poste die Objektdaten
das false kann nämlich ein boolscher Wert oder ein String sein -
@biker1602 In diesem fall sollte es reichen an der mit dem Roten Pfeil angezeigten Stelle ein "Anhalten Intervall" einzufügen.
-
Ich hab das mal nachgestellt und ein sehr seltsames Verhalten mit folgendem Skript festgestellt:
Dass bei Triggern natürlich der Intervall erstmal gestoppt wird ist klar.
Wenn der Wert auf TRUE geändert wird dann startet der Intervall...
ABER: die Blöcke innerhalb des Intervall starten erst nach 40 Sekunden. Ich kann mich gut daran erinnern das vor einer Weile (ich nutze Intervall eigentlich wenig bis garnicht) beim Triggern der Intervall sofort begonnen und die integrierten Blöcke abgearbeitet hat.Ebenso hab ich dann festgestellt dass wenn ich meinen Trigger wieder auf FALSE setze zwar der Intervall gestoppt wird aber die integrierten Blöcke bis zum letzten durchlaufen.
Ob es wohl möglich ist dass die Intervallfunktion unter einem kürzlichen Update des Adapters "gelitten" hat ?
Und kann das Verhalten jemand bestätigen ?
-
@djmarc75 sagte in Farbwechsel wiederholen:
ABER: die Blöcke innerhalb des Intervall starten erst nach 40 Sekunden. Ich kann mich gut daran erinnern das vor einer Weile (ich nutze Intervall eigentlich wenig bis garnicht) beim Triggern der Intervall sofort begonnen und die integrierten Blöcke abgearbeitet hat.
Das war immer so. Wenn du einen Block in ein Intervall kapselst wird dieser das erste mal nach Ablauf der Intervallzeit aufgerufen. wenn man das anpassen will muss man die Funktion einmal im Vorfeld ausführen.
Ebenso hab ich dann festgestellt dass wenn ich meinen Trigger wieder auf FALSE setze zwar der Intervall gestoppt wird aber die integrierten Blöcke bis zum letzten durchlaufen.
Auch das ist verständlich. Die Bausteine "steuere x mit Verzögerung Y" sind letztendlich gleichzusetzen mit "ausführen Timeout in Y: Steuere X"
Ob es wohl möglich ist dass die Intervallfunktion unter einem kürzlichen Update des Adapters "gelitten" hat ?
Nein, das war immer so und ist so letztendlich auch korrekt.
Und kann das Verhalten jemand bestätigen ?
Die Lösung für dieses Problem liegt in einer anderen Abarbeitung:
In diesem Fall bleibt die erste Lichtfarbe 40 Sekunden an, danach geht es mit der jeweils nächsten Farbe weiter.
A.
-
OK, dachte das war mal anders - geklärt.
Deine Blocklylösung ist ja mal super. Durch die Liste schön erweiterbar.
Bau das mal nach und speichere mir das in meine Vorlagen -
@djmarc75 sagte: die Intervallfunktion unter einem kürzlichen Update des Adapters "gelitten" hat ?
Nein, das Verhalten war schon immer so: Start mit Verzögerung und Stopp führt zu sofortigem Abbruch.
Soll sofort gestartet werden, kann man dies mittels einer rekursiven Funktion und Timeout lösen. -
@paul53 Dann hab ich mich getäuscht was die Intervalle angeht. Nutze diese eigentlich selten, nur um z.B. zu zählen, also rein mit Zahlen und da ist mir das nicht aufgefallen, bzw ist richtig da ja der Wert meiner Variable oder meines DPs nach jedem Intervall erhöht oder verringert wird.
-
@asgothian
Finde ich super, wenn das ganze nur auf Deutsch wäre -