Zurück   IP-Symcon Community Forum > IP-Symcon 2.x > Scripte, PHP, SQL

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 25.07.10, 19:27
Senior Member
 
Registriert seit: Apr 2010
Beiträge: 225
Standard Shutter mit Timer (Problem)

Nun wollte ich auch den Shutter über den Timer nutzen. Habe mir das notwenige aus dem Forum zusammen kopiert. Habe aber ein Problem.

Ich nutze Enocean und dieses war nicht im Shutter mit Timer erweitert. Nun habe ich das ganz einmal selbst versucht und habe folgende Probleme:

1. Im Webfront erhalte ich:
Shutter Handler result:
ErrorLevel E_WARNING - ErrorCode 2 - File D:\Programme\IP-Symcon\webfront\data\ips.php - Line 433

2. Die Shutter Variable wird nicht aktualisiert. Das heisst ein Rolladen fährt auf 25%. Die Anzeige verbleibt bei offen.

irgendeine idee?

hier das script
PHP-Code:
<?

// true und false ggf tauschen f¸r ansteuerung
$SC_MODULE_UP=false;
$SC_MODULE_DOWN=true;

switch(
$IPS_SENDER)
{
case 
"ShutterControl"//Script wurde vom Shuttermodul aufgerufen
//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 */

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 
"{8492CEAF-ED62-4634-8A2F-B09A7CEDDE5B}"//Enocean
$running CreateVariableByName($SC_INSTANCE"Moving"0);
$value GetValue(IPS_GetStatusVariableID($SC_INSTANCE"StatusVariable"));
switch(
$SC_DIRECTION)
{
case 
SC_DIRECTION_STOP:
if(
GetValue($running))
{
ENO_SwitchMode($SC_INSTANCE$value);

SetValue($runningfalse);
}
break;
case 
SC_DIRECTION_UP:
if(!
GetValue($running))
    {
    
ENO_SwitchMode($SC_INSTANCE$SC_MODULE_UP);
    
SetValue($runningtrue);
}
if(
$SC_DURATION and $SC_DURATION <= 999)
{
    echo 
"90 - 999 up";
    
IPS_Sleep($SC_DURATION);
    
ENO_SwitchMode($SC_INSTANCE$SC_MODULE_UP);
    
SetValue($runningfalse);
}
if(
$SC_DURATION 999)
{
   echo 
"999 up";
    
TimerDelay($SC_INSTANCE$SC_DURATION"ENOCU");
}
break;
case 
SC_DIRECTION_DOWN:
    if(!
GetValue($running))
    {
    
ENO_SwitchMode($SC_INSTANCE$SC_MODULE_DOWN);
    
SetValue($runningtrue);
    }
    if(
$SC_DURATION and $SC_DURATION <= 999)
    {
       echo 
"0 - 999 down";
        
IPS_Sleep($SC_DURATION);
        
ENO_SwitchMode($SC_INSTANCE$SC_MODULE_DOWN);
        
SetValue($runningfalse);
    }
    if(
$SC_DURATION 999)
    {
       echo 
"999 down";
       
TimerDelay($SC_INSTANCE$SC_DURATION"ENOCD");
}
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_INSTANCE0$SC_DURATION);
break;
case 
SC_DIRECTION_UP:
if(
$SC_DURATION == 0)
$SC_DURATION 120000;
OneWireShutter($SC_INSTANCE0$SC_DURATION);
break;
case 
SC_DIRECTION_DOWN:
if(
$SC_DURATION == 0)
$SC_DURATION 120000;
OneWireShutter($SC_INSTANCE1$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;
default:
die(
"No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
break;

case 
"TimerEvent"//Script wurde von einem Ereignis aufgerufen

IPS_SetEventActive($IPS_EVENTfalse);    //Ereignis deaktivieren
$timer=IPS_GetName($IPS_EVENT);
$SCT_INSTANCE intval(substr($timer,-5,5));
$bus substr($timer,0,-5);

    switch (
$bus)
    {
    case 
"ENOCU":
        
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
      
ENO_SwitchMode($SCT_INSTANCE$SC_MODULE_UP);
      
SetValue($runningfalse);
        
$value GetValue(IPS_GetStatusVariableID($SCT_INSTANCE"StatusVariable"));
        
ENO_SwitchMode($SCT_INSTANCE$value);
    break;

    case 
"ENOCD":
        
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
      
ENO_SwitchMode($SCT_INSTANCE$SC_MODULE_DOWN);
      
SetValue($runningfalse);
        
$value GetValue(IPS_GetStatusVariableID($SCT_INSTANCE"StatusVariable"));
        
ENO_SwitchMode($SCT_INSTANCE$value);
    break;
    
    case 
"LCNA":
    
LCN_SetIntensity($SCT_INSTANCE,0,0);
    break;

    case 
"LCNR":
    
LCN_SwitchRelay($SCT_INSTANCE,false);
    break;

    case 
"XCOM":
    
MXC_ShutterStop($SCT_INSTANCE);
    break;

    case 
"HOME":
    
HM_WriteValueBoolean($SCT_INSTANCE"STOP"true);
    break;

    case 
"FS20U":
    
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
        
FS20_SwitchMode($SCT_INSTANCEtrue);
       
SetValue($runningfalse);
    break;

    case 
"FS20D":
    
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
       
FS20_SwitchMode($SCT_INSTANCEfalse);
      
SetValue($runningfalse);
    break;

    }

break;
}

function 
OneWireShutter($ins$dir$sec) {
@
TMEX_F29_SetStrobe($insTrue);
$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;
}

function 
TimerDelay($id$time$bus) {
    global 
$IPS_SELF;
    
$sekunden=intval(substr($time0,-3));
   
$msekunden=substr($time, -33);
   
$timerid IPS_GetObjectIDByName($bus.$id$IPS_SELF);
    if (
$timerid ==0)
    {
    
$newtimer IPS_CreateEvent(1);
   
//IPS_SetEventScript($newtimer, $IPS_SELF); //Aktuelles Skript aufrufen
   
IPS_SetParent($newtimer$IPS_SELF); //Aktuelles Skript aufruf
   
IPS_SetName($newtimer$bus.$id);
   
IPS_Sleep(intval($msekunden));
   
IPS_SetEventCyclic($newtimer00001$sekunden);
    
IPS_SetEventCyclicDateBounds($newtimer00);
    
IPS_SetEventCyclicTimeBounds($newtimertime(), 0);
    
IPS_SetEventActive($newtimertrue);    //Ereignis aktivieren
   
}
   else
   {
   
IPS_Sleep(intval($msekunden));
   
IPS_SetEventCyclic($timerid00001$sekunden);
    
IPS_SetEventCyclicDateBounds($timerid00);
    
IPS_SetEventCyclicTimeBounds($timeridtime(), 0);
    
IPS_SetEventActive($timeridtrue);    //Ereignis aktivieren
   
}
}


?>
Mit Zitat antworten
  #2 (permalink)  
Alt 25.07.10, 20:41
Benutzerbild von wgreipl
Moderator
 
Registriert seit: Aug 2005
Ort: Fürstenfeldbruck-Aich (Bayern)
Beiträge: 2,694
Standard

Hallo mäc,

schreib doch mal bmwm3 (Uwe) an, dem hatte ich einmal die Timer-Shutter-Skript mit Enocean ergänzt. Er kann es Dir sicherlich durchreichen und wenn alles gut geht mußt Du nur die passende UUID dazu eintragen (das Teil mit der elend langen Zahlen-Buchstaben-Kombo).
__________________
Gruß
Werner

Homematic(CCU), EATON-MOELLER, 1-Wire, FS20, WMRS200, 15" Touchdisplay, ChromoFlexRCIII, LMS 7.7.x, WMRS200
IPS V2.5, iFrontMobil, WebFront, MySQLDUG-Tools, IPS-Server: i5-750, 8GB, SBS2008
Mit Zitat antworten
  #3 (permalink)  
Alt 26.07.10, 10:09
Benutzerbild von bmwm3
Senior Member
 
Registriert seit: Jul 2006
Ort: Butzbach, die schöne Wetterau
Beiträge: 1,037
Standard

Na dann,

PHP-Code:
<?
//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 */

switch($IPS_SENDER)
{

case 
"ShutterControl"//Script wurde vom Shuttermodul aufgerufen

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($runningfalse);
          }
          break;
         case 
SC_DIRECTION_UP:
          if(!
GetValue($running))
          {
              
FS20_SwitchMode($SC_INSTANCEtrue);
              
SetValue($runningtrue);
          }
          if(
$SC_DURATION 999)
          {
                    
TimerDelay($SC_INSTANCE$SC_DURATION"FS20U");
          }
          if(
$SC_DURATION and $SC_DURATION <=999)
          {
                    
IPS_Sleep($SC_DURATION);
              
FS20_SwitchMode($SC_INSTANCEtrue);
              
SetValue($runningfalse);
          }
          break;
         case 
SC_DIRECTION_DOWN:
          if(!
GetValue($running))
          {
              
FS20_SwitchMode($SC_INSTANCEfalse);
              
SetValue($runningtrue);
          }
          if(
$SC_DURATION 999)
          {
              
TimerDelay($SC_INSTANCE$SC_DURATION"FS20D");
          }
          if(
$SC_DURATION and $SC_DURATION <=999)
          {
              
IPS_Sleep($SC_DURATION);
              
FS20_SwitchMode($SC_INSTANCEfalse);
              
SetValue($runningfalse);
          }
          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 999)
          {
              
TimerDelay($SC_INSTANCE$SC_DURATION"XCOM");
          }
          if(
$SC_DURATION and $SC_DURATION <= 999)
          {
              
IPS_Sleep($SC_DURATION);
              
MXC_ShutterStop($SC_INSTANCE);
          }
          break;
         case 
SC_DIRECTION_DOWN:
          
MXC_ShutterMoveDown($SC_INSTANCE);
          if(
$SC_DURATION 999)
          {
              
TimerDelay($SC_INSTANCE$SC_DURATION"XCOM");
          }
          if(
$SC_DURATION and $SC_DURATION <= 999)
          {
              
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 999)
              {
              
TimerDelay($SC_INSTANCE$SC_DURATION"LCNA");
              }
              if(
$SC_DURATION and $SC_DURATION <= 999)
              {
              
IPS_Sleep($SC_DURATION);
              
LCN_SetIntensity($SC_INSTANCE,0,0);
              }
              break;
             case 
SC_DIRECTION_DOWN:
              
LCN_SetIntensity($SC_INSTANCE2,100,4);
              if(
$SC_DURATION 999)
              {
             
TimerDelay($SC_INSTANCE2$SC_DURATION"LCNA");
              }
              if(
$SC_DURATION and $SC_DURATION <= 999)
              {
              
IPS_Sleep($SC_DURATION);
              
LCN_SetIntensity($SC_INSTANCE2,0,0);
              }
              break;
              }
          break;

          case 
