Funktionsbeschreibung
Die Option „Blinken (1x, 2x, 3x pro Sekunde) für X Minuten“ in den Aktionsauswahlmöglichkeiten in Szenen ermöglichen.
Derzeit ist das Blinken sehr umständlich, da es eine Abfolge von Blöcken „einschalten/warten/ausschalten/warten“ in einer Schleife erfordert.
Mit dem neuen Alarmodus ergibt es Sinn, die Erstellung von Szenen wie „Countdown“, „Klingel+Licht“ usw. zu vereinfachen.
Ich habe das gleiche Problem, also stimme ich zu!! ![]()
In dieselbe Richtung, aber noch einen Schritt weitergehend, würde ich sogar vorschlagen, in einer Szene eine andere Szene aufzurufen und sie N-mal zu wiederholen!
Ich habe mit der Arbeit an dieser Funktion begonnen und bin dabei einfach geblieben.
Man kann auswählen:
- welche Lampe(n) blinken soll(en)
- wie oft
- die Verzögerung zwischen jedem „Blinken“ in ms
Hier ist ein Screenshot der Aktion (nicht auf das Design achten, sondern auf die Optionen
)
et das Ergebnis
Sollte das Licht wieder in den ursprünglichen Zustand (vor dem Blinken) zurückkehren oder nicht?
Ich nehme an, ihr möchtet die Farbe, die Helligkeit und viele andere Parameter für jede Lampe auswählen können, aber das sehen wir in einer nächsten Version ![]()
Idealerweise sollte es (z. B. für die Garagentoröffnung) Folgendes geben:
Blinkintervall
Blinkdauer + Einschaltdauer + Blinkdauer + Ausschalten
Vielen Dank für diesen Fortschritt!
Falls ich einen Vorschlag machen darf:
- Blinken während… (Zeit)
- Blinkgeschwindigkeit (sehr langsam, langsam, normal usw.)
Wäre benutzerfreundlicher
Aber manche würden etwas viel Persönlicheres wollen, wir kommen darauf zurück.
Eine kleine Hintergrundberechnung würde dir ermöglichen, die Anzahl der Wiederholungen deiner Schleife zu zählen, anstatt dass der Benutzer das tun muss.
Und ja, eine Rückkehr zum Ausgangszustand oder eventuell eine Auswahl (an, aus oder vorheriger Zustand - vielleicht später)
Farben… Um eine Weihnachtsbeleuchtung zu machen? Mit Zufallsauswahl? Das könnte lustig sein ![]()
Das ist ja toll @cicoub13 ![]()
Ein Bild ist zum Testen verfügbar (lokal, nicht über Gladys Plus)
cicoub13/gladys:blinking-lights
Hier ist die neue Oberfläche für die Aktion
mit 3 Modi:
- Langsam (alle Sekunden)
- Normal (alle 0,5 Sekunden)
- Schnell (alle 0,1 Sekunden)
Jedes Licht kehrt nach dem Blinken in seinen Ausgangszustand zurück.
Ich werde es dabei für den funktionalen Teil belassen.
Falls das in Ordnung ist, gehe ich zu den Tests über ![]()
Toll!
Ich teste das heute Abend!
Danke!
Zuerst einmal, danke!
Hier, nach einem einfachen Test…
Es ist nicht ideal mit einer Lampe, die über Tasmota http läuft.
Es gibt mehr Blitze als ein Blinken und es ist völlig unregelmäßig. Ich würde sagen, du solltest die gleiche Einschalt- und Ausschaltzeit haben (z. B. langsam = 0,5s an + 0,5s aus). Was denkst du?
Die Geschwindigkeitsänderung ändert bei mir nichts.
Die Zeit ist gut.
Die Lampe kehrt nicht in ihren ursprünglichen Zustand zurück.
Soll ich andere Parameter testen (Integrationen, Pi usw.) oder warten wir auf die nächste Version?
Kannst du direkt vorschlagen, eine Steckdose zusätzlich zu den Lampen zu steuern?
Edit: Korrektur, die Geschwindigkeitsänderung bewirkt tatsächlich etwas. Ich habe das Gefühl, dass kein Modus vorab ausgewählt sein sollte, sonst gibt es etwas Zufälliges, wenn der Benutzer selbst nicht gewählt hat.
Das erinnert mich… Wenn jemand ‹ schnell › für 1 Minute wählt, besteht dann nicht die Gefahr eines Overfloods auf dem Gerät?
Das liegt wahrscheinlich an der internen Elektronik der Lampe. Man müsste die Eigenschaften der Lampe prüfen. Es gibt wahrscheinlich eine interne Sicherheit, die verhindert, dass die Lampe bei einem falschen Kontakt flackert, was die Lampe stark abnutzen oder sogar durchbrennen würde.
In der Lampe gibt es einen RC-Kreis, der das allmähliche Einschalten der LED-Lampe ermöglicht und die Phasenlage von Spannung und Strom (für den Cos phi) sicherstellt, daher das unregelmäßige Blinken, wenn das nächste Einschalten erfolgt, bevor der RC-Kreis entladen ist, ganz zu schweigen vom Zigbee-Steuerteil! Also denke ich, man muss Versuche durchführen und einen minimalen Schwellenwert für Ausschalten/Wieder-Einschalten nicht unterschreiten.
https://www.quelleenergie.fr/questions/ampoules-led-scintillement-flicker
@cicoub13, ist es vorgesehen, dass man eine Steckdose blinken lassen kann? (Fall einer Lampe, die an eine Steckdose angeschlossen ist, da ich nur „Lichter blinken lassen“ sehe)
@GBoulvin Danke, dass du es getestet hast. Ja, ich habe mich für Flash statt Blinken entschieden. Ich werde es versuchen und sehen, was dabei herauskommt, wie du vorschlägst.
Nicht in dieser Funktion. Aber wenn es funktioniert und ihr zufrieden seid, mache ich anschließend mit dem „Steckdosen-Blinken“ weiter (dafür müssen wir einen Namen finden).
Für die Sicherheit mache ich ein paar Tests und werde dann Schwellenwerte festlegen.
Ein neues Bild ist verfügbar. Die Lichter blinken nicht mehr, sondern leuchten.
docker pull cicoub13/gladys:blinking-lights
Vergessen Sie nicht, Ihren Container zu löschen. Ein Neustart aktualisiert ihn nicht.
Voilà, es ist getestet und funktioniert wie vorgesehen!
Der Anfangszustand wird korrekt wiederhergestellt (außer im ‹ schnellen › Modus, aber dieser Modus verursacht bei mir mehr Probleme als alles andere, wahrscheinlich zu schnell).
Das wird super! Danke!
Edit: Nach reiflicher Überlegung könnte vielleicht eine Pause (100ms?) vor dem Senden des letzten Zustands im ‹ schnellen › Modus das Problem lösen (bei mir). Oder den ‹ schnellen › Modus verlangsamen? Auf 200ms?
Das habe ich gemacht. Getestet von meiner Seite, es funktioniert gut. Ich denke, wir sind bereit für eine Überprüfung.
Exzellente Idee!
Dabei war mir beim manuellen Erstellen eines Blinkens aufgefallen, dass mit dem Anfangszustand der Philips Hue etwas nicht stimmt.
Wenn ich mein Haus rot blinken lassen kann, wenn ein Rauchmelder auslöst, ohne 30 Zeilen einer Szene erstellen zu müssen, wie ich es heute tue, bin ich dabei ![]()
Danke für deine Arbeit!
@cicoub13 Lass mich wissen, wenn dein PR bereit für den Review ist ![]()
Hallo. Ich habe dein Feedback zum blockierenden Status der Aktion berücksichtigt, aber ich habe einige Probleme bei den echten Tests. Ich melde mich bei dir (und hier für andere Tester) sobald ich mich wieder damit beschäftige.
Ich habe es geschafft, das Problem zu beheben, aber jetzt stecke ich bei den Tests fest.
Ich verwende die Funktion setTimeout aus timers/promises (was ein Timeout in Form einer Promise ist).
In meiner for-Schleife ergibt sich folgendes:
Aber bei den Tests möchte ich keine Zeitkonzepte behandeln und meine Promise sofort auflösen. Ich verwende also proxyquire, um die Methode durch eine einfache fake-Promise zu ersetzen.
Ich habe das gemacht:
https://github.com/cicoub13/Gladys/blob/feat-blinking-light-action/server/test/lib/scene/actions/scene.action.blinkLights.test.js#L12C1-L16C4
Aber das wird nicht berücksichtigt, ich erhalte folgenden Fehler:
scene.blink-lights
should blink light in slow mode:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/cyril.beslay.home/workspace/Gladys/server/test/lib/scene/actions/scene.action.blinkLights.test.js)
at listOnTimeout (node:internal/timers:569:17)
at process.processTimers (node:internal/timers:512:7)
Ideen?

