So, ich habe es seit vorgestern hinbekommen, nur bis jetzt leider keine Zeit gehabt. Möchte die Lösung aber hier aufzeigen, falls ein Newbie (so wie ich) ähnliches Problem hat.
Ich habe eine neue Instanz angelegt, und dieser die schaltende Gruppenadresse des Präsenzmelders gegeben. Man sah in der IPS den Status (bei Value) von AUS auf EIN immer wenn man sich bewegte. Funktionierte also. Dann legte ich ein Ereignis für diese Variable an. „Bei Variablenänderung“ -> Gerät ausführen. In dem Feld „Code“ habe ich das Script reingeschrieben und als Ziel die Variable „Value“ des Präsenzmelders genommen. Und so fingen die Fehler an. Ich habe herausgefunden, das es immer besser ist, ein Script anzulegen, da dieses auch Fehlermeldungen ausgibt.
Ein weiterer Fehler war, dass die Abfrage ob eines der Lichter an ist, nicht auf die Instanz, sondern auf die Variable abgefragt werden muss. Somit hatte ich auch falsche Objekt-Id´s genommen. Der Schaltbefehl muss allerdings auf die Variable erfolgen (was viele sicher wissen und ich jetzt auch). Ich habe also jetzt die Instanz mit dem Präsenzmelder, darunter das Script und auf dem Script ein Ereignis angelegt, „Bei Variablenänderung“ „Script starten“.
Hier noch das Script, mit dem es nun funktioniert:
$time = date("H:i");
$StatusTreppenlicht = GetValueBoolean(27303);
$StatusDeckenlichtFlurOG = GetValueBoolean(38330);
if ($StatusTreppenlicht == 1)
{
EIB_Switch(20503 /*[Treppenlicht]*/, false);
}
elseif ($StatusDeckenlichtFlurOG == 1)
{
EIB_Switch(30739 /*[Flur Deckenlicht OG]*/, false);
}
elseif(($time > "22:00") || ($time <= "08:00"))
{
EIB_Switch(20503 /*[Treppenlicht]*/, true);
}
else
{
EIB_Switch(30739 /*[Flur Deckenlicht OG]*/, true);
@ helmut
Danke für den Tipp mit dem Boolean Wert. Ich habe es zwar nicht ausprobiert, aber ich denke, dass meine Abfrage mit:
if ($StatusTreppenlicht = "true"
auch funktioniert hätte. Aber die Abfrage mit Boolean ist sicherer und besser wie ich finde. Der Befehl dafür ist allerdings
GetValueBoolean und nicht GetValue.
$StatusTreppenlicht = GetValueBoolean(12345);
Ist auch nur zur Info und keine rechthaberische Kritik! Im Gegenteil, ich danke Dir, dem anderen Helmut, Martin und „1007“ für die nützlichen Tipps und der Hilfe! Macht weiter so und vielen Dank.
Grüße Andy