KNX/EIB Wie fange ich am besten an

Habe mich entschlossen mir IPS anzusehen.
jetz mal ein paar fragen zum verständnis:

  1. Kann ich aus der ETS gruppenadressen exportieren und in IPS importieren wenn ja wie ?

2.Gibt es irgendwo ein gutes howto ? für mich ist das ganze im moment etwas verwirrend habs sehr wohl geschaft licht zu schalten oder zu dimmen, jedoch versteh ich im moment nicht ganz wie das mit dem dashboard funktioniert wo muss ich das skript anlegen um im dashbord was schalten zu können. welches script brauche ich um einen einfachen toggle zu machen wie binde ich es ein ,…

Ich weiss das das alles mal viel ist aber villeicht gibt es ja jemanden der schon mit IPS und KNX erfahrung hat und mich unterstützen könnte.

Hallo Ajax!
Alle Adressen auf einmal einfügen geht nicht- ging früher mal.

Also:
Eine KNX Instanz mit der richtigen Gruppenadresse erstellen, testweise schalten sollte dann schon funktionieren.

(im Objectbaum der Verwaltungsconsole)-Struktur:
Kategorie erstellen (z.B.)
Obergeschoß
Büro
Ein Script erstellen:

EIB_Switch(31948 /*[Obergeschoß\Buero\Deckenlampe]*/,!GetValueBoolean("Buero_Licht"));

(Die 31948 durch deine ID ersetzen).

Einen Button im Dashboard einfügen.
Nach Doppelcklick auf den Button:
On Clickereignis dein script angeben.

Noch fragen:)
Egon

Danke siehst genau das hat mir gefehlt der Gedankenanstoss.

Hast du evtl auch eine lösung für das shutter modul.

Leider fehlt der punkt EIB bei Doku ja gänzlich.

Hi, so läuft das bei mir. Wollte da aber nochmal was dran ändern. Neuere Eib-Aktoren haben manchmal die Möglichkeit direkt eine Position anzugeben.
Gruß Imho

    case "{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}": //EIB Group optimized 4 Busch-Jaeger (6195/10 6196/40 6196/41)
      switch($SC_DIRECTION)
      {
         case SC_DIRECTION_STOP:
         EIB_DriveStep($SC_INSTANCE2, false);
          break;
         case SC_DIRECTION_UP:
          EIB_DriveMove($SC_INSTANCE, true);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
             EIB_DriveStep($SC_INSTANCE2, true);
          }
          break;
         case SC_DIRECTION_DOWN:
          EIB_DriveMove($SC_INSTANCE, false);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
              EIB_DriveStep($SC_INSTANCE2, false);
          }
          break;
      }

edit:
ganz vergessen…
Instanz 1 = up/down
Instanz 2 = Lamellenverstellung, step up/down

Musste in ETS für beides eigene Adressen vergeben.

Also habe Inastance für move angelegt
und Instance 2 für step

hab die entsprechenden gruppenadressen eingetragen

habe deine php code genommen script mit namen jalousie erstellt und den phpcode da rein getan. (so wie beim switch) gespeichert

beim ausfühern des scripts erhalte ich dann:

Parse error: syntax error, unexpected T_CASE in [Obergeschoß\Buero\jalousie] on line 3
wobei Line 3 die erste zeile deines Scripts ist

muss ich auch irgendwo ein shutter hinzufügen oder so ? sorry für die vielen fragen aber denke
das u.u. mehrere dieses problem haben das der eib punkt in der doku fehlt.

hast du evtl eine mustervisu die du mir senden kannst damit ich mir mal das ganze ansehen kann.

offensichtlich ist es so das mir das Modul D62B95D3-0C5E-406E-B1D9-8D102E50F64B fehlt nur wie oder wo bekomme ich es ?

Das Problem hatte ich auch schon und noch keine Lösung dafür. Weiss nicht wo der String herkommt oder wie ich ihn generieren kann…

Gruß epogo / Stephan

Ein Case kann nie ohne Switch stehen.
Deshalb der Fehler.
Ihr braucht noch einen switch Teil

