Lichtprogramm

Hallo Gemeinde,

über die suche habe ich leider nichts passendes gefunden :frowning:

Ich versuche gerade folgendes zu realisieren:

Ich hätte gerne sagen wir mal 5 Lichtstimmungen, die nacheinander ablaufen…dazwischen eine definierte wartezeit (1-5 minuten, bis die nächste Lichtstimmung kommt)…nach Lichtstimmung 5 soll wieder die 1 kommen und das soll bis in alle tage laufen, bis ich den teufelskreis unterbreche…

Mein Lösungsansatz war deletantisch und führte zum abschalten unseres Stromnetzes in unserer Siedlung…
(Na ja…leicht übertrieben :))

Ich schrieb ein script, zwischen den Lichtstimmungen setzte ich ein IPS_Sleep(5000)

Das kopierte ich, bis ich eine minute hatte…leider kam die fehlermeldung, das script läft nun schon seit über 30 sekunden, und da müsse ja was faul sein…wars auch…meine PHP Kentnisse :slight_smile:

nach 25 sekunden ließ ich ein 2. script starten, und dieses startete am ende ein 3. script und so weiter…

Nur habe ich mich nicht getraut, ein loopback auf das erste script zu machen…also 3. script startet wieder 1. Script…
Ich hatte befürchtet, ich baue mir eine Schleife, aus der ich nie wieder herauskomme :slight_smile:

Aber abschalten möchte ich den Teufelskreis dann schon irgendwann…am liebesten mit einem Schalter in Webfront…Lichtprogramm „AN“ Lichtprogramm „AUS“

Ich denke mein beschriebener Weg hat sehr viel Kopfschütteln und Mitleid erzeugt…also…HILFE bitte :slight_smile:

Wie geht es besser und einfacher ? :slight_smile:

Liebe Grüße und danke für die Hilfe
Sascha

Hallo Sascha,

ich würde eine Variable anlegen und folgende Assoziationen derauflegen:
0 = stop
1 = Lichtszene 1
2 = Lichtszene 2
usw.

Dann ein Script anlegen und abfragen, ob das Script über die Variable oder über einen Timer angestossen wird (siehe Handbuch Systemvariable).
Dann noch einen Script-Timer anlegen, der die Zeit bis zum nächsten Wechsel steuert…

Wird das Programm über den Timer gestartet, dann die Variable auslesen, über eine Select/case-Anweisung das entsprechende Licht einschalten, die Variable um 1 erhöhen, bei Überschreiten des MAX-Wertes auf 1 setzen, den Timer neu starten, ende.

Wird das PGM über die Variable gestartet auf 0 abfragen und bei true den Script-Timer stoppen und ggf. das Licht ausschalten. Bei >0 weiter wie oben.

Wenn noch Fragen sind…

Gruß, Peter

Hallo Peter,

oops…das klingt alles total logisch :slight_smile:

ähem…meinst du, du könntest ein kleines beispiel in form eines scripts zeigen ?

2-3 Lichtstimmungen sollten ja reichen…den rest bekomme ich sicher erweitert…

sorry…meine PHP skills sind noch unter aller sau…aber mit beispielen kann ich zumindestens meine gewünschten scripte schreiben…nur so aus dem „nichts“ heraus fällt es mir sehr schwer…

Vielen Lieben Dank für deine Antwort schonmal :slight_smile:

Gruß
Sascha

Hallo Sascha,

selber versuchen schult natürlich:)
Hab mal ungetestet was runtergeschrieben:

//******************************************************************************
// Lichtsteuerung
//******************************************************************************

$id_nr   = 33652 /*[Testraum\Lichtsteuerung\Szene]*/;   // hieer deine Variable eintragen
$nr_max  = 2;  // Anzahl Lichtszenen
$time    = 5;  // Dauer in Minuten

IF ($_IPS['SENDER'] == "TimerEvent")
{
	$nr = GetValueInteger($id_nr);
	$nr2 = $nr+1;
	IF($nr2 > $nr_max) $nr2 = 1;
	SetValueInteger($id_nr, $nr2);
}

IF ($_IPS['SENDER'] == "WebFront")
{
	SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]); // Variable aktualisieren
	$nr		= $_IPS["VALUE"];    					// Inhalt der Variablen
}

switch ($nr)
{
	case 0:				// abschalten
		IPS_SetScriptTimer($_IPS['SELF'], 0);  // Timer stoppen
      // Licht ausschalten ????
	break;

	case 1:           // 1. Licht
	   IPS_SetScriptTimer($_IPS['SELF'], $time*60); // Timer starten
	   // Licht schalten
	break;

	case 2:           // 2. Licht
	   IPS_SetScriptTimer($_IPS['SELF'], $time*60); // Timer starten
	   // Licht schalten
	break;
}


Also das Script kopieren,
die Variable mit den Assoziationen anlegen und das Script bei „eigene Aktion“ eintragen.

Dann die Variable ins Webfront und von dort aus starten bzw. stoppen.

Gruß, Peter

Hallo Peter,

vielen lieben Dank…es funktioniert super.

Und ich werde dir die Tage auch zeigen, das ich nicht nur faul ein script von dir kopiert habe :slight_smile:
Momentan bastel ich daran…ist noch nicht fertig, aber für mich sind das schon große Schritte.

Ich versuche mich gerade daran, die Überblendzeit, die wartezeit zwischen den Stimmungen und die Gesamthelligkeit des Programms über das Webfront zu beeinflussen.

Im Script geht das schon jetzt…Jetzt versuche ich gerade herauszufinden, wie ich eine Zahl aus dem Script, im Webfront angezeigt bekomme. Also allá „Fadezeit = 3 Sekunden“

Aber das probiere ich mal selber :slight_smile:
Irgendwo hier im Forum hat das bestimmt schonmal einer gefragt.

Ich zeige dir dann die Tage mal „unser“ Script hier im Forum :slight_smile:

Liebe Grüße und vielen Dank
Sascha

Hallo Sascha,

freu mich, dass ich dir helfen konnte.
Auf das Endergebnis bin ich gespannt, da ich sowas wahrscheinlich demnächst auch brauchen kann.

Gruß, Peter