Timer Script (Licht aus nach X min)

Nach einigen Tagen testen ist mir noch etwas aufgefallen.
Prinzipiell läuft nun alles sehr gut, habe das Prinzip auf 3 Räume ausgeweitet.
Jede Nacht um 4 wird eine Art „Reset“ gestartet.
Alles prima.

Ein Problem zeigt sich nun aber doch.

Wenn das Licht durch Bewegung eingeschaltet wird und das Skript (Timer) zu laufen beginnt
geht das Licht irgendwann aus. Prinzipiell richtig, aber es geht auch aus wenn sich im Raum noch jemand bewegt.
Die 1. Bewegung startet alles, jede weitere Bewegung hat keinen Einfluss.

Gibt es die Option das Skript bei jeder möglichen Bewegung neu zu starten?

Klar, habe jetzt nicht alle gelesen aber unter den Script ein Ereignis erstellen. Dort Dein BM auswählen, den Wert für Bewegung setzen und als Befehl Script ausführen.

Klappt nun alles sehr sehr gut.
Wurde nur unheimlich komplex.
Die Regierung im Haus wollte andere Helligkeiten zu den unterschiedlichsten Uhrzeiten.
Quasi musst je Zeitfenster alles komplett eingestellt werden.
Aber was macht man alles des lieben Friedens Willen :p:cool::smiley:

Gibt es eine Möglichkeit den laufenden Skript-Timer im WebFront abzubilden?
Speziell die Restlaufzeit?
Wäre sehr neugierig wie lange er läuft und wie lange nötig ist, das könnte man hiermit gut festhalten.

Ein Problem gibt es aber nun doch.

In der Küche ist ein HMIP Bewegungsmelder.
Dieser meldet, wenn man im Raum ist, auch Bewegung.
Nach der im Timer eingestellten Zeit geht das Licht aus, auch wenn man länger im Raum ist und Bewegung festgestellt wird.
Wie kann man das so umstellen das der Timer quasi immer von Anfang beginnt wenn Bewegung ersichtlich wird oder noch andauert?

Hallo,

das haben wir schon oft hier in dem Theard rein geschrieben.
Entweder noch mal lesen oder die Doku lesen:

IPS_SetScriptTimer — IP-Symcon :: Automatisierungssoftware

Und mal ausprobieren und etwas mal verändern uns schauen ob es funktioniert.
Oder auch die Funktionen vergleichen mit denen Bewegungsmeldern 7und Timer funktionieren.

Mal selber etwas versuchen zu lösen, wenn hier dann steht was und wie ausprobiert wurde. Können wir mal weiter helfen…

Ist schon im Skript integriert

<?php
if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl (Licht aus)
    
    RequestAction(31843, false); 
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    RequestAction(31843, true); 
 
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 180);
} 
?>

Problem ist ich gehe in den Raum, Bewegungsmelder startet das Skript, Licht geht an.
Soweit alles gut. Aber ab hier beginnt das Skript zu laufen ohne wenn und aber.
Selbst wenn ich mich im Raum bewege, ihn verlasse oder betrete das Skript läuft wie
nach der ersten Auslösung/Bewegung weiter.
d.h. nach den 180 sec im Beispiel geht das Licht aus, egal ob ich mich im Raum bewege (was auch erfasst wird)
oder nicht.

Und das verstehe ich nicht im Skript oder Beitrag oder ich hab es nicht verstanden/übersehen.

Ich war der Meinung das Skript startet jedes mal neu wenn der Bewegungsmelder Anwesenheit meldet.
Habe über das Skript diverse Nachtlichter laufen und das Küchenlicht, speziell in der Küche ist es doof wenn
es beim Kochen ausgeht wenn man mal länger braucht als im Skript eingestellt.

Startet es nicht neu bei erneuter oder anhaltender Bewegung?
Ist dies eine zusätzliche Einstellung?

Hmm, nachfolgende Ereignisse hast du schon an. Eigentlich müsste der Timer neu starten. Sicher das der Bewegungsmelder in der Zeit auch neu auslöst?

Und auch das, das Script neu startet?
Ist da etwas unter weiteren Bedingungen?

Mal Console anlassen und BM auslösen und in die Console schauen.

In der CCU lässt sich das Verhalten des Bewegungsmelders einstellen.
Die Zeiten müssen zur Einschaltdauer passen.