2//Relais
          
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 999)
              {
                    
TimerDelay($SC_INSTANCE$SC_DURATION"LCNR");
                }
                if(
$SC_DURATION and $SC_DURATION <= 999)
              {
              
IPS_Sleep($SC_DURATION);
              
LCN_SwitchRelay($SC_INSTANCEfalse);
              }
              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 999)
              {
                  
TimerDelay($SC_INSTANCE$SC_DURATION"LCNR");
              }
              if(
$SC_DURATION and $SC_DURATION <= 999)
              {
              
IPS_Sleep($SC_DURATION);
              
LCN_SwitchRelay($SC_INSTANCEfalse);
              }
              break;
              }
          break;
            }
          break;
  case 
"{9317CC5B-4E1D-4440-AF3A-5CC7FB42CCAA}"//1-Wire Shutter
      
switch($SC_DIRECTION)
      {
         case 
SC_DIRECTION_STOP:
           
OneWireShutter($SC_INSTANCE0$SC_DURATION);
          break;
         case 
SC_DIRECTION_UP:
           if(
$SC_DURATION == 0)
             
$SC_DURATION 120000;
           
OneWireShutter($SC_INSTANCE0$SC_DURATION);
          break;
         case 
SC_DIRECTION_DOWN:
           if(
$SC_DURATION == 0)
             
$SC_DURATION 120000;
           
OneWireShutter($SC_INSTANCE1$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 999)
          {
              
TimerDelay($SC_INSTANCE$SC_DURATION"HOME");
          }
          if(
$SC_DURATION and $SC_DURATION <=999)
          {
              
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 999)
          {
              
TimerDelay($SC_INSTANCE$SC_DURATION"HOME");
          }
          if(
$SC_DURATION and $SC_DURATION <=999)
          {
              
IPS_Sleep($SC_DURATION);
              
HM_WriteValueBoolean($SC_INSTANCE"STOP"true);
          }
           break;
      }
    break;
