Allgemeine Verständnisfrage zu Dimmer Script

Hallo!

Ich spiele gerade mit dem Testscript herum. Im speziellen mit dem Dimmer-Script, welches irgendwie nicht so wirklich funktioniert. Entweder es dimmt zu 100% hoch und lässt sich nicht stoppen, oder es reagiert überhaupt nicht und lässt sich nicht mehr abdimmen. So wirklich bin ich noch nicht dahintergestiegen…

Mir ist aufgefallen, dass beim Drücken des Test_Taster_1 die beiden Scripts Dimmen_heller und Dimmen_dunkler angeworfen werden und dort irgendwie abgefragt wird, welches Script zuletzt gelaufen ist !?

Warum kann man das nur so umständlich realisieren? Wenn ich die FB-Tasten drücken kommen doch die Meldungen ON, OFF, Dim Up, Dim Down. Über die Instancen kann ich aber nur eine Boolean-Var zuweisen die dann True oder False beinhaltet. Den Status Dim_Up oder Dim_Down kann ich nicht auslesen, da die Instance keine String-Variablen zulässt!? Warum ist das so?

-Wolfgang

Wolfgang,

Das wird etwas anders angefasst:
Catmax hat da mal ein schönes beitrag geschrieben:

Aber dimmen ist nicht gerade das einfachste um mit rum zu spielen…

Besser noch mal gleich den ganzen thread verweisen:
http://www.ip-symcon.de/forum/showthread.php?t=936&highlight=dimmer+data
unten stehen beispiel scripte

PS: ich habe gesuht im forum unter ‚dimmer‘ und ‚data‘ weil in data die bewegung up/down steht, aber nicht als string sondern als ciffer.

Danke, da steht tatsächlich viel interessantes zu dem Thema, vor allem auch wie ich das Dim up/down auswerten kann! :smiley:

Hab mir jetzt ein Dimmerscript gebastelt, welches folgende Funktionen zur Verfügung stellt:

1x kurz drücken - Lampe voll auf oder abdimmen
lang drücken - es wird rauf / runtergedimmt, geht man von der FB-Taste runter, beginnt ein Timeout von 2 Sekunden. Nach diesen 2 Sekunden wird beim langen Drücken der Taste in die andere Richtung weiter gedimmt.

Vielleicht kanns ja wer brauchen, 4 Variablen werden dazu in IPS benötigt (sind im Script angeführt)

Das Script ist sicher nicht perfekt, aber bei mir klappts ganz gut :smiley:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Lampe_Dimmen.ips.php
Trigger  : Dimmer1_Data   (OnUpdate)
Interval : 

Benötigt 4 IPS-Variablen
Dimmer1_Value, Integer - Gedimmter Wert (1-16)
Dimmer1_UP, Boolean - aktuelle Dimmrichtung (Rauf/Runter)
Dimmer1_ON, Boolean - Lampe ist gedimmt oder aus
Dimmer1_Data, Integer - 18 wenn FB-Taste kurz gedrückt, 21 wenn länger gedrückt
*/

$Di1 = 64414;   // Nummer der zu dimmende Lampe in der IPS Instanz

$D1Value = GetValueInteger("Dimmer1_Value");
$D1UP = GetValueBoolean("Dimmer1_UP");
$D1Data = GetValueInteger("Dimmer1_Data");

if ($D1Value > 0) SetValueBoolean("Dimmer1_On", True);  // Lampe gedimmt oder aus?
else SetValueBoolean("Dimmer1_On", False);

$D1On = GetValueBoolean("Dimmer1_On");

