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

<?

// 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($running, false);
}
break;
case SC_DIRECTION_UP:
if(!GetValue($running))
	{
	ENO_SwitchMode($SC_INSTANCE, $SC_MODULE_UP);
	SetValue($running, true);
}
if($SC_DURATION > 0 and $SC_DURATION <= 999)
{
	echo "90 - 999 up";
	IPS_Sleep($SC_DURATION);
	ENO_SwitchMode($SC_INSTANCE, $SC_MODULE_UP);
	SetValue($running, false);
}
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($running, true);
	}
	if($SC_DURATION > 0 and $SC_DURATION <= 999)
	{
	   echo "0 - 999 down";
		IPS_Sleep($SC_DURATION);
		ENO_SwitchMode($SC_INSTANCE, $SC_MODULE_DOWN);
		SetValue($running, false);
	}
	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_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;
default:
die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
break;

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

IPS_SetEventActive($IPS_EVENT, false);    //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($running, false);
		$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($running, false);
		$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_INSTANCE, true);
       SetValue($running, false);
    break;

    case "FS20D":
    $running = CreateVariableByName($SCT_INSTANCE, "Moving", 0);
       FS20_SwitchMode($SCT_INSTANCE, false);
      SetValue($running, false);
    break;

    }

break;
}

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

function TimerDelay($id, $time, $bus) {
    global $IPS_SELF;
    $sekunden=intval(substr($time, 0,-3));
   $msekunden=substr($time, -3, 3);
   $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($newtimer, 0, 0, 0, 0, 1, $sekunden);
    IPS_SetEventCyclicDateBounds($newtimer, 0, 0);
    IPS_SetEventCyclicTimeBounds($newtimer, time(), 0);
    IPS_SetEventActive($newtimer, true);    //Ereignis aktivieren
   }
   else
   {
   IPS_Sleep(intval($msekunden));
   IPS_SetEventCyclic($timerid, 0, 0, 0, 0, 1, $sekunden);
    IPS_SetEventCyclicDateBounds($timerid, 0, 0);
    IPS_SetEventCyclicTimeBounds($timerid, time(), 0);
    IPS_SetEventActive($timerid, true);    //Ereignis aktivieren
   }
}


?>

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).

Na dann,

<?
//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($running, false);
          }
          break;
         case SC_DIRECTION_UP:
          if(!GetValue($running))
          {
              FS20_SwitchMode($SC_INSTANCE, true);
              SetValue($running, true);
          }
          if($SC_DURATION > 999)
          {
                    TimerDelay($SC_INSTANCE, $SC_DURATION, "FS20U");
          }
          if($SC_DURATION > 0 and $SC_DURATION <=999)
          {
                    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 > 999)
          {
              TimerDelay($SC_INSTANCE, $SC_DURATION, "FS20D");
          }
          if($SC_DURATION > 0 and $SC_DURATION <=999)
          {
              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 > 999)
          {
              TimerDelay($SC_INSTANCE, $SC_DURATION, "XCOM");
          }
          if($SC_DURATION > 0 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 > 0 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 > 0 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 > 0 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 > 0 and $SC_DURATION <= 999)
              {
              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 > 999)
              {
                  TimerDelay($SC_INSTANCE, $SC_DURATION, "LCNR");
              }
              if($SC_DURATION > 0 and $SC_DURATION <= 999)
              {
              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 > 999)
          {
              TimerDelay($SC_INSTANCE, $SC_DURATION, "HOME");
          }
          if($SC_DURATION > 0 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 > 0 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($running, false);
          }
          break;
         case SC_DIRECTION_UP:
          if(!GetValue($running))
          {
              ENO_SwitchMode($SC_INSTANCE, true);
              SetValue($running, true);
          }
          if($SC_DURATION > 999)
          {
                    TimerDelay($SC_INSTANCE, $SC_DURATION, "ENOU");
          }
          if($SC_DURATION > 0 and $SC_DURATION <=999)
          {
                    IPS_Sleep($SC_DURATION);
              ENO_SwitchMode($SC_INSTANCE, true);
              SetValue($running, false);
          }
          break;
         case SC_DIRECTION_DOWN:
          if(!GetValue($running))
          {
              ENO_SwitchMode($SC_INSTANCE, false);
              SetValue($running, true);
          }
          if($SC_DURATION > 999)
          {
              TimerDelay($SC_INSTANCE, $SC_DURATION, "ENOD");
          }
          if($SC_DURATION > 0 and $SC_DURATION <=999)
          {
              IPS_Sleep($SC_DURATION);
              ENO_SwitchMode($SC_INSTANCE, false);
              SetValue($running, false);
          }
          break;
      }
    break;
  default:
    die("No Handler for Module ".$instance['ModuleInfo']['ModuleName']." found");
}
break;

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