case 
"{8492CEAF-ED62-4634-8A2F-B09A7CEDDE5B}"//enocean
      
$running CreateVariableByName($SC_INSTANCE"Moving"0);
      
$value GetValue(IPS_GetStatusVariableID($SC_INSTANCE"StatusVariable"));
      switch(
$SC_DIRECTION)
      {
         case 
SC_DIRECTION_STOP:
          if(
GetValue($running))
          {
              
ENO_SwitchMode($SC_INSTANCE$value);
              
SetValue($runningfalse);
          }
          break;
         case 
SC_DIRECTION_UP:
          if(!
GetValue($running))
          {
              
ENO_SwitchMode($SC_INSTANCEtrue);
              
SetValue($runningtrue);
          }
          if(
$SC_DURATION 999)
          {
                    
TimerDelay($SC_INSTANCE$SC_DURATION"ENOU");
          }
          if(
$SC_DURATION and $SC_DURATION <=999)
          {
                    
IPS_Sleep($SC_DURATION);
              
ENO_SwitchMode($SC_INSTANCEtrue);
              
SetValue($runningfalse);
          }
          break;
         case 
SC_DIRECTION_DOWN:
          if(!
GetValue($running))
          {
              
ENO_SwitchMode($SC_INSTANCEfalse);
              
SetValue($runningtrue);
          }
          if(
$SC_DURATION 999)
          {
              
TimerDelay($SC_INSTANCE$SC_DURATION"ENOD");
          }
          if(
$SC_DURATION and $SC_DURATION <=999)
          {
              
IPS_Sleep($SC_DURATION);
              
ENO_SwitchMode($SC_INSTANCEfalse);
              
SetValue($runningfalse);
          }
          break;
      }
    break;
  default:
    die(
"No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
break;

case 
"TimerEvent"//Script wurde von einem Ereignis aufgerufen

IPS_SetEventActive($IPS_EVENTfalse);    //Ereignis deaktivieren
$timer=IPS_GetName($IPS_EVENT);
$SCT_INSTANCE intval(substr($timer,-5,5));
$bus substr($timer,0,-5);

    switch (
$bus)
    {
    case 
"LCNA":
    
LCN_SetIntensity($SCT_INSTANCE,0,0);
    break;

    case 
"LCNR":
    
LCN_SwitchRelay($SCT_INSTANCE,false);
    break;

    case 
"XCOM":
    
MXC_ShutterStop($SCT_INSTANCE);
    break;

    case 
"HOME":
    
HM_WriteValueBoolean($SCT_INSTANCE"STOP"true);
    break;

    case 
"FS20U":
    
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
        
FS20_SwitchMode($SCT_INSTANCEtrue);
       
SetValue($runningfalse);
    break;

    case 
"FS20D":
    
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
       
FS20_SwitchMode($SCT_INSTANCEfalse);
      
SetValue($runningfalse);
    break;

    case 
"ENOU":
    
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
        
ENO_SwitchMode($SCT_INSTANCEtrue);
       
SetValue($runningfalse);
    break;

    case 
"ENOD":
    
$running CreateVariableByName($SCT_INSTANCE"Moving"0);
       
ENO_SwitchMode($SCT_INSTANCEfalse);
      
SetValue($runningfalse);
    break;
    }



break;
}