if($IPS_SENDER == "TimerEvent") {          // Wird nach rauf oder runterdimmen aufgerufen
     SetValueBoolean("Dimmer1_UP",!$D1UP); // Nach 2 Sekunden invertieren
     IPS_SetScriptTimer($IPS_SELF,0);      // Script nicht mehr aufrufen
}
else if(($IPS_SENDER == "Variable") or ($IPS_SENDER == "Designer"))
{
 if ($D1Data <> 21) {   // Taster nur kurz gedrückt
  if (!$D1On) {         // Lampe voll hochfahren
     FS20_SetIntensity($Di1, 16, 5);
     SetValueBoolean("Dimmer1_On", True);
     SetValueInteger("Dimmer1_Value", 16);
     SetValueBoolean("Dimmer1_UP",True);
  }
  else {               // Lampe herunterfahren
     FS20_SetIntensity($Di1, 0, 5);
     SetValueBoolean("Dimmer1_On", False);
     SetValueBoolean("Dimmer1_UP",False);
     SetValueInteger("Dimmer1_Value", 0);
  }
 }
 if ($D1Data == 21) {   // Taster wurde länger gedrückt
   if ($D1UP) {         // Runterdimmen
      $divalue = $D1Value - 1;
      if ($divalue <= 0) {
         $divalue = 0;
         SetValueBoolean("Dimmer1_UP",False);
      }
      FS20_SetIntensity($Di1, $divalue, 0);
      SetValueInteger("Dimmer1_Value",$divalue);
   }
   else {               // Raufdimmen
      $divalue = $D1Value + 1;
      if ($divalue >= 16) {
         $divalue = 16;
         SetValueBoolean("Dimmer1_UP",True);
      }
      FS20_SetIntensity($Di1, $divalue, 0);
      SetValueInteger("Dimmer1_Value",$divalue);
   }
   IPS_SetScriptTimer($IPS_SELF,2);
 }
}

?>

Grüße,
Wolfgang

Danke fur’s bereit stellen vom fertiges script

Habe jetzt dieses schöne script übernommen leider macht es noch nichtz bei mir warscheinlich habe ich was übersehen muss ich noch einen Timer anlegen ?? oder noch ins skript irgendwas eintragen oder ändern ???

Instance-ID u. Trigger d. FB-Taste fallen mir da so spontan ein.

Die ID habe ich geändert wie mache ich das mit dem Trigger ??:confused:

Ja irgend etwas wird wohl das Script ausführen müssen, oder?

Das wird dann wohl das Drücken der Fernbedienung sein. Das wiederum ist mit einer Variablen verknüpft, die das Script triggert. Der Inhalt der Variablen bestimmt dann den weitern Verlauf im Script. Steht oben in der Kopfzeile im Script. In diesem Fall ist das die Variable „Dimmer1_Data“.
Wie du diese in deiner Instance genannt hast, weisst allerdings nur du selber…

Doc

//edit
wie du ein Script „onUpdate“ triggern kannst weisst du doch schon, sonst benutz mal die Wiki.
//edit ende

Also die habe ich schon eben eingegeben
Bei Script Events und dann dort bei OnUpdate habe bei WOHN_DIMMER1_DATA so heist sie bei mir angegeben aber es passiert immer noch nichtz

Hast du denn die Taste deiner Fernbedienung mit der Variablen bei der Instance verknüpft?

ja habe ich mit ankoppeln

Leider komme ich nicht so recht mit der erklärung des Triggerns aus dem wiki klar triggern auf ne min is mir klar aber wei is das bei sekunden mache is mir schleierhaft
Bitte noch mal um hilfe

Verstehe deine Frage nicht. Der Trigger wird doch immer in Sekunden angegeben und 60 Sek. sind dann eine Minute.

Doc

Wenn du 60 da einträgst, dann hast du doch 1 Minute ! :confused: :confused:

mfG Franz

Hallo,

danke für das Bereitstellen des Skriptes!

Nur, was mich ein wenig wundert ist, warum dieses Skript? Ich meine, ich habe viele Dimmer im Haus, und meine machen das auch genau so, wie du es mit Skript steuerst, nur ich brauch dazu kein Skript.
Ich tippe den Taster, Lampe geht an/aus, langes drücken wird gedimmt, rauf/runter.

:confused: :confused:

mfG Franz

Werden bei dir die Dimmstufen auch angezeigt ?? bei mir klappt das zwar auch is ja mogo habe den dimmer direckt auf die schalter programmiert nur sehe ich dann in der IP-sym keine enderungen wie hoch der dimmer eingestellt is nur an und aus

Das ist klar, da gebe ich dir Recht. Die Dimmer geben leider keinen Status ab, deshalb geht das nicht!
Leider ist es aber auch so, dass die einfache Variante auch läuft, wenn IPS abgeschaltet ist, die Skript Variante jedoch nicht !

mfG Franz

Wie is denn das mit MITLAUSCHEN klapt das denn nicht ??
und wenn wie ??