Über Schalter Skript starten

Hallo Gemeinde,

ich habe ein kleines Problem und hoffe auf eure Unterstützung.

Ich versuche mit einem EIB Schalter ein Skript zu starten. An dem Schalter hängt kein Ausgang oder ähnliches. Im ETS habe ich zwei GA angelegt wo einmal der Schalter Ein/Aus drin liegt und in der zweiten GA liegt der Zustand für die LED am Schalter. Dann habe ich eine Instanz angelegt wie bei den andern Schaltern auch die ohne Probleme Funktionieren.
Wenn ich jetzt den Schalter betätige ändert sich die Variable in IPS versuche ich aber im WF oder über die Instanz den Schalter zu betätigen ändert sich die Variable vom Schalter nicht. Ich habe auch versucht mit Hilfe einen Scrip
( EIB_Switch (12345, true); zu ändern. Leider auch erfolglos. Im ETS Monitor kommt der Befehl an. kann aber nicht zugeordnet werden
Ich vermute mal es liegt daran das im ETS kein Ausgang mit dem Schalter verbunden ist.
Wie bekomme ich es jetzt hin das im WF den Schalter betätigen kann bzw. das sich die Variable vom Schalter ändert.

Vielen Dank schon mal für eure Unterstützung

MFG
TEAS

Hi TEAS,

ich weis nicht ob ich dich richtig verstanden habe und ich weis auch nicht was du machen möchtest wenn du den Schalter betätigst wenn kein Ausgang zugeordnet ist…

Aber in IPS ist das bei mir so geregelt, wenn im WF ein Befehl an ein KNX Gerät gesendet wird ist das der erste Vorgang. Die Änderung der Variable wird dann von einer Rückmeldung des geschaltenen Geräts ausgelößt (über eine 2. Variable). Dazu wird bei der KNX INstanz eine weitere GA (Rückmeldeobjekt) angegeben.

Wenn es kein Gerät gibt (wie in deinem Fall), kann die Änderung der Variable über ein Skript ausgelöst werden. Das hat dann mit KNX im ersten moment nichts zu tun. Deshalb legst du in IPS aber keine KNX Instanz an, sondern nur eine Variable mit Boolean. Du ordnest der Variable dann das Profil ~Switch zu und bei „Eigene Aktion“ wählst du ein Skript aus, das legst du vorher mit folgendem Inhalt an:


<?

SetValue($IPS_VARIABLE,$IPS_VALUE);

?>

Somit wird im Webfront der gleiche Schalter wie bei einer KNX Instanz angezeigt, beim schalten des Schalters wird die Variable aktualisiert. In diesem Skript könntest bei Bedarf dann entsprechende Aktionen auslösen. Z.B. ein KNX Gerät einschalten wo es keinen KNX Schalter dazu gibt…

Ich hoffe das hilft dir weiter. Aber mit der Systematik steht dir im KNX Bereich alles offen. Da ich nur KNX habe ist fast alles auf diesen beiden Wegen geregelt…

Gruß helhau

Hi helau,

vielen Dank für deine Antwort, aber leider habe ich deine Ausführung nicht ganz verstanden.

Den Schalter den ich dort habe soll nur ein Skript ausführen, z.B. wenn der Taster gedrückt wird wenn ich ins Bett gehe. Das Skript sollen dann noch mal die Fenster im EG überprüfen ob sie geschlossen sind, überall Lichtausschalten bis auf Flurlicht was dann ca noch 3 min nachleuchtet soll und noch div. andere Dinge.
Ich kann halt nur den Schalter vom WF aus nicht aktivieren.
Kannst du vielleicht mal einen Screenshot machen?

MFG
Teas

Hi Teas…

… helau hat Dir die Antwort schon gegeben. Um eine Variable in Webfront / iFront schaltbar zu machen musst Du ein Skript mit diesen Inhalt erstellen und als Aktionsskript in der Variable ( im Variablenprofil ganz unten ) auswählen.

<? 

SetValue($IPS_VARIABLE,$IPS_VALUE); 

?>

Du kannst dieses Skript auch beliebig oft für andere Variablen verwenden…also 1x anlegen und für viele Variablen nutzen, indem Du es bei den Variablen die im Webfront geschaltet werden sollen als Aktionsscript auswählst.

Ich verstehe allerdings noch nicht ganz was Du ereichen willst und wofür die 2 Gruppenadressen sein sollen?
Willst Du dein Skript auch per KNX-Taster auslösen können?

Gruß,
Peter

Hi Teas,

was du genau möchtest ist mir auch nicht klar.

  1. Fall: Wenn du dem Schalter im WF jetzt irgendwelche Aktionen zuweisen möchtest, dann ergänzt du diese Funktionen in unserem angegebenen Skript mit der einen Zeile.

Z.B.


SetValue($IPS_VARIABLE,$IPS_VALUE);   //Schaltet im WF den Schalter um 
EIB_Switch(12345, true); //Schaltet das KNX Gerät-Instanz mit der Nummer 12345 ein

Voraussetzung du hast schon alle Lampen… in IPS als KNX-Geräte angelegt und damit kannst du bereits einzeln alle Lichter steuen. Ich gehe mal davon aus!

  1. Fall:
    Wenn du jetzt am Bett einen echten KNX Schalter hast, dann programierst du in der ETS z.B. auf Taste 1 eine Gruppenadresse z.B. 1/1/1 mit der Funktion Ein/Aus. Diese Gruppenadresse ist sonst aber in ETS nirgends zugeordnet, also keinem Aktor. In IPS legst du jetzt eine KNX-Instanz mit der GA 1/1/1 mit der Funktion switch an.
    Jetzt wird bei jedem Tastendruck die GA 1/1/1 von IPS empfangen und die Variable in IPS aktualisiert.
    Über ein Ereignis, kannst du jetzt bei Variablenaktualisierung wiederum dein voriges skript starten das alles ausschaltet.

So gehe ich auch ins Bett, kurz danach kommt das das Frauchen auch weil der Fernseher dann auch aus ist :wink:

Hi Peter,
Hi helhau,

vielen Dank für eure Ausführungen und Lösungsansätze und Sorry für das Verspätete melden. Ich habe es mit eurer Hilfe nun wie folgt hin bekommen.
Als erste habe ich eine Variable „Boolen“ angelegt die eine Schalter im WF darstellt. Dann habe ich ein Skript angelegt was wie folgt aus sieht:

// Variable "skript aktiv" auf true setzten
SetValue (58401 /*[Sonstiges\Makros\Ins Bett gehen\Merker für Skript aktiv]*/,true);

// Stuffenlicht einschalten
EIB_Switch (18748 /*[Licht\Lampen\Treppen Stuffenlicht]*/, true);

// Start Ausschaltverzögerung Flurlicht
IPS_RunScript (51888 /*[Sonstiges\Makros\Ins Bett gehen\Ausschaltverzögerung]*/);

// Status LED am Schalter einschalten
EIB_Switch (13670 /*[Sonstiges\Makros\Ins Bett gehen\Ins Bett Zustand]*/, true);

//-------------------------------------------------------------------------
//ab hier was alles ausgeschaltet werden soll
//-------------------------------------------------------------------------

// Licht in der Küche ausschalten
EIB_Switch (26927 /*[Licht\Lampen\Küche Sockellicht]*/,false);
EIB_Switch (11689 /*[Licht\Lampen\Küche Licht Arbeitsplatte]*/,false);

// Licht Wohnzimmer ausschalten
EIB_Switch (45498 /*[Licht\Lampen\Wohnen Steckdosen]*/,false);
EIB_Switch (35435 /*[Licht\Lampen\Wohnen 1 Ein/Aus]*/,false);
EIB_Switch (53163 /*[Licht\Lampen\Wohnen 2 Ein/Aus]*/,false);

// Licht im HWR ausschalten
EIB_Switch (25031 /*[Licht\Lampen\HWR Licht 1]*/,false);

// Licht im Büro
Eib_Switch (15718 /*[Licht\Lampen\Büro Licht Ein/Aus]*/,false);

// Licht WC
EIB_Switch (24376 /*[Licht\Lampen\Gäste WC]*/,false);

// Terrassenlicht
EIB_Switch (34764 /*[Licht\Lampen\Aussenlicht Terrasse]*/, false);

Dieses Skript wird bei Variablen Änderung vom KNX-Schalter und bei Variable Änderung vom WF Schalter auf „true“ ausgeführt.

Dann habe ich noch ein zweites Skript erstellt wo dann einige Lampen mit Verzögerung ausgeschaltet werden und gleichzeitig auch der Schalter für das Wf auch wieder ausgeschaltet wird. Bis jetzt funktioniert alles einbandfrei.

if ($IPS_SENDER == "TimerEvent")
 {
   //Timer ausschalten
    IPS_SetScriptTimer($IPS_SELF, 0);
    
    //Stuffenlicht ausschalten
    EIB_Switch (18748 /*[Licht\Lampen\Treppen Stuffenlicht]*/, FALSE);
    // Merker für Skrip Aktiv aus
    SetValueBoolean (58401 /*[Sonstiges\Makros\Ins Bett gehen\Merker für Skript aktiv]*/, false);
    // Status LED am Schalter auschalten
    EIB_Switch (13670 /*[Sonstiges\Makros\Ins Bett gehen\Ins Bett Zustand]*/, false);

    } else {

    //Timer anschalten
    IPS_SetScriptTimer($IPS_SELF,120);
}


Zu der Frage warum eine zweite GA. Die zweite GA ist wür eine Zustanandanzeige am Schalter. Ich habe das Hager Schaltersystem im Einsatz wo an jedem Taster eien LED ist wo mit mir der Zustand angezeigt werden kann. Z.b. rot =aus und grün= an.
Gruß
TEAS

Hi Teas,

schön dass es funktioniert. Das sieht auch so richtig gut aus…

Ich wollte noch ein Tipp loswerden… In deinem Fall gehen ja in kürzester Zeit relativ viele EIB Telegramme über den Bus, solltest du mal Probleme haben, das irgendwelche Lampen nicht ausgehen… gibts eine weitere Möglichkeit. Ich habe für die Situation „alles aus“ eine eigene GA angelegt. Diese dann in der ETS allen Aktoren (Geräte) die ausgehen sollen zugeordnet (also zusätzlich zu den normalen Zuodnungen). Diese dann auch auf den Taster am Bett gelegt… und in IPS auch dann nur eine Instanz für diese GA angelegt.

Somit kannst du zum einen dann ohne IPS (falls mal der Server nicht verfügbar sein sollte) trotzdem alles ausschalten, denn das Bussystem arbeitet ja alleine. Und in IPS (bzw. WF) hast dann nur einen Befehl EIB_Swisch abzusetzen mit dieser einen GA. Nur sondersituationen wie z.B. dienen Timer, der wird dann noch zusätzlich in IPS gesteuert…

Gruß helhau

Hi helhau,
vielen Dank für den Tip. Daran habe ich auch schon gedacht eine GA anzulegen und alles über die GA aus zu schalten. Werde ich wahrscheinlich auch noch so machen. Ich werde aber das Auslösen trotzdem über IPS machen da ich dem ersten Skript noch eine Zeit Funktion verpasst habe. Diese Funktion soll nur aktiv sein, wenn die Uhrzeit zwischen 19 und 3 Uhr ist ab 4 bis 12 soll der Taster dann eine Andere Funktion haben.

Das wäre vieleicht mal ein anderes Thema aber interessieren würde mich aber auch wie weit man welche Funktionen über IPS steuert oder welche Funktionen man von ETS machen lässt. Die Grundfunktionen ist mir klar alles über IPS Steuern. Aber wie sieht z.B. mit einem Bewegungssensor aus ? Zur Zeit habe ich meine Bewegungsmelder über den Bus laufen bin aber am überlegen ob ich die nicht über IPS Steuern soll. Ich habe nämlich das Problem wenn ich die Außenlampe mit einem Schalter einschalte und der Bewegungssensor eine Kurze Bewegung registriert, der Bewegungsmelder mir die Außenlampe wieder ausschaltet. Das ist dumm wenn man noch auf der Terrasse sitzt.
Hast du da vieleicht noch einen Tipp für mich ?

Gruß
TEAS

Moin…
… ich bin mir sicher das Dein BM ein „Sperrobjekt“ besitzt. Schau mal in der ETS nach. Damit kann Ihn über eine GA deaktivieren.
Gruß,
Peter

Der Peter war zwar schneller und genau das ist das Stichwort: Sperrobjekt bzw. Zwangsführung, so heist das bei meinen Bewegungsmelder. Der Name des Objekts in den ETS Parametern ins externer Schalter. Dieses Objekt bekommt dann eine eigene GA. Auf diese GA legst dann deinen Externen Schalter. Dann wird dein Licht-Aktor sozusagen in 2 Stufen geschalten. Der Schalter gibt dem Bewegungsmelder den Ein Befehl. Und der Bewegungsmelder dann dem Aktor den Befehl. Dabei wird dann die Bewegungserkennung deaktiviert. Bis du wieder mit dem Schalter ein Aus sendets.

Übrigens ist es dann auch ggf Sinnvoll in IPS das Sperrobjekt anzusprechen und nicht den Licht Aktor direkt. Je nachdem was man eben möchte.

Ich hoffe mal das alle gängigen KNX Bewegungsmelder das können. Aber da habe ich schon einiges erlebt und führende Marken können oft die einfachsten Dinge nicht!!

Gruß Helmut