ich versuche gerade ein Beispiel- und Testskript zu bauen, das man per Trigger an verschiedene Instanzen dranhängen kann und das anhand des aufrufenden Triggers erkennt, was es tun soll.
Leider komme ich mit der Doku nicht genug zurecht, um allein drauf zu kommen, wie man den folgenden Weg zurückzuverfolgen kann:
Skript selbst -> aufrufender Trigger -> den Trigger auslösende Variable -> Objekt zu dem die Variable gehört.
(Teilweise Pseudo-)Code an dem ich bastle:
$ScriptID = $IPS_SELF;
$Script = IPS_GetScript($ScriptID);
$EventId = $Script["ParentID"]; // das geht schon mal nicht...
$Event = IPS_GetEvent($EventID);
$VariableId = $Event["TriggerVariableID"];
$VariableObj = IPS_GetObject($varid);
$InstanceID = $VariableObj["ParentID"];
print "Instanz $InstanceID hat die Variable $VariableID.
";
print "Die Variable $VariableID hat den Trigger $EventID ausgelöst.
";
print "Der Trigger $EventID hat das Skript $ScriptID gestartet.
";
<?
// Skript FS20 folgt HMS
// wird von einer Änderung der HMS-Statusvariablen getriggert.
// Die Statusvariable des HMS hat eine untergeordnete Variable namens
// SlaveID in der als Integer die Objekt-ID des FS20-Empfängers steht:
$SlaveIDVarID=IPS_GetVariableIDByName ( "SlaveID", $IPS_VARIABLE);
$SlaveIDVar=IPS_GetVariable($SlaveIDVarID);
$SlaveID=$SlaveIDVar[VariableValue][ValueInteger];
// Der FS20-Empfänger wird auf den Wert der HMS-Statusvariablen gestellt:
FS20_SwitchMode($SlaveID, $IPS_VALUE);
?>