Guten Abend,
ich bin gerade dabei mein erstes Modul zu schreiben. Es ist ein Wecker bei dem man bis zu drei Automationen verlinken kann die zu einer eingestelten Uhrzeit ausgeführt werden.
Zusätlich zu der Gemeinsamen Auslösezeit lässt sich für jede Automation auch noch ein Offset angeben.
Eigentlich funktioniert das auch so weit. Das Modul registerit ein Ereignis was alle 10s ein Funktion des Moduls aufruft.
Diese Funktion prüft ob eine Automation auszulösen ist und führt diese dann aus.
Da die Prüfung alle 10 Sekunden pasiert und ich die Zeit nur auf die Minute genau angebe, wird die Automation bis zu 6 mal gestartet.
So nun zu meinem Probblem:
Um dies zu verhindern will ich mit der ersten ausfürung eine Variable auf „True“ setzen. Leider bekomme ich es nicht hin das die Variable nicht ihren Wert verliert beim nächsten Funktions Aufruf.
Hier kurz ein beispiel wie ich es versucht habe (habe alles raus gelöscht was nicht dirket mit dem problem zu tun hat. Nach meinem verständnis sollte sich der Variablen wert bei jedem aufruf von True nach False und zurück ändern):
public function CheckForAlarm() {
static $Action1 = false; // Save if first action is triggerd
$this->SetValue('ActualTime',("A1:".$Action1);
if ($Action1 == false)
{
$Action1 = true;
} else {
$Action1 = false;
}
}
Des weiteren hatte ich auch versucht die Variablen direkt in der Classe zu definierne dies hat aber leider auch nicht funkitoniert.
class Wecker extends IPSModule {
// Überschreibt die interne IPS_Create($id) Funktion
private $Action1 = false; // Save if first action is triggerd
public function Create() {
// Diese Zeile nicht löschen.
parent::Create();
// Überschreibt die intere IPS_ApplyChanges($id) Funktion
public function ApplyChanges() {
// Diese Zeile nicht löschen
parent::ApplyChanges();
public function CheckForAlarm() {
$this->SetValue('ActualTime',("A1:".$Action1);
if ($this->$Action1 == false)
{
$this->$Action1 = true;
} else {
$this-> $Action1 = false;
}
}
eventuell hat von euch einer ein Tip, sollte ja ein gängiges Problem sein
Mit freundlichen Grüßen
Max