Habe da doch noch eine Frage:
an welcher Stelle in das ShutterControl.ips wird der Code-Teil von macgiver eingebaut, passt das so wie ich das gemacht habe ?
Aus der Doku werde ich hinsichtlich Installation und Integration des ShutterControl Moduls nicht schlau, finde aber auch keine weiteren Themen dazu, bestimmt hat noch jemand einen entsprechenden Link für mich ?
Gruß, Fred
<?
//Variables provided by ShutterControl Module
//IPS_LogMessage("InstanceID", $SC_INSTANCE); /* InstanceID */
//IPS_LogMessage("Direction", $SC_DIRECTION); /* {0..2} Stop, Up, Down */
//IPS_LogMessage("Duration", $SC_DURATION); /* ms */
if($IPS_SENDER != "ShutterControl")
die("This script can only be started by the ShutterControl Module");
define("SC_DIRECTION_STOP", 0);
define("SC_DIRECTION_UP", 1);
define("SC_DIRECTION_DOWN", 2);
$instance = IPS_GetInstance($SC_INSTANCE);
switch($instance['ModuleInfo']['ModuleID'])
{
case "{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}": //FS20
$running = CreateVariableByName($SC_INSTANCE, "Moving", 0);
$value = GetValue(IPS_GetStatusVariableID($SC_INSTANCE, "StatusVariable"));
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
if(GetValue($running))
{
FS20_SwitchMode($SC_INSTANCE, $value);
SetValue($running, false);
}
break;
case SC_DIRECTION_UP:
if(!GetValue($running))
{
FS20_SwitchMode($SC_INSTANCE, true);
SetValue($running, true);
}
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
FS20_SwitchMode($SC_INSTANCE, true);
SetValue($running, false);
}
break;
case SC_DIRECTION_DOWN:
if(!GetValue($running))
{
FS20_SwitchMode($SC_INSTANCE, false);
SetValue($running, true);
}
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
FS20_SwitchMode($SC_INSTANCE, false);
SetValue($running, false);
}
break;
}
break;
case "{1B7B5B7D-CAA9-4AB5-B9D8-EC805EC955AD}": //xComfort
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
MXC_ShutterStop($SC_INSTANCE);
break;
case SC_DIRECTION_UP:
MXC_ShutterMoveUp($SC_INSTANCE);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
MXC_ShutterStop($SC_INSTANCE);
}
break;
case SC_DIRECTION_DOWN:
MXC_ShutterMoveDown($SC_INSTANCE);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
MXC_ShutterStop($SC_INSTANCE);
}
break;
}
break;
case "{2D871359-14D8-493F-9B01-26432E3A710F}": //LCN
$type=LCN_GetUnit($SC_INSTANCE);
switch($type)
{
case 0: //Ausgänge
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
LCN_SetIntensity($SC_INSTANCE,0,0);
LCN_SetIntensity($SC_INSTANCE2,0,0);
break;
case SC_DIRECTION_UP:
LCN_SetIntensity($SC_INSTANCE,100,4);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
LCN_SetIntensity($SC_INSTANCE,0,0);
}
break;
case SC_DIRECTION_DOWN:
LCN_SetIntensity($SC_INSTANCE2,100,4);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
LCN_SetIntensity($SC_INSTANCE2,0,0);
}
break;
}
break;
case 2: //Reais
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
LCN_SwitchRelay($SC_INSTANCE,false);
break;
case SC_DIRECTION_UP:
LCN_SwitchRelay($SC_INSTANCE,true);
LCN_SwitchRelay($SC_INSTANCE2,false); // Um Relaisrichtung zu ändern bitte auf true
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
LCN_SwitchRelay($SC_INSTANCE,false);
}
break;
case SC_DIRECTION_DOWN:
LCN_SwitchRelay($SC_INSTANCE,true);
LCN_SwitchRelay($SC_INSTANCE2,true);// Um Relaisrichtung zu ändern bitte auf false
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
LCN_SwitchRelay($SC_INSTANCE,false);
}
break;
}
break;
}
break;
case "{9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}": //1-Wire Shutter
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
OneWireShutter($SC_INSTANCE, 0, $SC_DURATION);
break;
case SC_DIRECTION_UP:
if($SC_DURATION == 0)
$SC_DURATION = 120000;
OneWireShutter($SC_INSTANCE, 0, $SC_DURATION);
break;
case SC_DIRECTION_DOWN:
if($SC_DURATION == 0)
$SC_DURATION = 120000;
OneWireShutter($SC_INSTANCE, 1, $SC_DURATION);
break;
}
break;
case "{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}": //Homematic Shutter
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
HM_WriteValueBoolean($SC_INSTANCE, "STOP", true);
break;
case SC_DIRECTION_UP:
HM_WriteValueFloat($SC_INSTANCE, "LEVEL", 1.0);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
HM_WriteValueBoolean($SC_INSTANCE, "STOP", true);
}
break;
case SC_DIRECTION_DOWN:
HM_WriteValueFloat($SC_INSTANCE, "LEVEL", 0.0);
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
HM_WriteValueBoolean($SC_INSTANCE, "STOP", true);
}
break;
}
break;
case "{E6D7692A-7F4C-441D-827B-64062CFE1C02}": // JB-Lightmanager Pro
// Instanz öffnen, wenn nicht schon offen
IPS_RunScriptEx( SET_HID_STATUS, Array("hid_id" => JB_LIGHTMANAGER, "vendor_id" => JB_LIGHTMANAGER_VENDORID, "product_id" => JB_LIGHTMANAGER_PRODUCTID, "status" => true));
sleep(1);
$running = CreateVariableByName($SC_INSTANCE2, "Moving", 0);
$value = GetValue(IPS_GetStatusVariableID($SC_INSTANCE2, "StatusVariable"));
// Funk-ID aus Variable holen
$funk_ID = GetValue(IPS_GetVariableIDByName("Funk_ID", $SC_INSTANCE2));
switch($SC_DIRECTION)
{
case SC_DIRECTION_STOP:
if(GetValue($running))
{
HID_SendEvent($SC_INSTANCE,0,chr(0x15).chr($funk_ID).chr(0x74).chr(0x02).chr(0x00).chr(0x00).chr(0x00).chr(0x00));
SetValue($running, false);
}
break;
case SC_DIRECTION_UP:
if(!GetValue($running))
{
HID_SendEvent($SC_INSTANCE,0,chr(0x15).chr($funk_ID).chr(0x74).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00));
SetValue($running, true);
}
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
HID_SendEvent($SC_INSTANCE,0,chr(0x15).chr($funk_ID).chr(0x74).chr(0x02).chr(0x00).chr(0x00).chr(0x00).chr(0x00));
SetValue($running, false);
}
else
SetValue($running, false);
break;
case SC_DIRECTION_DOWN:
if(!GetValue($running))
{
HID_SendEvent($SC_INSTANCE,0,chr(0x15).chr($funk_ID).chr(0x74).chr(0x04).chr(0x00).chr(0x00).chr(0x00).chr(0x00));
SetValue($running, true);
}
if($SC_DURATION > 0)
{
IPS_Sleep($SC_DURATION);
HID_SendEvent($SC_INSTANCE,0,chr(0x15).chr($funk_ID).chr(0x74).chr(0x02).chr(0x00).chr(0x00).chr(0x00).chr(0x00));
SetValue($running, false);
}
else
SetValue($running, false);
break;
}
break;
default:
die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
function OneWireShutter($ins, $dir, $sec) {
@TMEX_F29_SetStrobe($ins, True);
$res = ($dir * 128) + ($sec / 1000);
@TMEX_F29_SetPort((integer)$ins, (integer)$res);
}
function CreateVariableByName($id, $name, $type)
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid===false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
}
return $vid;
}
?>