function 
OneWireShutter($ins$dir$sec) {
   @
TMEX_F29_SetStrobe($insTrue);
   
$res = ($dir 128) + ($sec 1000);
   @
TMEX_F29_SetPort((integer)$ins, (integer)$res);
}

function 
TimerDelay($id$time$bus) {
    global 
$IPS_SELF;
    
$sekunden=intval(substr($time0,-3));
   
$msekunden=substr($time, -33);
   
$timerid IPS_GetObjectIDByName($bus.$id$IPS_SELF);
    if (
$timerid ==0)
    {
    
$newtimer IPS_CreateEvent(1);
   
IPS_SetEventScript($newtimer$IPS_SELF); //Aktuelles Skript aufrufen
   
IPS_SetName($newtimer$bus.$id);
   
IPS_Sleep(intval($msekunden));
   
IPS_SetEventCyclic($newtimer00001$sekunden);
    
IPS_SetEventCyclicDateBounds($newtimer00);
    
IPS_SetEventCyclicTimeBounds($newtimertime(), 0);
    
IPS_SetEventActive($newtimertrue);    //Ereignis aktivieren
   
}
   else
   {
   
IPS_Sleep(intval($msekunden));
   
IPS_SetEventCyclic($timerid00001$sekunden);
    
IPS_SetEventCyclicDateBounds($timerid00);
    
IPS_SetEventCyclicTimeBounds($timeridtime(), 0);
    
IPS_SetEventActive($timeridtrue);    //Ereignis aktivieren
   
}
}

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;
}