Sieht dann so aus

   
switch($modul_id)
{
case "{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}": //EIB Group optimized 4 Busch-Jaeger (6195/10 6196/40 6196/41)
      switch($SC_DIRECTION)
      {
         case SC_DIRECTION_STOP:
         EIB_DriveStep($SC_INSTANCE2, false);
          break;
         case SC_DIRECTION_UP:
          EIB_DriveMove($SC_INSTANCE, true);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
             EIB_DriveStep($SC_INSTANCE2, true);
          }
          break;
         case SC_DIRECTION_DOWN:
          EIB_DriveMove($SC_INSTANCE, false);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
              EIB_DriveStep($SC_INSTANCE2, false);
          }
          break;
      }  
 }

Da ich zurzeit kein IPS nutze, und nicht mit IPS vertraut bin,
müsst ihr selber herausfinden, in welcher Variable ihr für $modul_id einsetzten müsst.

Oder ihr lasst es einfach weg.


  switch($SC_DIRECTION)
      {
         case SC_DIRECTION_STOP:
         EIB_DriveStep($SC_INSTANCE2, false);
          break;
         case SC_DIRECTION_UP:
          EIB_DriveMove($SC_INSTANCE, true);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
             EIB_DriveStep($SC_INSTANCE2, true);
          }
          break;
         case SC_DIRECTION_DOWN:
          EIB_DriveMove($SC_INSTANCE, false);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
              EIB_DriveStep($SC_INSTANCE2, false);
          }
          break;
     }

Gruß
Tobias

Das was ich da oben gepostet habe ist quasi die Erweiterung für das bisherige Shutter Control Script.

http://www.ip-symcon.de/service/dokumentation/modulreferenz/shutter-control/?type=5

Bin grad nicht @ home. Deshalb keine erklärenden Screenshots.
Meinen Scriptschnipsel einfach im Standartscript zwischen diesen beiden Zeilen einfügen.

    break;  
  default:

Probier das mal aus. Sonst muss ichs nochmal „genauer“ erklären :wink:

okay habs gefunden hab ein sript gemacht und es mit den standart gefütter dein snipsel erweitert.
jalousie fährt nun wenn ich im shuttermodul rauf stop oder runter drücke das einzige was noch ist. be jedem button druck kommt die meldung

Shutter Handler Result:
No Handler for Module EIB Group found.

Shutter Control - IP-Symcon :: Automatisierungssoftware

Hallo Rainer aber was hat es Mit dem eib Handler auf sich.

keiner ne idee ?

Das ist der Modulname von der Eib Group.

einfach mal ausführen.

//Alle Modulnamen mit GUID ausgeben
foreach(IPS_GetModuleList() as $guid)
{
  $module = IPS_GetModule($guid);
  echo $module['ModuleName']." = ".$guid."
";
}

Hast Du denn eine Instanz KNX/EIB angelegt.

ja habe ich anbei screenshoots.
Die Jalousie färt auch nur bekomm ich den fehler
wenn ich dein script aufrufe steht das EIB-Modul auch drinnen

dein Script ist doch ROT makiert. Poste mal dein Script.

<?
//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 "{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}": //EIB Group optimized 4  Busch-Jaeger (6195/10 6196/40 6196/41)
      switch($SC_DIRECTION)
      {
         case SC_DIRECTION_STOP:
         EIB_DriveStep($SC_INSTANCE2, false);
          break;
         case SC_DIRECTION_UP:
          EIB_DriveMove($SC_INSTANCE, true);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
             EIB_DriveStep($SC_INSTANCE2, true);
          }
          break;
         case SC_DIRECTION_DOWN:
          EIB_DriveMove($SC_INSTANCE, false);
          if($SC_DURATION > 0)
          {
              IPS_Sleep($SC_DURATION);
              EIB_DriveStep($SC_INSTANCE2, false);
          }
          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;
}

?>

wenn ich mich nicht versehen habe, müsste über default noch ein break; stehen.

Danke Genau das wars, hab das Break rein und schon klappts mit IPS.

Danke vielmals, jetzt kann ich weiterbasteln an der Visu.

LG aus Österreich

So aber weil ich nicht so einfach zufriedenzustellen bin noch eine Frage.

Das Shuttermodul ist für Rolladen oder Markisse.

Was wenn ich jedoch eine Jalousie (mit Lamelle) habe ?

Dann müsste ja bei stellung 99 % das teil runterfahren und dan einen entsprechenden Step zurück machen damit die Lamelle geöffnet wird.

Hat diese Aufgabe auch schon jemand gelöst ? oder beutzen alle nur Rolläden ?