habe es jetzt mal nach diesem Prinzip probiert, da habe ich aber auch das Problem, wen Tracker 1 bereits daheim ist schaltet er denoch wen Tracker 2 dazu kommt. genau das darf und soll ja nicht Passieren…
/* Link: https://www.symcon.de/forum/threads/28210-IP-Symcon-Wie-kann-ich-2-0?p=259961#post259961
Variable "An/- & Abwesenheit" kann folgende Zustände haben
0 = Tracker1 und Tracker2 sind ABWESEND
1 = Tracker1 ist ANWESEND, Tracker2 ist ABWESEND
2 = Tracker1 ist ABWESEND, Tracker2 ist ANWESEND
3 = Tracker1 und Tracker2 sind ANWESEND
*/
// Hier die BOOL-Variable von Tracker1 eintragen (TRUE = Anwesend, FALSE = Abwesend)
$Tracker1_Var = 29471 /*[...der KUTSCHER @Home\System Konfiguration\Personen Tracker\Personen Tracker\Tracker1\Tracker1 An/- Abwesend]*/;
// Hier die BOOL-Variable von Tracker2 eintragen (TRUE = Anwesend, FALSE = Abwesend)
$Tracker2_Var = 56730 /*[...der KUTSCHER @Home\System Konfiguration\Personen Tracker\Personen Tracker\Tracker2\Tracker2 An/- Abwesend]*/;
$Tracker1 = GetValue($Tracker1_Var);
$Tracker2 = GetValue($Tracker2_Var);
// Trigger-Events anlegen, damit dieses Skript immer ausgeführt wird, wenn die
// Anwesenheits-Variablen von Tracker1 oder Tracker2 sich ändern
CreateEventTrigger("An/- & Abwesend Tracker1", $Tracker1_Var, $_IPS['SELF'], 1);
CreateEventTrigger("An/- & Abwesend Tracker2", $Tracker2_Var, $_IPS['SELF'], 1);
// Je nach Anwesenheit-Abwesenheit wird die Anwesenheits-Variable auf die entsprechende Zahl gesetzt
if (($Tracker1 == true) AND ($Tracker2 == false))
{
$AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
SetValue($AnwesenheitsVar_ID, 1);
}
elseif (($Tracker1 == false) AND ($Tracker2 == true))
{
$AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
SetValue($AnwesenheitsVar_ID, 1);
}
elseif (($Tracker1 == true) AND ($Tracker2 == true))
{
$AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
SetValue($AnwesenheitsVar_ID, 1);
}
elseif (($Tracker1 == false) AND ($Tracker2 == false)) {
$AnwesenheitsVar_ID = CreateVariableByName($_IPS['SELF'], "An/- & Abwesenheit", 1, "", "");
SetValue($AnwesenheitsVar_ID, 0);
}
function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarActionScript = "")
{
$VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
if($VarID === false)
{
$VarID = IPS_CreateVariable($VarTyp);
IPS_SetParent($VarID, $ParentID);
IPS_SetName($VarID, $VarName);
IPS_SetInfo($VarID, "This variable was created by script #".$_IPS["SELF"]);
if($VarProfile !== "")
{
IPS_SetVariableCustomProfile($VarID, $VarProfile);
}
if($VarActionScript !== "") {
IPS_SetVariableCustomAction($VarID, $VarActionScript);
}
}
return $VarID;
}
function CreateEventTrigger($EventName, $VarID, $ParentID, $EventTyp)
{
$eid = @IPS_GetEventIDByName($EventName, $ParentID);
if (is_numeric($eid) == false)
{
$eid = IPS_CreateEvent(0);
IPS_SetEventTrigger($eid, $EventTyp, $VarID);
IPS_SetParent($eid, $ParentID);
IPS_SetName($eid, $EventName);
IPS_SetEventActive($eid, true);
}
}
?>