?>
und wie Werner schon sagt, die passende UUID ändern.
__________________
Gruß Uwe

Hausautomations-BLOG auf LiveSpaces

<a href=http://edip2008.spaces.live.com/default.aspx?mkt=de-DE&partner=Live.Spaces target=_blank><font color=DarkOrange>Hausautomations-BLOG auf LiveSpaces</font></a>
Mit Zitat antworten
  #4 (permalink)  
Alt 20.08.10, 11:10
Senior Member
 
Registriert seit: Apr 2010
Beiträge: 225
Standard

so nach langer zeit mal wieder eine Rückmeldung. leider ohne wirkliche erfolge.

wenn ich dein script nutze funktioniert erstmal nichts. denn die Zeile mit dem IPS_PARENT ist nicht drin. Somit setzt er die Timer nicht an das Script.

Also geändert und weiter. Es fährt nichts. Das liegt aber an meinen Eltakos, da die interessanter weise wie die Stromstoss Schalter und Dimmer irgendwie genau verkehrt herum funktionieren wie IPS das gerne hätte. Also habe ich überall die Ansteuerung in ENO_SWITCHMODE getauscht.

So die Rolladen fahren nun so wie sie sollen, aber wie eingangs auch die Variablen werden nicht aktualisiert und ich bekomme den gleichen Fehler wieder wie im ersten Post. Diesmal andere Zeilennummer evtl. wegen IPS 2.3

ErrorLevel E_WARNING - ErrorCode 2 - File D:/Programme/IP-Symcon/webfront/data/ips.php - Line 438

Hat noch einer ne Idee?
Mit Zitat antworten
  #5 (permalink)  
Alt 21.08.10, 13:52
Benutzerbild von bmwm3
Senior Member
 
Registriert seit: Jul 2006
Ort: Butzbach, die schöne Wetterau
Beiträge: 1,037
Standard

Hy, das verstehe ich nicht. Also mal als erstes, was hast Du für Rolloaktoren von Eltako? meine sind auch von Eltako als Reiheneinbaugeräte für die Hutschiene. Verstehe es nicht falsch, aber erkläre mal wie Du dann vorgegangen bist um das alles in IPS zu realiesieren.
__________________
Gruß Uwe

Hausautomations-BLOG auf LiveSpaces

<a href=http://edip2008.spaces.live.com/default.aspx?mkt=de-DE&partner=Live.Spaces target=_blank><font color=DarkOrange>Hausautomations-BLOG auf LiveSpaces</font></a>
Mit Zitat antworten
  #6 (permalink)  
Alt 21.08.10, 18:20
Senior Member
 
Registriert seit: Apr 2010
Beiträge: 225
Standard

Ich hab auch Eltako Hutschiene in diesem Fall die FSB12. Dafür habe ich vorort Richtungstaster. Also einen Impuls für Hoch und einen für Runter.

In IPS habe ich dann einen RCM100 auf den FSB12 eingelernt. Und an dieser stelle meine ich konnte ich einlernen was ich wollte, ein AN führte meine ich immer zu einem runterfahren der Rolläden. Folglich ein AUS zu einem Hochfahren. Während der Fahrt kann mi der jeweiligen Richtung wieder angehalten werden.

Der Shutter ist in der ersten Sendeinstanz mit dem RCM100 verbunden und mit dem Shutterscript.

Wenn ich das original Shutterscript nehme ist die Steuerung Vertauscht. Egal was ich mache. Daher habe ich im Script die Ansteuerung von Rauf und Runter getauscht. Was auch zu dem gewünschten Ergebnis führt. So dass die Shutterinstanz korrekt den Rolladen bedient.

