Ereignis löst nicht aus

Hallo.

Habe folgendes Problem.
Beim manuellen ändern eines Wertes einer Integer Variable wird das Ereignis ausgelöst.
Wenn ich aber den Wert der Variable Zyklisch bei einer bestimmten Zeit auslöse, verändert sich zwar der Wert der Variable, aber das Ereignis wir nicht ausgelöst.

<? require_once('LWZfunctions.ips.php'); $mode = GetValueInteger(52453); LWZ_SetFanStageDay($mode); ?>

Das Ganze funktioniet auch wenn ich ein Skript manuell auslöse, aber nicht als Ereignis Zeitgesteuert. Weder in IPS noch als Workflow in IPSStudio.

<?php RequestAction(52453,3);

Laut Zeitstempel (ganz rechts) sieht es so aus, als wenn es korrekt um 10:03 alles gestartet wurde. Sicher, dass dein LWZ_SetFanStageDay nicht irgendwie auf den $_IPS[‚SENDER‘] reagiert und was filtert?

paresy

Sorry, das verstehe ich nicht.
Wenn ich die Variable in der Console ändere funktioniert es.
Siehe:

Sorry, ich ändere natürlich hier.

Hast du Fehlermeldungen im Meldungsfenster? Ich vermute stark, dass das Skript korrekt ausgeführt wird, aber im Skriptinhalt das Problem liegt. Für dort doch mal ne Ausgabe mit IPS_LogMessage hinzu, damit du sehen kannst, ob das Skript ausgeführt wurde.

paresy

Hab keinen Fehler in den Meldungen

Meinst du IPS_LogMessage im Skript dranhängen?
Da bel
Komme ich eine Fehlermeldung.

Du wirst im Objektbaum ein rotes Ausrufezeichen haben:
grafik

Du musst das IPS_LogMessage auch mit den notwendigen Parametern aufrufen, damit der Befehl korrekt ausgeführt wird. So läuft dein Script immer auf einen Fehler.

Du könntest z.B.

IPS_LogMessage(IPS_GetName($_IPS['SELF']), "Das Scipt wurde ausgeführt");

verwenden.

Zeitgesteuert wurde das Skript ausgeführt, aber die Lüfterstufe wurde nicht geschalten.

Wenn ich das Skript manuell auslöse, schaltet die Lüfterstufe.

Dann könmntest du noch mal die Mode Variable mit ausgeben, also

IPS_LogMessage(IPS_GetName($_IPS['SELF']), "Das Scipt wurde ausgeführt, Mode: " . $mode);

In deinem ersten Bild wird aber kein Script zeitgesteuert ausgeführt sondern der Wert einer Variablen gesetzt, oder lese ich das falsch?

Kannst du mit

LWZ_SetFanStageDay(3);

Im Script auf 3 schalten?

Ja, zeitgesteuert der Wert der Variable.

Mit

LWZ_SetFanStageDay(3);

kann ich das Skript ausführen und es stellt die Lüfterstufe.

Manuell Variable geändert: Funktioniert

Zeitgesteuert funktioniert nicht.

0,1,2,3 sind die Lüfterstufen

SO ganz verstehe ich immer noch nicht, was du wie und wo „automatisch“ machst bzw. was durch was getriggert wird. Mein Gefühl ist, dass da die Zusammenhänge nicht passen.

Du änderst zeitgesteuert den Inhalt der Variablen über das Ereignis aus dem Ersten Bild.

Wird das Script dann aufgrund dieser Variablenänderung getriggert?

Wenn die $mode beim Scriptausführen 0 ist, dann passiert natürlich nichts.

Ja, mit der Variablen die Zeitgesteuert wird und dann einen Wert zwischen 0 und 3 erhalten soll.
Mit GetValueInteger(52453); wird der Wert aus der Variablen an die Lüftungsanlage sendet.
Mode 0 ist Lüfstungsstufe 0

<? require_once('LWZfunctions.ips.php'); $mode = GetValueInteger(52453); LWZ_SetFanStageDay($mode); ?>

Es funktionier ja, aber nur wenn ich einen neuen Wert eingebe und auf schreiben klicke.
image
nur leider nicht über Ereignis.

Der „Wert“ muss sich auch immer wieder ändern !
Weil du eben auf „bei Änderung“ reagierst.
Probier doch sonst mal mit „bei Aktualisierung“.

Oder vllt. ein Timing Problem…
Kannst ja mal ein
IPS_Sleep (Wartezeit in ms)
zwischenbauen

Gruß
lueralba

Wenn das Skript selbst durch die Änderung der Variablen ausgeführt wird, aber dein Schalten im Skript nicht funktioniert, dann kann es ja im Prinzip nur am Inhalt deines Skripts liegen. Zeig doch mal, was der Inhalt von LWZfunctions.ips.php ist.

Und du änderst die Variable auch wirklich und akutlaisierst sie nicht nur mit demselben Wert?

Hallo lueralba

Super, vielen lieben Dank! :pray: :+1: :smiley:
Mit IPS_Sleep (Wartezeit in ms) funktioniert es.

<? require_once('LWZfunctions.ips.php'); IPS_Sleep (100); $mode = GetValueInteger(52453); LWZ_SetFanStageDay($mode); ?>

Viele Grüße,
Michael