gleiches Skript, von verschiedenen Instanzen aufgerufen?

So langsam komme ich vorwärts - aber sehr vieles ist mir immer noch nicht klar.

Im Moment kämpfe ich mit folgendem Problem:

[ol]
[li]Ich habe ein Haufen EnOcean-Sensoren eingebunden.
[/li][li]Den Sensoren sind einige analoge und binäre Variablen zugerordnet (Bewegung, Helligkeit, Batterieladezustand)
[/li][li]Nun möchte ich dass bei jeder Bewegunsmeldung (egal von welchem Sensor) immer das gleiche Skript aufgerufen wird.
[/li][li]Das Skript sollte registrieren, von welchem Sensor die Meldung kam
[/li][li] dann sollen alle Variablen des Sensors einlesen werden
[/li][li] Variablen werden in eine Access-Datenbank über ODBC gespeichert.
[/li][/ol]

#1 und #2 sind problemlos gegangen. Für #3 habe ich ein „Ereignis bei Variablenänderung“ definiert, welches durch einen 3-Zeiler mit „include“ das Zielskript bennent (aber das ist vielleicht ein Fehler. Das Zielskript wird zwar ausgeführt, aber $IPS_SENDER und $IPS_VALUE scheinen leer zu sein, und folglich geht #4 und #5 nicht. Bei #6 habe ich wiederum keine Probleme. Um ein bisschen Hilfe wäre ich wahnsinnig dankbar!

Du mußt einem Script alle Stati der Bewegungsmelder als Ereignis zuordnen und dort per $IPS_VARIABLE unterscheiden. Ich verstehe nicht was Du gemacht hast.

danke für die Erklärung - und für die superschnelle Antwort! Ich hatte ein Ereignis beim Sensor plaziert. Das ging zwar, und ein Skript liess sich aufrufen. Es war mir nicht klar, dass das Ereignis beim Skript als Trigger gesetzt werden sollte, und nicht beim Sensor! Danke!!!

Gut.:slight_smile:
Allerdings ist bei Mehrfachtriggern eines Scriptes und speichern in eine Datenbank das Timing sehr wichtig, solltest Du Probleme dabei haben, einfach nochmal fragen.:wink:

…sorry, aber ich brauche noch etwas babysitting. Der Skript wird aufgerufen, wenn sich die Variable $Bewegung ändert. $IPS_VALUE enthält den Wert von $Bewegung, und $IPS_VARIABLE die entsprechende Nummer. Wie kriege ich aber die Werte der anderen Variablen des Sensors ($Helligkeit, $Ladezustand, etc.) in den Skript hinein? Danke im Voraus für die Hilfe!

Auf die Schnelle:


$id=$IPS_VARIABLE;
$id_par=IPS_GetParent($id);
print_r(IPS_GetChildrenIDs($id_par));

Gibt alle ID´s aus, die unter dem Objekt des Triggers liegen. Mit IPS_GetName kannst Du diese dann noch unterscheiden.