Guten Morgen Zusammen,
ich muss noch mal auf das Thema Systemvariablen zurück kommen, weil ich vermutlich wieder etwas versuche, was so nicht geht. Um bei meinem Beispiel zu bleiben. Ich habe 4 zyklische Ereignisse angelegt: Start01, Stop01, Start02, Stop02, deren Schaltzeiten ich über das zentrale Popup konfigurieren kann. Funktioniert einwandfrei.
Nun setze ich in jedem dieser Ereignisse eine gemeinsame Variable DP_SWITCH_ON_OFF entweder auf true (Start01, Start02) oder false (Stop01, Stop02).
An diese Variable habe ich ein ausgelöstes Ereignis gehängt, welches dann über ein Skript (switchKnx) die KNX Kanäle mehrere Außenleuchten setzt. Funktioniert auch einwandfrei, allerdings würde ich gerne in diesem Skript mitbekommen, welches ursprüngliche Ereignis (Start01, Start02, Stop01, Stop02) die Variablenänderung verursacht hat. Das bekomm ich nicht hin.
Ich könnte in den zyklischen Ereignissen direkt das switchKnx-Skript aufrufen und den Auslöser als Parameter mitgeben. Das Aufrufen jeglicher PHP-Codeschnipseln im zyklischen Ereignis widerstrebt mir, weil meiner Meinung nach, damit ein Teil der Logik an dieser Stelle landet und der Rest im eigentlichen Skript. Das setzen einer Variablen hingegen ist losgelöst von jeglicher Logik und die Entscheidung, was die Änderung bedeutet wird woanders entschieden.
Vielleicht hat jemand eine Idee, oder die Info, das das Ermitteln des Auslösers über mehrere Ebenen hinweg so einfach nicht geht.
Warum der Zwischenschritt über die gemeinsame DP_SWITCH_ON_OFF Variable?
Wenn deine vier zyklischen Ereignis direkt das switchKnx-Skript aufrufen, dann hast du in der Systemvariable das Ereignis welches es gestartet hat.
Michael
Dann ist die Aktion kein IPS_RunScript mehr, sondern nur noch das Ausführen der Automation:
Dann kann ich auf $_IPS[‚EVENT‘] zugreifen… Darauf muss man erst mal kommen…
Und schon stellt sich mir die nächste Frage: Wenn ich X Skripte über das Event aufrufen möchte, weil sich später noch eine zusätzliche Aktion ergibt, die bei dem Ereignis ausgelöst werden soll, bekomme ich das so nicht hin. Dann muss ich also ein zentrales Skript sozusagen als Dispatcher verwenden, welches dann die weiteren Skripte aufruft…
Naja… ich sage es mal so, das ist bei den Grundlagen der Ereignisse in der Doku aber beschrieben.
Wenn du das willst. Ich habe meistens wirklich nur einzelne Ereignis für bestimmte Aufgaben.
Zumal ich meistens keine weiteren Skripte starte, sondern einfach Variablen mit RequestAction schalte. (Siehe auch oben bei dem Link zum Etagenlicht)
Michael
Das sich diese Info hier nicht auf den Aufruf eines PHP-Skriptes mit RunScript bezieht, sondern nur gilt, wenn das Ereignis unter dem Skript hängt… hat sich mir beim Lesen tatsächlich nicht erschlossen .
Einerseits sollte das Ereignis der LETZTE Schritt sein und könnte direkt die Lampe starten. Wenn du das wirklich nicht willst, wähle die Aktion ‚Starte Automatisierung‘ und wähle das Script aus. Wenn du das Script unmittelbar ÜBER die Events legst (statt bisher die Variable) wird das im Event-Einstelldialog auch prominent angeboten. Ansonsten kann man es aber auch auswählen.
Hallo Tobias,
ja, genau, ich habe jetzt alle zeitgesteuerten Ereignisse unter das „zentrale“ Skript gehängt, welches sich um das Schalten der unterschiedlichen Lampen kümmert. Dort werte ich den Auslöser aus und entscheide damit was tatsächlich passieren soll. Funktioniert einwandfrei.