1 Taster verschieden Funktionen ?

Hallo Zusammen,

bei mir stellt sich folgendes Problem:

Ich habe im Tür Bereich des Wohnzimmers noch einen Taster am Binäreingang frei.
Diesen wollte ich für 2 Lichtquellen auf der gegenüberliegenden Schrankwand verwenden.

Dabei habe ich mir das folgender Maßen vorgestellt:

Taster kurz (oder 1 mal) gedrückt -> Lampe 1 an, Taster länger (oder 2.tes mal kurz) gedrückt -> Lampe 2 an, Taster noch länger (oder 3.tes mal kurz) gedrückt -> beide Lampen an.

Dieses müßte sich allerdings in einem vertretbaren Zeitraum abspielen, zum einen da nach Ablauf einer definierten Zeit, der Taster ja die Lampen auch wieder ausschalten soll, und zum anderen um dem WAF gerecht zu werden.

Leider sind meine Skript Kenntnisse nicht so besonders und ich weiß überhaubt nicht, wie ich das Anfangen soll.

Hat jemand evtl. etwas vergleichbares im Einsatz, oder kann einen Tip geben wie so etwas aufgebaut sein muß ?

Viele Grüße

Olaf

Das hängt erstmal davon ab was für ein System du einsetzt und ob man damit die Tastendrucklänge ermitteln kann.

Bei mehrfachdrücken musst du davon ausgehen, dass du eine Verzögerung einbauen musst. Nach dem ersten Tastendruck muss IPS ja noch warten ob ein zweiter folgt. Solange geht natürlich das Licht nicht an. Das würd mich ja stören.

Toni

Hallo zusammen,

hab es hinbekommen, sogar ohne Zeitliche Wartezeiten beim Schalten.

@Torro, Danke dein Tip Gestern Abend hat den richtigen Denkanstoß gegeben.

Falls jemand ein Vergleichbares Einsatzgebiet hat, werde ich den Ablauf hier kurz Beschreiben und den Code einfügen.

Es wird eine Globale Variable und 2 Scripte benötigt:

-Das erste Script wird auf das Tasterereignis True gestartet.
-Beim Betätigen des Tasters wird jeweils die Variable um 1 hochgesetzt.
-Über einen Timer das zweite Script verzögert gestartet. (Nach Ablauf der Zeit, schaltet der Taster bei der nächsten Betätigung immer beide Lampen aus).
-Mit den 4 verschiedenen Variablenwerten werden die Lampen wie folgt geschaltet:
1 - Lampe 1 ein.
2 - Lampe 1 aus und Lampe 2 an.
3 - Lampe 1 ein und Lampe 2 bleibt an.
4 - Lampe 1 aus und Lampe 2 aus.

Script 1

$i = getvalue (29688 /*[Wohnzimmer\Scripte\Zähler Wandbeleuchtung]*/ );                                  // Globale Variable auslesen und in interne Variable übergeben.
      if (10243   == True) { 																										// Wenn Taster betätigt wird.
		   $i = ($i + 1);       																										// interne Variable um 1 hochzählen.
			setvalue (29688 /*[Wohnzimmer\Scripte\Zähler Wandbeleuchtung]*/  ,$i); 									// Neuen Wert in Globale Variable zurück schreiben.
         IPS_SetScriptTimer(42365 /*[Wohnzimmer\Scripte\Wohnwand Statusvariable auf 3 setzen]*/ ,10);  	// Timer für Rückstellungs Script setzen.
          If ($i == 1) {    																										// Wenn interne Variable gleich 1 ist.
			 MXC_SwitchMode(38661 /*[Wohnzimmer\xComfort Switch Lampen Schrank]*/ ,True);   						// Schranklampe 1 einschalten.
			 }
			 If ($i == 2) {  																											// Wenn interne Variable gleich 2 ist.
			 MXC_SwitchMode(38661 /*[Wohnzimmer\xComfort Switch Lampen Schrank]*/ ,False);  						// Schranklampe 1 ausschalten.
			 mxc_switchmode(34267 /*[Wohnzimmer\xComfort Switch Lampen Wand]*/  , True);    						// Schranklampe 2 einschalten.
			 }
			 If ($i == 3) {    																										// Wenn interne Variable gleich 3 ist.
			 MXC_SwitchMode(38661 /*[Wohnzimmer\xComfort Switch Lampen Schrank]*/ ,True);   						// Schranklampe 1 einschalten.
			 }
			 If ($i == 4) {                                                                                 // Wenn interne Variable gleich 4 ist.
			 MXC_SwitchMode(38661 /*[Wohnzimmer\xComfort Switch Lampen Schrank]*/ ,False);                  // Schranklampe 1 ausschalten
			 mxc_switchmode(34267 /*[Wohnzimmer\xComfort Switch Lampen Wand]*/  , False);                   // Schranklampe 2 ausschalten
             IPS_SetScriptTimer(42365 /*[Wohnzimmer\Scripte\Wohnwand Statusvariable auf 3 setzen]*/ ,0);  	// Timer für Rückstellungs Script ausschalten.
			 setvalue (29688 /*[Wohnzimmer\Scripte\Zähler Wandbeleuchtung]*/  ,0);                          // Globale Variable auf 0 setzen
			 }
      }

Script 2

 setvalue (29688 /*[Wohnzimmer\Scripte\Zähler Wandbeleuchtung]*/  ,3);                          //Globale Variable auf 3 setzen.
 IPS_SetScriptTimer(42365 /*[Wohnzimmer\Scripte\Wohnwand Statusvariable auf 3 setzen]*/ ,0);    //Timer auf 0 setzen.

Falls jemanden ein Fehler auffällt. oder einen einfacheren Weg sieht, bitte posten, da ich kein PHP Spezi bin, bin ich für jede Hilfe dankbar.

PS.: @Toni, habe hier Moeller Binäreingang und Schaltaktor.

Viele Grüße

Olaf