Hallo zusammen,
vielen Dank. DIe Schaltung über einen HM-Taster konnte ich damit umsetzen.
Jetzt stehe vor einem neuem Problem
Ich würde gerne eine Variable z.B. Anwesenheit Haus, 60 Sekunden verzögert auf „false“ setzen.
Dies gelingt mir mit diesem Script.
<?
$Person1_Var = 51012 /*[WORK\Test\Person1Test]*/; // Hier die BOOL-Variable von Person1Test eintragen (TRUE = Anwesend, FALSE = Abwesend)
$Person2_Var = 33048 /*[WORK\Test\Person2Test]*/; // Hier die BOOL-Variable von Person2Test eintragen (TRUE = Anwesend, FALSE = Abwesend)
$Person1 = GetValue($Person1_Var);
$Person2 = GetValue($Person2_Var);
// Trigger-Events anlegen, damit dieses Skript immer ausgeführt wird, wenn die
// Anwesenheits-Variablen von Person1 oder Person2 sich ändern
CreateEventTrigger("EVENT_Anwesenheit_Person1", $Person1_Var, $_IPS['SELF'], 1);
CreateEventTrigger("EVENT_Anwesenheit_Person2", $Person2_Var, $_IPS['SELF'], 1);
// Anwesenheit TEST
$anwesenheit = 42064 /*[WORK\Test\Anwesenheit_TEST\Anwesenheit_TEST]*/;
// Telegram
$TelegramID = 22786 /*[Module\TelegramMessenger IPS]*/;
$UserID = 377280332;
// Je nach Anwesenheit-Abwesenheit wird die Anwesenheits-Variable auf die entsprechende Zahl gesetzt
if (($Person1 == true) AND ($Person2 == false)) {
SetValue($anwesenheit, true);
}
if (($Person1 == false) AND ($Person2 == true)) {
SetValue($anwesenheit, true);
}
if (($Person1 == true) AND ($Person2 == true)) {
SetValue($anwesenheit, true);
}
// Die Variable $anwesenheit soll 60 Sekunden verzögert auf false gesetzt werden.
if (($_IPS['SENDER'] == "TimerEvent") and ($Person1 == false) AND ($Person2 == false)) {
SetValue($anwesenheit, false); // Verzögerung von 60 Sekunden
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
if (($Person1 == false) AND ($Person2 == false)) {
IPS_SetScriptTimer($_IPS['SELF'], 60);
Telegram_SendText($TelegramID, "Timer 60 Sek", $UserID, $ParseMode='HTML');
}
else {
IPS_SetScriptTimer($_IPS['SELF'], 0); // Timer beendet
Telegram_SendText($TelegramID, "Timer beendet", $UserID, $ParseMode='HTML');
}
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);
}
}
?>
Leider wird das Script nicht beendet. Es läuft die ganze Zeit weiter, wenn die Variable „Anwesenheit“ auf false gesetzt wird. Ist das evtl. normal …?
Habe mir über Telegram schon hilfen zukommen lassen, damit ich sehe welche Scriptzeile gerade ausgeführt wird.
Beste Grüße
Kai