Hallo Danke an Alle für die tolle Arbeit! ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Habe die Infos mal gesammelt und alles auf ips umgeschriben.
Im Script Werte und Namen der Eingänge ändern. Variablen, Ereignisse und Timmer wird beim ausführen selbst angelegt.
- Zonen ein und aus schalten
- Status der Eingänge
- Eingänge ausblendbar (bei geöffnetem Fenster eines Eingangs, kann man ihn ausblenden um scharf zu schalten.
<?
<?
### Abus SecvestIP ###
$ÜbergeordneteID = IPS_GetParent($_IPS['SELF']);
// Werte eintragen
$webfront = 36313;
$ip = 'http://192.168.178.178'; // Abus IP
$bn = 'admin'; // Benutzer
$pw = 'admin'; // Passwort
// hier nur Name von den Abus Eingängen ändern sonst nichts
$InputCH[1] = Array ( 'Name'=>'Rauchmelder OG', 'RName'=>"InputCH1", 'varProfTyp'=>"~Window"); $InputCH[1]['ID'] = @IPS_GetVariableIDByName($InputCH[1]['Name'], $ÜbergeordneteID);
$InputCH[2] = Array ( 'Name'=>'Fenster Obergeschoß', 'RName' => "InputCH2", 'varProfTyp'=>"~Window"); $InputCH[2]['ID'] = @IPS_GetVariableIDByName($InputCH[2]['Name'], $ÜbergeordneteID);
$InputCH[3] = Array ( 'Name'=>'Fenster Keller, EG, Haus-&Garagentür', 'RName'=>"InputCH3", 'varProfTyp'=>"~Window"); $InputCH[3]['ID'] = @IPS_GetVariableIDByName($InputCH[3]['Name'], $ÜbergeordneteID);
$InputCH[4] = Array ( 'Name'=>'Kammera EG Flur', 'RName'=>"InputVCH1", 'varProfTyp'=>"~Window"); $InputCH[4]['ID'] = @IPS_GetVariableIDByName($InputCH[4]['Name'], $ÜbergeordneteID);
$InputCH[5] = Array ( 'Name'=>'Bewegungsmelder Keller', 'RName'=>"InputVCH2", 'varProfTyp'=>"~Window"); $InputCH[5]['ID'] = @IPS_GetVariableIDByName($InputCH[5]['Name'], $ÜbergeordneteID);
$InputCH[6] = Array ( 'Name'=>'Rauchmelder Bügelzimmer, Heizung, Garage', 'RName'=>"InputVCH3", 'varProfTyp'=>"~Window"); $InputCH[6]['ID'] = @IPS_GetVariableIDByName($InputCH[6]['Name'], $ÜbergeordneteID);
// ab hier nicht mehr ändern
$mod['intern'] = Array ('Name'=> 'Intern activ', 'RName' => "", 'varProfTyp'=>"~Switch"); $mod['intern']['ID'] = @IPS_GetVariableIDByName($mod['intern']['Name'], $ÜbergeordneteID);
$mod['extern'] = Array ('Name'=> 'Extern activ', 'RName' => "", 'varProfTyp'=>"~Switch"); $mod['extern']['ID'] = @IPS_GetVariableIDByName($mod['extern']['Name'], $ÜbergeordneteID);
$mod['aus'] = Array ('Name'=> 'Alarmanlage aus', 'RName' => "", 'varProfTyp'=>"~Switch"); $mod['aus']['ID'] = @IPS_GetVariableIDByName($mod['aus']['Name'], $ÜbergeordneteID);
$Aublenden[1] = Array ('Name'=>'Ausblenden '.$InputCH[1]['Name'], 'RName'=>"Channel1"); $Aublenden[1]['ID'] = @IPS_GetVariableIDByName($Aublenden[1]['Name'], $ÜbergeordneteID);
$Aublenden[2] = Array ('Name'=>'Ausblenden '.$InputCH[2]['Name'], 'RName'=>"Channel2"); $Aublenden[2]['ID'] = @IPS_GetVariableIDByName($Aublenden[2]['Name'], $ÜbergeordneteID);
$Aublenden[3] = Array ('Name'=>'Ausblenden '.$InputCH[3]['Name'], 'RName'=>"Channel3"); $Aublenden[3]['ID'] = @IPS_GetVariableIDByName($Aublenden[3]['Name'], $ÜbergeordneteID);
$Aublenden[4] = Array ('Name'=>'Ausblenden '.$InputCH[4]['Name'], 'RName'=>"Vchannel1"); $Aublenden[4]['ID'] = @IPS_GetVariableIDByName($Aublenden[4]['Name'], $ÜbergeordneteID);
$Aublenden[5] = Array ('Name'=>'Ausblenden '.$InputCH[5]['Name'], 'RName'=>"Vchannel2"); $Aublenden[5]['ID'] = @IPS_GetVariableIDByName($Aublenden[5]['Name'], $ÜbergeordneteID);
$Aublenden[6] = Array ('Name'=>'Ausblenden '.$InputCH[6]['Name'], 'RName'=>"Vchannel3"); $Aublenden[6]['ID'] = @IPS_GetVariableIDByName($Aublenden[6]['Name'], $ÜbergeordneteID);
// Var anlegen
if($_IPS['SENDER'] == 'Execute')
{
//Variablenprofil Anlegen:
if (IPS_VariableProfileExists("Abus_Channals_Status") != true)
{
$NameVP='Abus_Channals_Status';
IPS_CreateVariableProfile($NameVP, 1);//Name, Variablentyp 0=Boolean 1=Integer 2=Float 3=String
IPS_SetVariableProfileAssociation($NameVP, 0, "Geschlossen", "Window", 0x08F617); //Button Name Nr.0
IPS_SetVariableProfileAssociation($NameVP, 1, "Geöffnet", "Window", 0xFF0000); //Button Name Nr.1
IPS_SetVariableProfileAssociation($NameVP, 2, "Deaktiviert", "Window", 0x6A6662); //Button Name Nr.2
IPS_SetVariableProfileAssociation($NameVP, 3, "Ausgeblendet", "Window", 0xFD7F01); //Button Name Nr.3
$NameVP='Abus_Channals_Ausblenden';
IPS_CreateVariableProfile($NameVP, 1);//Name, Variablentyp 0=Boolean 1=Integer 2=Float 3=String
IPS_SetVariableProfileAssociation($NameVP, 0, "Ausblenden", "Warning", -1); //Button Name Nr.0
IPS_SetVariableProfileAssociation($NameVP, 1, "Einblenden", "Warning", -1); //Button Name Nr.1
}
IPS_SetHidden($_IPS['SELF'], true);
$arrayNr = 1;
foreach($mod as $Nr => $wert)
{ $varExist = empty( $wert['ID']);
if( $varExist == true )
{
// Var Alarm ein aus anlegen
echo $wert['Name'].'Var wurde angelegt';
$VarID = IPS_CreateVariable(0);
IPS_SetName($VarID, $wert['Name']); // Variable benennen
IPS_SetPosition($VarID, $arrayNr);
IPS_SetVariableCustomProfile($VarID, $wert['varProfTyp']);
IPS_SetParent($VarID, IPS_GetParent($_IPS['SELF'])); // Variable einsortieren
if($arrayNr <=2)
{IPS_SetVariableCustomAction($VarID, $_IPS['SELF']);}
$arrayNr++;
//Ereignis Anlegen
if($wert['Name']== 'Intern activ' or $wert['Name'] == 'Extern activ')
{
$eid = IPS_CreateEvent(0); //Ausgelöstes Ereignis
IPS_SetName($eid , 'Ereignis');
IPS_SetEventTrigger($eid, 1, $VarID); //Bei Aktuallisierung von Variable
IPS_SetParent($eid, $_IPS['SELF']); //Ereignis zuordnen
IPS_SetEventActive($eid, true);
}
}
}
$arrayNr = 3;
foreach($InputCH as $Nr => $wert)
{ $varExist = empty( $wert['ID']);
if( $varExist == true )
{
// Vars Status und Ausblenden anlegen
{
echo $wert['Name'].'Var wurde angelegt';
$VarID = IPS_CreateVariable(1);
IPS_SetName($VarID, $wert['Name']); // Variable benennen
IPS_SetPosition($VarID, $arrayNr);
IPS_SetVariableCustomProfile($VarID, 'Abus_Channals_Status');
IPS_SetParent($VarID, IPS_GetParent($_IPS['SELF'])); // Variable einsortieren
$arrayNr++;
echo $wert['Name'].'Var wurde angelegt';
$VarID = IPS_CreateVariable(1);
IPS_SetName($VarID, 'Ausblenden '.$wert['Name']); // Variable benennen
IPS_SetPosition($VarID, $arrayNr);
IPS_SetVariableCustomProfile($VarID, 'Abus_Channals_Ausblenden');
IPS_SetParent($VarID, IPS_GetParent($_IPS['SELF'])); // Variable einsortieren
IPS_SetVariableCustomAction($VarID, $_IPS['SELF']);
IPS_SetIcon($VarID, "Warning");
setValue($VarID, -1);
$arrayNr++;
}
}
}
IPS_SetScriptTimer($_IPS['SELF'], 180);
}
if( $_IPS['SENDER'] == 'WebFront')
{
if( @$_IPS['VARIABLE'] == $mod['intern']['ID'] )
{
if(getValue($mod['intern']['ID']) == True ) // intern aus
{
Sys_GetURLContentEx($ip.'/setMode.cgi?Mode=Unset&Source=Webpage', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
}
else // intern ein
{
Sys_GetURLContentEx($ip.'/setMode.cgi?Mode=PartSet&Source=Webpage', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
}
}
if( @$_IPS['VARIABLE'] == $mod['extern']['ID'] )
{
if(getvalue($mod['extern']['ID']) == True ) // extern aus
{
Sys_GetURLContentEx($ip.'/setMode.cgi?Mode=Unset&Source=Webpage', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
}
else //extern ein
{
Sys_GetURLContentEx($ip.'/setMode.cgi?Mode=Set&Source=Webpage', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
}
}
// Ausblenden
$NameAkt = IPS_GetName($_IPS['VARIABLE']);
foreach ($Aublenden as $Nr => $wert)
{
if( $NameAkt == $wert['Name'])
{
if($_IPS['VALUE'] == 0)
{Sys_GetURLContentEx($ip.'/setInput'.$wert['RName'].'.cgi?Bypass=ON', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
setValue($_IPS['VARIABLE'], 0) ;
}
else
{Sys_GetURLContentEx($ip.'/setInput'.$wert['RName'].'.cgi?Bypass=OFF', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
setValue($_IPS['VARIABLE'], 1) ;
}
}
IPS_Sleep(500);
setValue($_IPS['VARIABLE'], -1);
}
}
// Abfrage
$rueckgabe = Sys_GetURLContentEx($ip.'/getOverviewStatus.cgi', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
foreach($InputCH as $Nr=> $wert)
{
if (strpos($rueckgabe, $wert['RName']."=OFF")!== false){
Setvalue($wert['ID'], 0);
}
elseif (strpos($rueckgabe, $wert['RName']."=ON")!== false){
Setvalue($wert['ID'], 1);
if($_IPS['SENDER'] == 'WebFront' ){
WFC_SendNotification($webfront, 'Alarmanlage', 'Kann nicht activiert werden! '.$wert['Name'].' ist geöffnet', 'Speaker', 6);
}
}
elseif (strpos($rueckgabe, $wert['RName']."=DEACTIVATED")!== false ) {
Setvalue($wert['ID'], 2);
}
elseif (strpos($rueckgabe, $wert['RName']."=BYPASS")!== false){
Setvalue($wert['ID'], 3);
}
}
//Abfrage Status
$rueckgabe = Sys_GetURLContentEx($ip.'/getMode.cgi?Source=Webpage', Array("AuthUser"=> $bn, "AuthPass"=> $pw) );
if (strpos($rueckgabe,"Mode=Unset")!== false) {
Setvalue($mod['intern']['ID'] ,false);
Setvalue($mod['extern']['ID'] ,false);
Setvalue($mod['aus']['ID'] ,true);
}
if (strpos($rueckgabe,"Mode=PartSet")!== false) {
Setvalue($mod['extern']['ID'] ,false);
Setvalue($mod['intern']['ID'] ,true);
Setvalue($mod['aus']['ID'] ,false);
}
if (strpos($rueckgabe,"Mode=Set")!== false) {
Setvalue($mod['extern']['ID'] ,true);
Setvalue($mod['intern']['ID'] ,false);
Setvalue($mod['aus']['ID'] ,false);
}
?>
?>