Nachlaufsteuerung (Level: Beginner)

Das folgende Beispiel zeigt, wie man eine in der Praxis sehr oft benötigte Aufgabe einfach lösen kann:
Problem: nach einem Ereignis soll zeitversetzt ein weiteres ausgeführt werden
Beispiel: eine Bewegung wird erkannt und die Beleuchtung soll für eine bestimmte Zeit eingeschaltet werden oder der Rasen soll für 30 Minuten bewässert werden
Lösung: einige (Hausautomation) Systeme bieten Funktionen, die es erlauben Aktoren für eine bestimmte Zeit zu schalten. Für den Dimmaktor aus dem HomeMatic-System z.B. gibt es hierfür die „ON_TIME“ Funktion. In diesem Fall übernimmt der Aktor selber die Zeitsteuerung. Keine Lösung hingegen ist der IPS_Sleep Befehl, da dieser nur für kurze Zeiten im Sekundenbereich verwendet werden kann. Hier nun das Grund-Skript, das für die eigene Anwendung erweitert werden muss:

$zeit = 10;    // (Warte) Zeit in Minuten

if ($_IPS['SENDER'] <> "TimerEvent"){
	IPS_SetScriptTimer($_IPS['SELF'], $zeit * 60); 	// Timer setzen
	// Befehle beim Setzen des Timer
	// z.B. Beleuchtung EIN schalten
}


if($_IPS['SENDER'] == "TimerEvent"){
	IPS_SetScriptTimer($_IPS['SELF'], 0);     		// Timer deaktivieren
	// Befehle nach Ablauf des Timer
	// z.B. Beleuchtung AUS schalten
}

Die Zeitsteuerung übernimmt hier der ScriptTimer. Zunächst sollte die gewünschte Zeit (Minuten) in der ersten Zeile verändert werden.
Als nächstes wählt man eine Variable aus, die das Skript startet; in diesem Beispiel ist es ein Bewegungsmelder (Bild 1). Da dies kein TimerEvent ist, ist somit die Bedingung der ersten IF-Anweisung erfüllt und der Timer wird gestartet. Jedes Mal wenn eine Bewegung erkannt wird, wird der Timer, ähnlich wie bei eine Eieruhr, erneut gestellt. Erst nach Ablauf der Zeit wird das Skript durch den Timer ausgeführt. Dadurch ist die Bedingung der zweiten IF-Anweisung ‚TimerEvent‘ erfüllt und der Timer wird deaktiviert. An beiden Stellen können nach Belieben z.B. Schaltbefehle eingefügt werden. Nach dem ersten Start des Skript (z.B. Bewegung) wird automatisch der ScriptTimer im Objektbaum unterhalb angelegt (Bild 2).

MST

ereignis.png

skript.png

Klasse! Solche Code-Schnipsel, gerade wenn Vergleiche zu Alternativen aufgeführt werden, machen das Leben definitiv angenehmer!

Wäre das nicht etwas für eine eigene, ich nenne es mal „developer-approved/read-only“-Rubrik? Wenn man etwas Spezifisches sucht sind die Ergebnisse der Forensuche doch manchmal ein wenig Overkill (o.k., o.k., wir haben ja noch Bruno ;)).

Gut auch die Level-Einstufung. Man könnte noch einen Kompatibilitäts-Hinweis zur IPS-Version ergänzen.

Cheers
/Jens

Hallo,

und wir bräuchten den Bruno viel leicht weniger wenn es unter dem Befehl „IPS_SetScriptTimer“ als Beispiel zu finden wäre.:smiley:

VG

Andreas

In der Doku gibt es den Punkt „Feedback senden“ für solche Hinweise, die sollen auch ankommen. :wink: :smiley:

Ob das allerdings nützt wenn das dann in der Doku steht, ist wieder ein anderes (bekanntes) Problem. Die Zahl der Schriftsteller steigt stetig.

Gruß
Bruno

Es gibt ja auch noch das WIKI wo man sowas unterbringen kann…also JEDER :slight_smile:

Wiki hin, Doku her … die Hintergründe meines Vorschlags waren …

  • wenn ich einen reinen Fly-By im Forum mache, lande ich zu 99% weder im Wiki, noch in der Doku
  • wenn ich nicht gerade ein spezielles Problem habe und nach einer Lösung dafür suche (z.B. weil bereits eine funktionierende existiert), heißt das ja nicht, dass es nicht eine bessere, schneller, intelligenter Lösung gibt
  • eine DEV-Tipps-/Tricks-/News-nur-lesen-Rubrik würde ich definitiv regelmäßig anfliegen
  • man findet nachweislich schneller etwas, wenn man sich mal nicht durch 200 AWs kämpfen muss (das stellt jetzt nicht den Sinn eines Forums in Frage und ist ja auch durchaus produktiv und unterhaltsam!)

Frage am Rande an @steiner … warum ist der Beitrag denn genau hier und nicht in der Doku/Wiki gelandet?

ich denke, dafür oder dagegen gibt es unzählige Begründungen/Ausreden.
Die, die suchen müssten, um Hilfe zu finden, suchen nicht. Wir haben ja Bruno.
Die, die suchen, finden nicht, weil die Forensuche nichts taugt, nach den falschen Schlagwörtern gesucht wird, das Forum teilweise unstrukturiert ist, die Doku zu dünn ist, um den richtigen Einstieg zu finden etc etc etc. Das könnte man jetzt endlos weiterführen.

Was hier m.E. fehlt ist Nachhaltigkeit. Statt der vielen Strohfeuer, die ich über die Jahre über das gesamte Forum gesehen habe, wäre es wesentlich wirksamer, die begonnenen Versuche konsequent und regelmäßig weiter zu führen. Stichwort: Nachhaltigkeit.
Nur so wird z.B. eine Rubrik „Einsteiger“ bekannt und unique. Und wenn dann immer wieder an allen Ecken im Forum darauf verwiesen wird (weil mal wieder einer zu faul war zum suchen oder Bruno Urlaub hatte), stolperen auch deutlich mehr Leser drüber, als die selbe Frage zum tausendsten Male zu stellen. Und wenn das Forum dann auch noch eine gute Themenstruktur aufweist, lohnt es sich gleich zweimal.
Aber alle 2 Jahre mal 3 Beiträge, irgendwo zwischen die Threads geträufelt, prägen sich den wenigsten ein.

… nur mal so aus dem Off eingestreut :smiley:

Super vielen Dank , das ist genau das was ich als Anfänger brauche. Es wäre schön wenn es noch mehr davon gibt. Natürlich steht das bestimmt irgendwo im Forum, wenn man es findet.
Dadurch wird es für mich sicherlich einfacher IPS so einzusetzen wie ich es mir vorstelle ohne Stunden lang das Forum zu durchsuchen und dann nicht zu kapieren wie es geht :slight_smile:

Gruß
Harry

Gesendet von meinem iPad mit Tapatalk