Fehlermeldung Shutter-Control Skript

Ich muss sagen wenn man nicht regelmäßig was in IPS macht kommt man total raus .

Ich habe seit Langen das Problem das meine Rollladen nicht mehr laufen. Ich weiß nicht mehr genau seit wann ich kann nur sagen ich habe nix verändert nur immer die Updates gemacht. Glaube es war nach dem Umstieg von IPS 4 auf 5.

Nun dachte ich ich versuche es einfach mal hin zu bekommen, aber ohne Erfolg.

Ich habe ein Fehler im Arbeisskript, kann mir jemand sagen was ich da machen kann ?
Screenshot_94.png


hier ist mein Arbeitsskript :

<?

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

    }



break;
}


function OneWireShutter($ins, $dir, $sec) {
   @OW_F29_SetStrobe($ins, True);
   $res = ($dir * 128) + ($sec / 1000);
   @OW_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); //alt Aktuelles Skript aufrufen
   IPS_SetParent($newtimer, $IPS_SELF); //ab V2_1 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;
}

?>

Bin auch nur Laie, aber:
Wahrscheinlich hast Du das Script per Console selbst gestartet, dann kommt die Fehlermeldung.
Das Shuttercontrolmodul darf dieses Script aufrufen, dann gibt es auch diese Meldung nicht.
Gruß Helmut
PS über FS20 läuft der Motor?

Ich würde mal sagen, Du brauchst die „neue“ Schreibweise für $IPS_SENDER in Zeile 8.

$_IPS['SENDER']

Attain

meinst du so ??

switch $_IPS['SENDER'] 

bekomme aber dann diesen Fehler:

Parse error: syntax error, unexpected ‚$_IPS‘ (T_VARIABLE), expecting ‚(‘ in C:\ProgramData\Symcon\scripts\23560.ips.php on line 8
Abort Processing during Fatal-Error: syntax error, unexpected ‚$_IPS‘ (T_VARIABLE), expecting ‚(‘
Error in Script C:\ProgramData\Symcon\scripts\23560.ips.php on Line 8

switch ($_IPS['SENDER']) 

So.

geht leider immer noch nicht, bekomme jetzt ein Rotes Ausrufezeichen https://screencast-o-matic.com/watch/cYQu6Jd5cr

Dann schlägt bei der Ausführung irgend etwas fehl. In den Mitteilungen findest du sicherlich eine Meldung, die genaueres liefert.

vielen dank erst mal für eure Hilfe !!!

so das ist die Meldung

und das das Script dazu, ich muss sagen ich benutze nur Homematic Aktoren

Schau doch in der Doku vom Shutter Control legacy nach, ist ein aktuelles Skript.
https://www.symcon.de/service/dokumentation/modulreferenz/shutter-control-legacy/

$SC_DIRECTION ist auch veraltet.
Das war es aber alles schon zur 3.x.
Das belegt, das du nie die Migrationsanleitungen gelesen hast :smiley:
Michael

$SC_DIRECTION ist auch veraltet.
Das war es aber alles schon zur 3.x.
Das belegt, das du nie die Migrationsanleitungen gelesen hast :smiley:
Michael[/QUOTE]

da hast du sicher recht, das ich nicht alles Nachlese

Ist auch eine Sache die mich stört bei IPS das man sehr oft Sachen umschreiben muss bei neuen Versionen.

Ich glaube ich hätte IPS schon aufgeben würde es nicht dieses Tolle Forum geben wo man immer Hilfe bekommt

Ich habe es wieder mal hin bekommen mit euer Hilfe Danke !!!