HmIP-SMI.PNG

Dann erkläre ich es mal ausführlich am Beispiel Küche, Problem ist überall gleich.
Vermutlich ist es eine Kleinigkeit die mir nicht auffällt.

Es gibt 2 Skrips, eines für Tag und eines für Nacht.Geht darum in der Nacht ein Nachtlicht mit 10% Helligkeit zu schalten.
Tags natürlich 100%, weiter mit Beispiel Tag. Und nachts nur 3 min.

Wochenende und Wochentag unterscheiden sich an zusätzlichen Bedingungen, sind ja aber reine Auslöser.
Spielt auch so gesehen keine Rolle, das Problem ist an allen 7 Tagen gleich.

3.JPG

4.JPG

<?php
if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl (Licht aus)
    
    RequestAction(20122, false); 
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    RequestAction(20122, true); 
 
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 1800);
} 
?>

Es gibt noch 2 zusätzliche Bedingungen die aber hier true sind.
Habe eine „Lichtsteuerung“ eingebaut um manuell den Bewegungsmelder und die Zeitsteuerung
abzuschalten. So kann man das „starre Schema“ mal umgehen wenn es nötig ist. War
speziell wichtig da das Skript bei mir stur durchläuft.
Sind 2 „Schalter“ in der Console die die Bewegungssteuerung und die Zeitsteuerung deaktivieren.
Aber werden jede Nacht um 4 Uhr automatisch zurückgesetzt.

5.JPG

<?php

//Documentation: https://www.symcon.de/en/service/documentation/concepts/scripts/action-scripts/
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

Bewegungssteuerung und Zeitsteuerung sind identisch.
Sollte ich es näher ausführen?

HMIP Melder ist auch richtig eingestellt, denke ich.

Bin sehr dankbar für eure Hilfe.
Dank euch bin ich überhaupt erst so weit gekommen, vielleicht hab ich auch irgendetwas übersehen?
Oder einen blöden Denkfehler gemacht?

Soll ich etwas genauer erklären oder ergänzen, hab ich etwas vergessen?

Ich kenne mich mit homematik nicht aus, aber wenn dort eingestellt ist das unveränderte Statusmitteilungen 20 mal nicht gesendet werden und der Sendeabstand 15 Sekunden ist dann kommt in ips 300 Sekunden lang keine Änderung an oder? Jetzt nur ne Vermutung…

Prüf doch einfach mal in ips ob die Variable überhaupt in den 180 Sekunden aktualisiert wird.

Die Erklärung hierzu von HMIP:

Ist der Parameter Zyklische Statusmeldung nicht aktiviert, wird der Status regelmäßig in einem bestimmten Zeitraster gesendet. Dieses Zeitraster ist von Gerät zu Gerät unterschiedlich und kann zwischen einer und 24 Stunden liegen.
Ist der Parameter aktiviert, wird der Status zusätzlich in einem Zeitraster nach folgender Formel gesendet:

Zeit für eine Statusmeldung, wenn sich der Status ändert:
(A+1) x C Sekunden
Zeit für eine Statusmeldung, wenn sich der Status nicht ändert:
(A+1) x (B+1) x C Sekunden

Dabei gilt:
A = Anzahl der auszulassenden Statusmeldungen
B = Anzahl der auszulassenden, unveränderten Statusmeldungen
C = Zufällige Zeit zwischen 120 und 184 Sekunden

So ganz richtig verstehe ich die Hilfe nicht, ein wenig verwirrend ist es. Oder möglicherweise missverständlich/zweideutig.

Wäre es aber nicht egal ob IPS 300 sec keine Änderung bekommt wenn das Skript 1800 sec läuft?
Hätte IPS ja quasi 6x die Chance eine Meldung zu bekommen, wobei eigentlich 5 die letzte käme ja direkt bei Abschaltung.

Also wenn die Formel stimmen sollte, was ich seltsam fände. Käme ich auf ein Max von 7728 sec.
Das Minimum wären 736 sec, also 12,25 min, somit wäre ein Nachtlicht von 3 min auch unmöglich oder stehe ich auf der Leitung?
Wäre aber sehr seltsam als Bewegungsmelder! :confused:
Ist auch die Werkseinstellung an der Stelle.

