Hallo,
wieder mal ein kleines Script - unabh. vom verwendeten System (s.u. HomeMatic, Z-Wave, FS20, etc.) .
Dieses Script kann alle Lichter AUS (z.B. beim verlassen des Hauses) oder alles AN Schalten (z.B. bei Brand!) schalten.
Dazu prüft es ob eine Variable ein entsprechendes Variablenprofil hat.
Dh. alle Status Variablen meiner Lichter haben ein eigenes Profil „Licht“ bekommen.
Man kann dieses Script in leicht abgewandelter Form auch anders verwenden (zB. alle Standby Verbraucher abschalten, Dazu halt dann ein eigenes Variablenprofil verwenden).
<?
/* ----------------------------------------------------------------------
Alle Lichter aus / anschalten
Dieses Script ermittelt alle Lichter anhand eines Profils und schaltet
diese ein bzw. aus.
Wird das Skript normal aufgerufen, schaltet es aus. Über runScriptEX kann
aber auch der Wert mitgegeen werden:
IPS_RunScriptEx(<SCRIPTID>, Array("VALUE"=>true, "FORCE"=>true);
$c_profiles: string, Variablenprofil das geprüft werden soll
$c_force: true/false, Wenn TRUE wird auf jeden Fall geschalten, egal
ob der aktuelle Wert in IPS bereits den Zielwert hat.
Bei Systemen ohne Rückkanal notwendig.
$c_delay: integer, Millisekunden Pause bis zum nächsten Schaltvorgang
----------------------------------------------------------------------*/
$c_profiles[] = "Licht";
$c_profiles[] = "Lichter";
$c_force = false; // S.o.
$c_delay = 250;
/* End of configuration ------------------------------------------------*/
DEFINE("ZWAVE","{101352E1-88C7-4F16-998B-E20D50779AF6}");
DEFINE("FS20", "{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}");
DEFINE("HOME_MATIC","{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
DEFINE("XCOMFORT","{1B7B5B7D-CAA9-4AB5-B9D8-EC805EC955AD}");
DEFINE("LCN","{2D871359-14D8-493F-9B01-26432E3A710F}");
// status Lesen -
$stat = @$_IPS['VALUE'];
settype($stat, "boolean");
$force = (isset($_IPS['FORCE']))? $_IPS['FORCE'] : $c_force;
settype($force, "boolean");
// Alle Lichter ausschalten (mit Profil Licht!)
$a_var = IPS_GetVariableList();
foreach($a_var as $varid){
$var_info = IPS_GetVariable($varid);
$var_prof = (!empty($var_info["VariableCustomProfile"]))?
$var_info["VariableCustomProfile"] :
$var_info["VariableProfile"];
$var_data = getValue($varid);
if(in_array($var_prof,$c_profiles) && (($var_data != $stat) || $force) ){
// Übergeordnete Instanz ermitteln.
$instid = IPS_GetParent($varid);
$inst_info = IPS_GetInstance($instid);
switch($inst_info["ModuleInfo"]["ModuleID"]){
case ZWAVE:
ZW_SwitchMode($instid, $stat);
break;
case FS20:
FS20_SwitchMode($instid, $stat);
break;
case LCN:
LCN_SwitchMode($instid, $stat);
break;
case XCOMFORT:
MXC_SwitchMode($instid, $stat);
break;
case HOME_MATIC:
HM_WriteValueBoolean($instid, "STATE", $stat);
break;
} // Switch
IPS_Sleep($c_delay);
} // if
}
?>