Ereignis wenn eine Variable länger als X einen bestimmten wert hat

Hallo zusammen,

gibt es eine Möglichkeit (Ereignis oä.), dass ein Script ausgeführt wird, wenn eine Variable länger als X Sekunden/Minuten einen bestimmten Wert hat?

Stehe gerade aufm Schlauch, wie man sowas am besten realisieren kann.

zum Hintergrund… Über ein PIR-Sensor und einen Arduino ESP8266 wird mein Wandtablet bei Bewegung eingeschaltet.
Nach Ablauf des Android Timeouts fürs Display geht es wieder aus.

Hin und wieder kommt es vor, dass der Timeout nicht reagiert und das Display an bleibt.

In IPS habe ich eine Variable die beim einschalten auf „1“ und wenn das Display aus geht auf „0“ gesetzt wird.

Nun würde ich gerne eine Art Sicherheit einbauen, wenn die Variable nach 10 Minuten immer noch auf „1“ steht, dass ein „Display Sperre“ Task ausgeführt wird, die dann hoffentlich das Display ausschaltet.

Viele Grüße
Markus

Nimm dies:
GitHub - Nall-chan/IPSNoTrigger: Variablenüberwachung
Variable auswählen in der Instanz und dein Display Sperren Script sowie die Zeit.
Im deinem Script musst du nur abfragen ob $_IPS[„VALUE“] true ist, dann Display Sperren.
Michael

Hallo Michael,

ja prima, dass ist ein grundsätzlich echt brauchbares Modul !!

Wenn ich es richtig verstanden habe, dann prüft das Modul nur ob eine Variable geändert wurde, nicht ob eine Variable innerhalb einer Zeit geändert würde.

Ich stelle mir den Ablauf wie folgt vor.

Display schaltet sich ein -> Variable wird auf 1 gesetzt
nach 2 Minuten
Display schaltet sich (im Idealfall) aus -> Variable wird auf 0 gesetzt

Ich suche ein Script, welches prüft ob die Variable nach 5 Minuten immer noch auf 1 steht,
was bedeutet, dass der Ausschaltbefehl nicht ausgeführt wurde, sprich das Display noch eingeschaltet ist.

Bei mir wird dein Modul immer ausgeführt wenn die Variable geändert wurde.
Soll aber nur passieren wenn die Variable länger als 5 Minuten den Wert 1 hat.

Quasi als Notausschalter :slight_smile:

Viele Grüße
Markus

Nein das ist falsch, weil dann braucht es das Modul nicht. Ereignisse in IPS leisten dies ja, wenn sich eine Variable ändert.

Du musst auf $_IPS[‚VALUE‘] == TRUE prüfen, dann bedeutet es die Variable wurde die eingestellte Zeit nicht geändert.
Dann weißt du aber noch nicht ob deine Variable 1 oder 0 war.
Also noch auf GetValue($_IPS[‚VARIABLE‘]) == 1 prüfen (Display noch an).

Schaut dann so aus:


        if ($_IPS['VALUE']) // Variable wurde 10 Minuten nicht geändert
        {
            if (GetValue($_IPS['VARIABLE']) == 1)  // Display noch an ?
            { 
              // Ausschalten
            }
        }

Und so in der Konfig so:
Zwischenablage04.png
Michael

Ich sitze heute schon zu lang am Rechner… :banghead: :banghead:

Perfekt, dass funktioniert einwandfrei !!

Vielen vielen Dank für das Modul und viele Grüße !!

Markus