<?
//Dieses Skript erwartet eine Abfolge von Variablenaktualisierungen, und setzt eine
//"unlocked" Variable bei Eingabe der korrekten Kombination.
//Die Variablen müssen in das Array eingetragen werden und entsprechenden der Kombination.
//in der eingegebenen Reihenfolge. Doppelnennungen von Variable sind möglich.
//Timeout ist die Zeit, bis der interne Merker die bisher korrekte Kombination löscht.
//Timeout zählt von vorne, sobald eine neue korrekte Eingabe erfolgt ist
//Nach einem erfolgreichen Unlock, wird die Unlock Variable nach Timeout wieder auf FALSE gesetzt.
//Hier Konfigurieren und per "Ausführen" installieren
$timeout = 10; //s
$items =
Array(
15510,
52510,
37940,
);
//Ab hier nichts mehr verändern
$kid = CreateVariableByName("KeyInput", 3);
$uid = CreateVariableByName("Unlocked", 0);
if($IPS_SENDER === "Execute") {
//Helper
$found = Array();
//Delete Events
$eids = IPS_GetScriptEventList($IPS_SELF);
foreach($eids as $id)
{
$e = IPS_GetEvent($id);
if($e['EventType'] == 0)
{
if(!in_array($e['TriggerVariableID'], $items))
{
IPS_DeleteEvent($id);
} else {
$found[] = $id;
}
}
}
//Register Events
foreach($items as $id) {
if(!in_array($id, $found)) {
$eid = IPS_CreateEvent(0);
IPS_SetEventTrigger($eid, 0, $id);
IPS_SetParent($eid, $IPS_SELF);
IPS_SetEventActive($eid, true);
}
}
//Initialize
SetValue($kid, "");
SetValue($uid, false);
IPS_SetScriptTimer($IPS_SELF, 0);
} elseif($IPS_SENDER == "TimerEvent") {
//Reset
SetValue($kid, "");
SetValue($uid, false);
IPS_SetScriptTimer($IPS_SELF, 0);
} elseif($IPS_SENDER == "Variable") {
$key = GetValue($kid);
if(strlen($key) >= sizeof($items))
return;
if($IPS_VARIABLE == $items[strlen($key)]) {
SetValue($kid, $key."*");
if(strlen(GetValue($kid)) == sizeof($items)) {
SetValue($kid, "");
SetValue($uid, true);
}
IPS_SetScriptTimer($IPS_SELF, $timeout);
}
}
function CreateVariableByName($name, $type, $profile = "")
{
global $IPS_SELF;
$id = @IPS_GetVariableIDByName($name, $IPS_SELF);
if ($id === false)
{
$id = IPS_CreateVariable($type);
IPS_SetParent($id, $IPS_SELF);
IPS_SetName($id, $name);
IPS_SetInfo($id, "this variable was created by script #$IPS_SELF");
if ($profile !== "") { IPS_SetVariableCustomProfile($id, $profile); }
}
return $id;
}
?>
paresy