Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Verkettung von Aktionen (Zonen) mit zeitlicher Verzögerung #25

Closed
VonDerTanne opened this issue Sep 22, 2020 · 5 comments
Closed

Verkettung von Aktionen (Zonen) mit zeitlicher Verzögerung #25

VonDerTanne opened this issue Sep 22, 2020 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@VonDerTanne
Copy link

Möchte man komplexere Steuerungen machen (also alles was über das gleichzeitige Auslösen einzelner Geräte hinaus geht) stößt man relativ schnell auf das Problem, dass Verkettungen nur mit Umwegen oder mit externen Skripten möglich sind.

Beispiel: Schalte Strom-Zwischenstecker ein, warte 30 Sekunden, schalte dann Fernseher ein (weil er z.B. vorher noch nicht auf IR Befehle reagiert) und dimme 20 Sekunden später das Licht im TV-Eck.

Es wäre sehr Hilfreich, wenn mann Zonen durch eine Erweiterung miteinander verknüpfen und dazwischen noch einen Timer angeben könnte, d.h.

Zone 1 (Strom ein, warte 30 Sekunden und füre Zone 2 aus)
Zone 2 (Fernseher ein, warte 20 Sekunden und führe Zone 3 aus)
Zone 3 (Dimme Licht im TV-Eck auf Wert x)

@VonDerTanne VonDerTanne added the enhancement New feature or request label Sep 22, 2020
@Mic-M
Copy link
Owner

Mic-M commented Sep 22, 2020

Forum Link für mich: https://forum.iobroker.net/post/492035

Danke für den interessanten Vorschlag.
Wie viele Verkettungen braucht man denn in der Praxis maximal? Max. 5 sollten reichen, oder?

Was wohl auch ginge, deinem Beispiel folgend:

  • Zone 1
    1. führe Zone 1 'Strom ein' aus (z.B. 19:00:00)
    2. warte 30 Sekunden (z.B. 19:00:30) und führe Zone 2 aus
    3. warte 50 Sekunden (z.B. 19:00:50) und führe Zone 3 aus

Korrekt?

@Mic-M Mic-M added the question Further information is requested label Sep 22, 2020
@VonDerTanne
Copy link
Author

Ich weiß nicht ob man das unbedingt beschränken muss (außer es hätte technische oder optische Gründe), dann wäre man flexibel. Für mich persönlich gesprochen, habe ich bereits 2 Anwendungsfälle, die derzeit 5 Einzelvorgänge haben, dia aufeinander aufbauen. Da ist aber noch Luft nach oben ;-)

Dein Beispiel würde praktisch wohl genauso gut funktionieren, wobei IMHO es optisch ansprechend ist, wenn man in der "Quell-Zone" auf die "Zielzone" verweist und dabei einen Timer ablaufen lässt. Die "Quell-Zone" muss dabei ja nichts von der kompletten Kette wissen, sondern immer nur ihre direkt folgende Zone. Das könnte man beliebig oft weiter spielen.

Kurze Anmerkung, da es nicht ganz genau aus deinem Beispiel raus kommt: deine Beispielzeiten dürften wirklich nur Beispiele sein, soll heißen, die Warteintervalle sollten nur variabel (Warte X Sekunden) und keine festen Uhrzeiten direkt an der Zone sein, sonst hat man nichts gewonnen (feste Ausführungszeiten kann dein Adapter ja bereits ohne Probleme). Der initiale Auslöser, ist die Bedingung der Zone 1.

Ich hoffe ich konnte es verständlich rüber bringen.

Nochmal dickes Lob an der Stelle.

@Mic-M
Copy link
Owner

Mic-M commented Sep 22, 2020

Die Frage der Beschränkung ist quasi "technisch", um den Entwicklungsaufwand geringer zu halten ;) Das Admin-Interface ist da immer sehr, sehr zeitaufwändig. Da wäre eine Beschränkung einfacher, aber verstehe, dass wir das unlimitiert brauchen ;-)
Meine Beispiele waren wirklich nur Beispiele basierend auf 19:00:00, aber das muss natürlich in Sekunden sein, keine Frage ;)

Dein Beispiel würde praktisch wohl genauso gut funktionieren, wobei IMHO es optisch ansprechend ist, wenn man in der "Quell-Zone" auf die "Zielzone" verweist und dabei einen Timer ablaufen lässt. Die "Quell-Zone" muss dabei ja nichts von der kompletten Kette wissen, sondern immer nur ihre direkt folgende Zone. Das könnte man beliebig oft weiter spielen.

Seitens JS Adapter-Entwicklung ist es deutlich einfacher, wenn eine Zone x getriggert wird, und dann nach jew. Timerablauf für die jeweiligen anderen definierten verketteten Zonen ausgelöst wird (Zone 2: nach 30s, Zone 5: nach 5s, Zone 99 nach 60s, usw.). Daher würde ich so auch die Konfiguration aufbauen. Denn Zone 99 ist es egal, von welcher Zone sie getriggert wurde.
Klar, damit keine echte "Kette" mehr, aber kommt wohl auf das gleiche raus?

@VonDerTanne
Copy link
Author

Ich denke im Grundsatz haben wir einen ähnlichen Ansatz, und ja, zum Schluss ist der Weg fast egal, solange die Funktion dann steht

@Mic-M Mic-M removed the question Further information is requested label Sep 22, 2020
@Mic-M
Copy link
Owner

Mic-M commented Oct 3, 2020

Möchte man komplexere Steuerungen machen (also alles was über das gleichzeitige Auslösen einzelner Geräte hinaus geht) stößt man relativ schnell auf das Problem, dass Verkettungen nur mit Umwegen oder mit externen Skripten möglich sind.

Beispiel: Schalte Strom-Zwischenstecker ein, warte 30 Sekunden, schalte dann Fernseher ein (weil er z.B. vorher noch nicht auf IR Befehle reagiert) und dimme 20 Sekunden später das Licht im TV-Eck.

Es wäre sehr Hilfreich, wenn mann Zonen durch eine Erweiterung miteinander verknüpfen und dazwischen noch einen Timer angeben könnte, d.h.

Zone 1 (Strom ein, warte 30 Sekunden und füre Zone 2 aus)
Zone 2 (Fernseher ein, warte 20 Sekunden und führe Zone 3 aus)
Zone 3 (Dimme Licht im TV-Eck auf Wert x)

Ist nun implementiert in 0.5.3: https://forum.iobroker.net/post/497875

Allerdings anders - es können nun direkt Einschalt-Verzögerungen einzelnen Zielgeräte einer Zone zugewiesen werden. Ich denke, das ist noch besser und deckt auch einen breiteren Nutzen ab. Schließlich geht es bei Verzögerungen nicht unbedingt um Zonen, sondern um einzelne Geräte.
Einschalt-Verzögerung einer Zone kann natürlich auch gesetzt werden.

Zu deinem Use Case:
Fasse die Geräte einfach in einer Zone zusammen, und setze dann delay entsprechend in den Zielgeräten.

@Mic-M Mic-M closed this as completed Oct 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants