Jalousien hoch/runter + Position anfahren in einer Zeile

Hi,

ich habe eben meinen ABB Jalousieaktor darauf eingestellt, dass dieser die Lamellen meiner Jalousien auf eine exakte Position fahren kann. Dazu habe ich beim KNX Shutter Device die „prozentuale Positionierung“ aktiviert und meine Gruppenadresse dort eingetragen:

Im Objektbaum erscheint nun bei meiner Jalousie (Wintergarten genannt) neben „Status“ und „Aktion“ noch „Position“.
„Aktion“ und „Position“ habe ich nun als Link in ein Dummy Device genannt „Rolladen“ (ganz oben im Bild) geschoben.

Nun möchte ich die Jalousie nicht zwei Mal in der Liste haben. Gerne möchte ich das wie folgt in einer Zeile haben:

Geschlossen, 25%, 50%, 75%, Offen
Bei Geschlossen und Offen soll er mir die Gruppenadresse für Auf/Ab aufrufen und bei den %-Werten die Gruppenadresse für die Positionierung der Lamellen.

Ist sowas nicht möglich?

Grüße Fiziks

Das kannst mit einer Hilfsvariable, einem Aktionsskript und einem Variablenprofil machen.
Quasie bei öffnen/schließen die Jalou fahren und bei 25%,50% und 75% nur den Winkel der Lamelle übergeben und die Fahrt stoppen.
Gruß,
Peter

Gesendet von iPhone mit Tapatalk

Verstehe ich das richtig?

Eine Variable vom Typ Integer anlegen und dann mein eigenes PHP Skript schreiben? Dann kann ich darin selbst festlegen was bei welchem Eingabewert passiert. Doch wie übergibt man in ein PHP Skript Eingabewerte?

Ich glaube ich hab es so in etwa verstanden:

Ich habe mir ein neues Variablenprofil angelegt:

und das folgende Skript erstellt:

<?

define("SHUTTER_DIRECTION_STOP", 0);
define("SHUTTER_DIRECTION_UP"  , 1);
define("SHUTTER_DIRECTION_DOWN", 2);
define("SHUTTER_POSITION_15"   , 3);
define("SHUTTER_POSITION_30"   , 4);
define("SHUTTER_POSITION_50"   , 5);
define("SHUTTER_POSITION_65"   , 6);
define("SHUTTER_POSITION_75"   , 7);

switch($_IPS['VALUE'])
{
  case SC_DIRECTION_STOP:
   EIB_Move(13827 /*[Sonnenschutz\Wintergarten]*/, 2);

  break;

  case SC_DIRECTION_UP:
   EIB_Move(13827 /*[Sonnenschutz\Wintergarten]*/, 0);
  break;

  case SC_DIRECTION_DOWN:
	EIB_Move(13827 /*[Sonnenschutz\Wintergarten]*/, 4);
  break;

  case SHUTTER_POSITION_15:
   EIB_Position(13827, 15);
  break;

  case SHUTTER_POSITION_30:
   EIB_Position(13827, 30);
  break;

  case SHUTTER_POSITION_50:
   EIB_Position(13827, 50);
  break;

  case SHUTTER_POSITION_65:
   EIB_Position(13827, 65);
  break;

  case SHUTTER_POSITION_75:
   EIB_Position(13827, 75);
  break;

  default:

}
?>

Was ich allerdings nicht verstehe, wenn ich mit Befehl hinzufügen diesen Befehl hinzufüge:

EIB_Move(13827 /[Sonnenschutz\Wintergarten]/, 2);

woher dann der zweite Parameter kommt?. Denn trägt er mir automatisch ein, wenn ich den entsprechenden Befehl in dem Wizard auswähle.

Was mir ebenfalls unklar ist, wieso geht der Move an die ID13827? Ich hätte hier ein Move an ID40073 (Aktion) mit 0 oder 1 erwartet und für die Lamelle einen Wert zwischen 0 und 255 an ID30190.

Zu deiner letzten Frage mit der ObjektID:
Variablen bilden ‚nur‘ Werte der Hardware ab und haben selbst keine logik/intelligenz.
Diese steckt immer in der Instanz, darum musst du immer die ID der Instanz angeben.

Michael

Sonst kann keiner was dazu sagen?

Wo wird denn festgelegt, was tatsächlich über die Busleitung geht? Der Aktor erwartet ja 0 und 1 bzw. ein 1 Byte Wert. Mir fehlt da ein bisschen der Zusammenhang um die ganze Kette zu verstehen.

Ich versteh gerade das Problem nicht, allerdings dein Skript oben auch nicht.
Das ist doch kein Aktionsskript oder?

Du schickst beim Wert 0 der Integer Variablen ein Telegramm auf die 1bit GA für Auf/Ab. Ob 1 nun Auf und 0 Ab lässt sich ja raus finden.
Bei Wer 1 der Integer-Varablen einen Prozentwert auf die Positionierung GA.
Ich würde die Shutter-Instanz dazu komplett ignorieren.
Gruß,
Peter

Gesendet von iPhone mit Tapatalk

Wenn du unter Aktionsskript das gleiche verstehst wie ich, dann schon :slight_smile: Falls ich dich mißverstanden haben sollte, dann klär mich bitte auf. Ich habe ein PHP Skript dafür angelegt und das mit dem Code den du unten siehst gefüllt. Du hast übrigens recht mit meinem Skript. Ich hatte einen Copy/Paste Fehler drin. Nun sieht es so aus:

<?

define("SHUTTER_DIRECTION_STOP", 0);
define("SHUTTER_DIRECTION_UP"  , 1);
define("SHUTTER_DIRECTION_DOWN", 2);
define("SHUTTER_POSITION_15"   , 3);
define("SHUTTER_POSITION_30"   , 4);
define("SHUTTER_POSITION_50"   , 5);
define("SHUTTER_POSITION_65"   , 6);
define("SHUTTER_POSITION_75"   , 7);

switch($_IPS['VALUE'])
{
  case SHUTTER_DIRECTION_STOP:
   EIB_Move(13827 /*[Sonnenschutz\Wintergarten]*/, 2);

  break;

  case SHUTTER_DIRECTION_UP:
   EIB_Move(13827 /*[Sonnenschutz\Wintergarten]*/, 0);
  break;

  case SHUTTER_DIRECTION_DOWN:
	EIB_Move(13827 /*[Sonnenschutz\Wintergarten]*/, 4);
  break;

  case SHUTTER_POSITION_15:
   EIB_Position(13827 /*[Sonnenschutz\Wintergarten]*/, 15);
  break;

  case SHUTTER_POSITION_30:
   EIB_Position(13827 /*[Sonnenschutz\Wintergarten]*/, 30);
  break;

  case SHUTTER_POSITION_50:
   EIB_Position(13827 /*[Sonnenschutz\Wintergarten]*/, 50);
  break;

  case SHUTTER_POSITION_65:
   EIB_Position(13827 /*[Sonnenschutz\Wintergarten]*/, 65);
  break;

  case SHUTTER_POSITION_75:
   EIB_Position(13827 /*[Sonnenschutz\Wintergarten]*/, 75);
  break;

  default:

}
?>


Mit $_IPS[‚VALUE‘] nehme ich den Wert an den ich im Variablenprofil (siehe Bild von Comment 4) angelegt habe. Durch die Switch/Case Anweisung verzweige ich dann auf den entsprechenden Zweig in dem ich eben die Lamellen mit nem Byte ansteuer oder eben ne 0 oder 1 um den kompletten Behang hoch und runter zu fahren. Ich verstehe allerdings immer noch nicht wie der Zusammenhang zwischen meiner ObjectID und den Gruppenadressen ist…

Es funktioniert nun so wie ich möchte, allerdings bekomme ich das hier noch:

Wenn ich geklickt habe und das Skript ausgeführt wurde, dann bekomme ich die Meldung „Fehler“ ohne weitere Info. Muss ich das Skript mit einem Befehl sauber beenden oder was hat er hier für ein Problem?

Auf jeden Fall vielen Dank an die Tippgeber. Es funktioniert, jedoch würde ich auch gerne genau verstehen warum :smiley:

Vermutlich ein Leerzeichen oder Zeilenumbruch vor oder nach < oder >.

MfG
Ralf

Da hat der Skriptersteller vor oder hinter die <? ?> ein Leerzeichen gemacht :wink:

Gruß
Bruno

Ja, das hat er :smiley: Danke für die schnelle Rückmeldung. Die Grundfunktionalität ist mal da.

Vor kurzem kam ein ein Update, das ich installiert habe.
Danach zeigte die Beschattungsautomatik en sonderbares Verhalten.
Jetzt stelle ich fest, dass die im Objektbaum hinterlegten Instanzen nicht mehr im KNX-Configurator zugeordnet sind.
Gab es da irgendwelche Änderungen???