IPS_SetEventActive($IPS_EVENT, false);    //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_INSTANCE, true);
       SetValue($running, false);
    break;

    case "FS20D":
    $running = CreateVariableByName($SCT_INSTANCE, "Moving", 0);
       FS20_SwitchMode($SCT_INSTANCE, false);
      SetValue($running, false);
    break;

    case "ENOU":
    $running = CreateVariableByName($SCT_INSTANCE, "Moving", 0);
        ENO_SwitchMode($SCT_INSTANCE, true);
       SetValue($running, false);
    break;

    case "ENOD":
    $running = CreateVariableByName($SCT_INSTANCE, "Moving", 0);
       ENO_SwitchMode($SCT_INSTANCE, false);
      SetValue($running, false);
    break;
    }



break;
}


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

function TimerDelay($id, $time, $bus) {
    global $IPS_SELF;
    $sekunden=intval(substr($time, 0,-3));
   $msekunden=substr($time, -3, 3);
   $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($newtimer, 0, 0, 0, 0, 1, $sekunden);
    IPS_SetEventCyclicDateBounds($newtimer, 0, 0);
    IPS_SetEventCyclicTimeBounds($newtimer, time(), 0);
    IPS_SetEventActive($newtimer, true);    //Ereignis aktivieren
   }
   else
   {
   IPS_Sleep(intval($msekunden));
   IPS_SetEventCyclic($timerid, 0, 0, 0, 0, 1, $sekunden);
    IPS_SetEventCyclicDateBounds($timerid, 0, 0);
    IPS_SetEventCyclicTimeBounds($timerid, time(), 0);
    IPS_SetEventActive($timerid, true);    //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.

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?

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.

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.

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.

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.

hi @ all
habe euren thread aufmerksam durch gelesen, aber was ich nicht verstehe, was soll dieser Timer bewirken?:confused:
habe FS20 RST im Einsatz kann ich von dieser Änderung im Script profitieren?

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.

ahh super na dann rein mit :stuck_out_tongue: sollte vieleicht mal mit in die Doku aufgenommen werden;)

reblade, welche Doku meinst Du, die von IPS? da hat es m.E. nichts zu suchen da die Erweiterungen im Timer-Skript nicht vom IPS-Team sondern eines Users sind.

achso…mhhh ok , dachte nur da es ja eine sinnvolle Erweiterung ist.:smiley:

Hi wgreipl,
leider hab ich nun folgenden fehler:
s. Screen 1 & 2

&

Ich hab das Script kopiert und zentral (Handler Script)abgelegt. s. Screen3
handler script.JPG
und dem Rolladen Aktor (FS20 RST) zugewiesen.
wollte mein IPS ein wenig aufräumen, gem der Doku kann man ja dieses Script mehrmals zuweisen.
:frowning:

eine Idee

Hallo reblade,

das sind Warnmeldungen, läuft den der Rollladen-Aktor?

Ich nutze das Skript mit xComfort-Shutter, andere erfolgreich mit Eltako-Enocean-Aktoren und mit meinem früheren FS20-MST ging es auch.

Gibt den das Logfile bzw. die Consolenmeldungen mehr Informationen her?

also ich bin auch noch nicht weiter. Ich habe die selbe Warnmeldung. Desweiteren wird die Position nicht aktualisiert.

Im Log steht nichts auffälliges und Meldungen gibt es nicht. In der Doku steht ja auch, dass der Shutter keine ausgaben machen soll, da dies als Fehler angesehen wird. Das habe ich ebenfalls beherzigt.

na dann sind wir schon zu zweit :wink:

ich weiss nicht wie aber ein Rolladen funktioniert !

Dieses war immer mein Rolladen zum ausprobieren. Ich habe schon einiges ausprobiert. Rechner neustart, IPS Neustart.
Aber auch habe ich dem Shutterscript das Script neu zu gewiesen und noch mal die Daten übernommen. Ich denke eines der letzten beiden Aktionen, scheint dies zu heilen.

Ich versuche das gleich mal mit nem weiteren.

Aktualisierung: Also bei mir hilf es, wenn ich das Script neu zuweise, dann den „AUF“ und anschließend den „STOP“ Button gedrückt hab. Ggf. hab ich die Variablenwerte noch korrigiert, falls diese nicht dem wirklichen Rolladenstand entsprochen haben.

Sehr merkwürdiges Verhalten.

super ja teste mal und sag bitte bescheid…kann nicht mehr testen mein haus schläft schon :stuck_out_tongue:

Aktualisierung: Also bei mir hilf es, wenn ich das Script neu zuweise, dann den „AUF“ und anschließend den „STOP“ Button gedrückt hab. Ggf. hab ich die Variablenwerte noch korrigiert, falls diese nicht dem wirklichen Rolladenstand entsprochen haben.

Sehr merkwürdiges Verhalten.

mit anderen worten du hast die Rollläden neu einjustiert?