Passt ja aber auch nicht zum 2. Abschnitt.

1.JPG

Die Hilfe zu Mindestabstand:
2.JPG

Bedeutet für mich das er nach 15 sec. erneut meldet, zwischen 0 und 15 tut er nichts.

Kanal 1 war für mich die Statusmeldungen des Gerätes selbst, die Einstellungen für den Bewegungsmelder waren Kanal 2 (Empfindlichkeit,…).

(A+1) x (B+1) x C Sekunden

Dabei gilt:
A = Anzahl der auszulassenden Statusmeldungen
B = Anzahl der auszulassenden, unveränderten Statusmeldungen
C = Zufällige Zeit zwischen 120 und 184 Sekunden

Rechne doch mal nach:

A=1+1=2 Sekunden
B=20+1=21 Sekunden
C=120

2x21x120 =5040 Sekunden.

Setz doch mal die Auszulassenden unveränderten auch auf 1

Dann wäre ja aber die mind. Laufzeit ca. 12 Min, auch sehr seltsam. Hab es aber mal gestellt.

Eigentlich kann es nicht sein, er hat, wenn ich nachgesehen hatte, im 1-3 min Takt immer mal den Status verändert.

Aber die Frage welcher Kanal für was steht kann ich ja mal im HM-Bereich posten.

In der Console geschaut ob beim auslösen Bewegung oder Änderung ankommt?

Nicht anders als zuvor, als noch die 20 da stand.

Die Console zeigt nach wie vor Bewegung oder keine Bewegung an.
Skript läuft nach wie vor stur.

Eine Sache ist mir eingefallen, wäre aber ein blöder Zufall.
Am Beispiel Küche aber vielleicht trotzdem logisch.

[ul]
[li]Der Status muss sich 1x von „Bewegung“ auf „Keine Bewegung“ ändern um das Skript neu auszulösen, korrekt?
[/li][li]Wenn ich nun koche und daher der Bewegungsmelder ständig Bewegung meldet startet das Skript nicht neu da sich der Status nie ändert, richtig?
[/li][li]Die Einstellung des Bewegungsmelders blockiert ein erneutes Erfassen für X min. (hier 2 min.).
[/li][li]Verlasse ich nun den Raum und komme nach 1,5 min zurück ändert sich der Status nicht da ich unter 2 min bin, somit auch kein erneutes Auslösen, somit kein „Neustart“ des Skriptes.
[/li][/ul]

Liege ich mit der Ausführung richtig?
Ich beobachte es zwar so gut ich kann, Laptop steht in der Küche. Ich weiß aber nicht wie hoch die Verzögerung zwischen HMIP und IPS ist. Vielleicht liegt es daran das die Meldung nicht so schnell verarbeitet wird (bei Hue Bewegungsmelder gab es eine Verzögerung von rund 10 sec, daher bin ich auf HMIP umgestiegen bei den Meldern).
Was wenn es eine Verzögerung gibt und ich daher immer Bewegung in IPS sehe obwohl kurz keine war?
Das HMIP Interface ist im Browser so langsam das ich es dort auch nicht sehen würde.

Mal so rumgesponnen…

Du hast ja beim Ereignis nachfolgende Ereignisse ausführen an. Deshalb müsste das Script eigentlich auch gestartet werden wenn sich nur die variable aktualisiert und der Status unverändert bleibt.

In HMIP können diverse Werte verändert werden.

[ul]
[li]Mindestabstand ist 15 sec, kleiner geht nicht.
[/li][li]Innerhalb der 15 sec, wird Bewegung gemeldet wenn Bewegung ist (Haken).
[/li][li]Nach 2 min (änderbar) wird der Melder zurückgesetzt.
[/li][/ul]

1.JPG

Habe nun Abstand und Zeit auf 15 sec gestellt, weniger ging nicht.
Die Meldung in dem Abstand ist nun aus.

Mal sehen…

Für meine Logik wäre es nicht besser der Mindestabstand wäre höher als die Rücksetzzeit?
Abstand 30 sec und Rücksetzen 15 sec?

da8ter
Du hast ja beim Ereignis nachfolgende Ereignisse ausführen an. Deshalb müsste das Script eigentlich auch gestartet werden wenn sich nur die variable aktualisiert und der Status unverändert bleibt.

Sehe ich eigentlich auch so!