Generell hab ich bis dato kein Problem mit dem Script welches das Sleep enthält. Nun hab ich aber das Timerscript genommen und dort analog meines ersten vorgehens die ENO Richtung gedreht. Die Steuerung klappt, bis auf diesen merkwürdigen Fehler.
__________________
16x FUD12NPN, 4x FSB12-12VDC, 15x FSA12-12VDC, 11x FTS12EM-UC, 1x FSU12D-12VCD, 1x FAM12RS232, 1x FA250, BSC-BOR und IPS natürlich
Mit Zitat antworten
  #7 (permalink)  
Alt 22.08.10, 11:11
Benutzerbild von bmwm3
Senior Member
 
Registriert seit: Jul 2006
Ort: Butzbach, die schöne Wetterau
Beiträge: 1,037
Standard

Hm, habe genau das selbe System. Und deine Einstellung sind auch korrekt. Habe diese probleme aber nicht. Und vertauscht ist bei mir auch nichts. Da fällt mir leider nichts zu ein.
__________________
Gruß Uwe

Hausautomations-BLOG auf LiveSpaces

<a href=http://edip2008.spaces.live.com/default.aspx?mkt=de-DE&partner=Live.Spaces target=_blank><font color=DarkOrange>Hausautomations-BLOG auf LiveSpaces</font></a>
Mit Zitat antworten
  #8 (permalink)  
Alt 22.08.10, 11:48
Senior Member
 
Registriert seit: Apr 2010
Beiträge: 225
Standard

Dank dir Uwe. Dachte das "umgekehrt" sein, wäre normal da bei mir alle Stromstoss Schalter ebenfalls invertiert sind.

Generell könnte ich noch auf der Klemme die Motoransteuerung vertauschen.

Sorgen macht mir ja nur die Fehlermeldung im Webfront. Ich denke durch die wird die Variable auch nicht geupdated. Hatte gehofft das vom IPS Team einer mitliest und mir sagen kann was im ips.php Script genau angemeckert wird.
__________________
16x FUD12NPN, 4x FSB12-12VDC, 15x FSA12-12VDC, 11x FTS12EM-UC, 1x FSU12D-12VCD, 1x FAM12RS232, 1x FA250, BSC-BOR und IPS natürlich
Mit Zitat antworten
  #9 (permalink)  
Alt 29.08.10, 12:28
Benutzerbild von reblade
Senior Member
 
Registriert seit: Apr 2008
Ort: Heilbronn / Neckar
Beiträge: 156
Question

hi @ all
habe euren thread aufmerksam durch gelesen, aber was ich nicht verstehe, was soll dieser Timer bewirken?
habe FS20 RST im Einsatz kann ich von dieser Änderung im Script profitieren?
__________________
Gruß reblade
Mit Zitat antworten
  #10 (permalink)  
Alt 29.08.10, 12:38
Benutzerbild von wgreipl
Moderator
 
Registriert seit: Aug 2005
Ort: Fürstenfeldbruck-Aich (Bayern)
Beiträge: 2,694
Standard

Hallo reblade,

das ShutterControlScript mit Timer hat den Vorteil das das Skript nicht die volle Laufzeit des Aktors die Console und einen Thread blockiert.

Auch wird dir der Status des Zielwertes sofort in der Variable (Webfront) angezeigt und führt nicht aus versehen zu mehrfach Klicks im Webfront.
__________________
Gruß
Werner

Homematic(CCU), EATON-MOELLER, 1-Wire, FS20, WMRS200, 15" Touchdisplay, ChromoFlexRCIII, LMS 7.7.x, WMRS200
IPS V2.5, iFrontMobil, WebFront, MySQLDUG-Tools, IPS-Server: i5-750, 8GB, SBS2008
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Shutter Control und Timer und V2.2 snoopymad Scripte, PHP, SQL 6 15.10.11 22:03
Rolladenaktoren - Shutter Control metzench HomeMatic 51 18.07.11 20:52
Shutter Control Skript mit Timer aktualisiert Position nicht + WebFront ErrorCode 2 CGastager Scripte, PHP, SQL 8 30.03.10 21:40
Timer in Module (Kernel.TimerPoolEx.SetInterval) huelke IP-Symcon SDK/Beispiele/Diskussion 4 10.09.09 02:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0