Ich suche jetzt schon ne weile, bin aber leider nicht fündig geworden
Ich suche für Entlüftungsanwendung ein Script das bei „Tastendruck“ einen Ausgang für eine bestimmte Zeit lang (in meinem Fall so ca 45min) auf Ein schaltet und danach selbst wieder ausschaltet.
Wär froh wenn mir geholfen werden könnte.
Vielen DANK im Voraus!
Jetzt war ich grad am schreiben Also poste ich es trotzdem
<?
$StatusVariable = 12345; // ID deiner Bool-Variable die du schalten willst
$zeit = 45; // Zeit (in Minuten) in der die Variable geschaltet werden soll
if($IPS_SENDER != "TimerEvent") {
SetValue($StatusVariable, true);
$ZeitSekunden = $zeit * 60;
IPS_SetScriptTimer($IPS_SELF, $ZeitSekunden);
}
else {
SetValue($StatusVariable, false);
IPS_SetScriptTimer($IPS_SELF, 0);
}
?>
Skript aufrufen setzt die Variable auf TRUE und wenn nach 45 Minuten das Skript durch den Timer aufgerufen wird, dann wird der Timer gestoppt und die Variable auf FALSE gesetzt…
Da hätte ich auch noch was:
Sehr dynamisch dh. Skript braucht nicht angepasst werden und geht mit diversen Instanzen:
Unten die Befehle anpassen für FS20 Homematic Z-Wave etc.
Einfach ein Ereignis an das Script anlegen mit Verweis auf die Variable die unter einer Instanz hängt und getriggert wird bei an, danach das Ereignis umbenennen:
{IRGENDEINTEXT}, {ANZAHL MINUTEN BIS AUSSCHALTEN}
Bsp:
Das Script wird dann gestartet und legt an der Entsprechenden Instanz ein Ereignis an und schaltet das Gerät aus…
<?
/* BESCHREIBUNG ----------------------------------------------------------------
Dies ist ein generisches Script um Geräte automatisch nach einer
vorgegebenen Zeit wieder auszuschalten.
Um die Funktionalität zu nutzen, Ereignisse an diesem Script festmachen.
ZB: Leuchte1->status = true. Also wenn Leuchte1 angeschaltet wurde.
Der Ereignissname muss manuell gepflegt bzw. angepasst werden und folgende
Form haben:
{beliebiger Name},{Timout in Minuten}, {Channel für Ausschalten, optional}
Beispiel
Leuchte Flur, 3, 2
oder
Leuchte Garage, 10
Das Script legt dann unter der Trigger Insatz ein Ereignis an (Name kann
unten konfiguriert werden) und aktiviert dieses mit dem Ausschalt Befehl.
Aktuell für Z-Wave, kann aber leicht für andere Geräte angepasst werden.
------------------------------------------------------------------------------*/
/* CONFIGURATION -------------------------------------------------------------*/
$c_EVENT_NAME = "(Auto Power Off)";
/*----------------------------------------------------------------------------*/
if($_IPS['SENDER'] == "Variable"){
// AuslösendeInstanz und Event herausfinden und Parameter aus Namen extrahieren.
$l_inst = IPS_GetParent($_IPS['VARIABLE']);
$s_event = $_IPS['EVENT'];
$s_name = IPS_GetName($s_event);
$s_name_a = explode(",",$s_name);
$l_POWEROFF = intval($s_name_a[1]);
// Prüfen ob Multichannel
if(!@empty($s_name_a[2])){
// Multi Switch
$l_multi = intval($s_name_a[2]);
} else {
$l_multi = 1;
}
echo "POWEROFF Script Trigger: ".IPS_GetName($l_inst)." Off: ". $l_POWEROFF."
";
// Ausschaltzeit berechnen
$l_POWEROFF = time() + ($l_POWEROFF * 60);
// Prüfen ob bereits altes Event exisitert und ID lesen.
$l_subitems_a = IPS_GetChildrenIDs($l_inst);
$e_id = 0;
foreach($l_subitems_a as $z => $id){
$l_detail = IPS_GetObject($id);
if($l_detail["ObjectType"] == 4){ // Prüfen ob Sub-Item Ereignis ist
if($l_detail["ObjectName"] == $c_EVENT_NAME){
$e_id = $id;
}
}
}
// Fals kein altes Ereignis gefunden wurde, neues anlegen.
if($e_id == 0){
$e_id = IPS_CreateEvent(1);
IPS_SetParent($e_id,$l_inst);
IPS_SetName($e_id,$c_EVENT_NAME);
}
IPS_SetHidden($e_id, true);
// Ereigniszeit setzen
IPS_SetEventCyclic($e_id,1,0,0,0,0,0);
IPS_SetEventCyclicTimeBounds($e_id, $l_POWEROFF, 0);
IPS_SetEventCyclicDateBounds($e_id, $l_POWEROFF, 0);
IPS_SetEventActive($e_id,true);
// Befehl für Ereignis festlegen und setzen
if($l_multi == 1){
// Hier Z-WAVE, Anpassen für andere Geräte
$code = " ZW_SwitchMode($l_inst,false);
echo 'Auto Off $l_inst';
";
} else {
// Hier Z-WAVE, Anpassen für andere Geräte
$code = " ZW_SwitchModeEx($l_inst, false, $l_multi);
echo 'Auto Off $l_inst';
";
}
IPS_SetEventScript($e_id, $code);
}