Aquarium/Terrarium - Sonnenaufang und Sonnenuntergang simulieren

Hallo allerseits,

falls es jemand benötigt oder sich davon etwas abschauen möchte, hier mal meine Skripte zur Simulation von Sonnenaufgang und Sonnenuntergang in meinem Terrarium (getriggert über Astrozeit). Durch die Nutzung eines Timers, dass das Skript immer wieder aufruft, muss das Skript immer nur kurz laufen und muss nicht durchgehend laufen.

Beschreibung am Beispiel Sonnenuntergang:
Die UV-Spots werden abgeschaltet, die T5 Röhren werden langsam dunkler gedimmt und am Ende wird der LED-Sternenhimmel angeschaltet. Zusätzlich wird abgefragt, ob das Terrarium im „Winterruhe-Modus“ (kein Licht) ist.

Sonnenaufgang:

<?
include('LightManager.ips.php');
$t5dimvar = 15679 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\T5 - DimVariable]*/;
$t5statusvar = 24807 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\T5 Röhren An/Aus]*/;
$t5manuellerDim = 35432 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\T5 - Manueller Dim]*/;
$winterruhe = GetValue(49128 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\Winterruhe\Winterruhe]*/);

if ($winterruhe == true) {
	echo "Terrarium ist im Winterruhe-Modus, deshalb kein Sonnenaufgang!";
}
else {

$url17 = "http://127.0.0.1:44322/control?cmd=dim&dl=16&id=22&db0=1&db1=38&db2=17&db3=68&db4=16&db5=0&db6=3&db7=0";  // 100%
$url16 = "http://127.0.0.1:44322/control?cmd=dim&dl=15&id=22&db0=1&db1=38&db2=17&db3=68&db4=15&db5=0&db6=3&db7=0";  // 93%
$url15 = "http://127.0.0.1:44322/control?cmd=dim&dl=14&id=22&db0=1&db1=38&db2=17&db3=68&db4=14&db5=0&db6=3&db7=0";  // 87%
$url14 = "http://127.0.0.1:44322/control?cmd=dim&dl=13&id=22&db0=1&db1=38&db2=17&db3=68&db4=13&db5=0&db6=3&db7=0";  // 81%
$url13 = "http://127.0.0.10:44322/control?cmd=dim&dl=12&id=22&db0=1&db1=38&db2=17&db3=68&db4=12&db5=0&db6=3&db7=0";  // 75%
$url12 = "http://127.0.0.1:44322/control?cmd=dim&dl=11&id=22&db0=1&db1=38&db2=17&db3=68&db4=11&db5=0&db6=3&db7=0";  // 68%
$url11 = "http://127.0.0.1:44322/control?cmd=dim&dl=10&id=22&db0=1&db1=38&db2=17&db3=68&db4=10&db5=0&db6=3&db7=0";  // 62%
$url10 = "http://127.0.0.1:44322/control?cmd=dim&dl=9&id=22&db0=1&db1=38&db2=17&db3=68&db4=9&db5=0&db6=3&db7=0";  // 56%
$url9 = "http://127.0.0.1:44322/control?cmd=dim&dl=8&id=22&db0=1&db1=38&db2=17&db3=68&db4=8&db5=0&db6=3&db7=0";  // 50%
$url8 = "http://127.0.0.1:44322/control?cmd=dim&dl=7&id=22&db0=1&db1=38&db2=17&db3=68&db4=7&db5=0&db6=3&db7=0";  // 43%
$url7 = "http://127.0.0.1:44322/control?cmd=dim&dl=6&id=22&db0=1&db1=38&db2=17&db3=68&db4=6&db5=0&db6=3&db7=0";  // 37%
$url6 = "http://127.0.0.1:44322/control?cmd=dim&dl=5&id=22&db0=1&db1=38&db2=17&db3=68&db4=5&db5=0&db6=3&db7=0";  // 31%
$url5 = "http://127.0.0.1:44322/control?cmd=dim&dl=4&id=22&db0=1&db1=38&db2=17&db3=68&db4=4&db5=0&db6=3&db7=0";  // 25%
$url4 = "http://127.0.0.1:44322/control?cmd=dim&dl=3&id=22&db0=1&db1=38&db2=17&db3=68&db4=3&db5=0&db6=3&db7=0";  // 18%
$url3 = "http://127.0.0.1:44322/control?cmd=dim&dl=2&id=22&db0=1&db1=38&db2=17&db3=68&db4=2&db5=0&db6=3&db7=0";  // 12%
$url2 = "http://127.0.0.1:44322/control?cmd=dim&dl=1&id=22&db0=1&db1=38&db2=17&db3=68&db4=1&db5=0&db6=3&db7=0";  // 6%
$url1 = "http://127.0.0.1:44322/control?cmd=on&id=22&db0=1&db1=38&db2=17&db3=68&db4=17&db5=0&db6=3&db7=0";  // AN
$url0 = "http://127.0.0.1:44322/control?cmd=off&id=22&db0=1&db1=38&db2=17&db3=68&db4=0&db5=0&db6=3&db7=0";  // AUS

$t5dimarray = array($url0, $url1, $url2, $url3, $url4, $url5, $url6, $url7, $url8, $url9, $url10, $url11, $url12, $url13, $url14, $url15, $url16, $url17 );
IPS_SetScriptTimer($IPS_SELF, 74);  // bei einer Helligkeit mehr, alle 74 Sekunden, dauert der Sonnenaufgang ~20 Minuten


if($IPS_SENDER == "TimerEvent")  {

	$t5dimvarX = GetValue($t5dimvar);

	if ($t5dimvarX == 0) {
      $t5dimvarX = $t5dimvarX + 1;
      SetValue($t5dimvar, 1);
      // Manuellen-Dim-Balken auf 0% setzen
      SetValue($t5manuellerDim, 0);
	}

	if ($t5dimvarX == 16) {
		// TimerEvent ausschalten
		IPS_SetScriptTimer($IPS_SELF, 0);
	   // UV-Spots anschalten
	   HM_WriteValueBoolean(23430 /*[Hardware\HomeMatic\Schaltaktor-4fach\SA4x01 (Terrarium)\SA4x01_K2 (UV-Spots)]*/, "STATE", true);
	   // Manuellen-Dim-Balken auf 100% setzen
	   SetValue($t5manuellerDim, 100);
	}
	
	// FS20 EVG Dimmer >> Dim-Wert setzen
	WWWReader_SetPage(52026 /*[WWW Reader (LightManager)]*/,$t5dimarray[$t5dimvarX]);
	IPS_ApplyChanges(52026 /*[WWW Reader (LightManager)]*/);
	WWWReader_UpdatePage(52026 /*[WWW Reader (LightManager)]*/);

	if ($t5dimvarX == 2) {
	   // T5 Röhren anschalten
	   IPS_Sleep(1000);
   	HM_WriteValueBoolean(24268 /*[Hardware\HomeMatic\Schaltaktor-4fach\SA4x01 (Terrarium)\SA4x01_K1 (T5 Röhren)]*/, "STATE", true);
      SetValue($t5statusvar, true);
	}
	
	if ($t5dimvarX == 9) {
	   // Manuellen-Dim-Balken auf 50% setzen
      SetValue($t5manuellerDim, 50);
	}
	
	IPS_Sleep(1000);
	
	if (($t5dimvarX < 16) AND ($t5dimvarX > 0)) {
		$t5dimvarY = $t5dimvarX + 1;
		SetValue($t5dimvar, $t5dimvarY);
	}
}
}

?>

Sonnenuntergang:

<?
include('LightManager.ips.php');
$t5dimvar = 15679 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\T5 - DimVariable]*/;
$t5statusvar = 24807 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\T5 Röhren An/Aus]*/;
$t5manuellerDim = 35432 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\T5 - Manueller Dim]*/;
$winterruhe = GetValue(49128 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\Winterruhe\Winterruhe]*/);

if ($winterruhe == true) {
	echo "Terrarium ist im Winterruhe-Modus, deshalb kein Sonnenuntergang!";
}
else {

$url17 = "http://127.0.0.1:44322/control?cmd=dim&dl=16&id=22&db0=1&db1=38&db2=17&db3=68&db4=16&db5=0&db6=3&db7=0";  // 100%
$url16 = "http://127.0.0.1:44322/control?cmd=dim&dl=15&id=22&db0=1&db1=38&db2=17&db3=68&db4=15&db5=0&db6=3&db7=0";  // 93%
$url15 = "http://127.0.0.1:44322/control?cmd=dim&dl=14&id=22&db0=1&db1=38&db2=17&db3=68&db4=14&db5=0&db6=3&db7=0";  // 87%
$url14 = "http://127.0.0.1:44322/control?cmd=dim&dl=13&id=22&db0=1&db1=38&db2=17&db3=68&db4=13&db5=0&db6=3&db7=0";  // 81%
$url13 = "http://127.0.0.10:44322/control?cmd=dim&dl=12&id=22&db0=1&db1=38&db2=17&db3=68&db4=12&db5=0&db6=3&db7=0";  // 75%
$url12 = "http://127.0.0.1:44322/control?cmd=dim&dl=11&id=22&db0=1&db1=38&db2=17&db3=68&db4=11&db5=0&db6=3&db7=0";  // 68%
$url11 = "http://127.0.0.1:44322/control?cmd=dim&dl=10&id=22&db0=1&db1=38&db2=17&db3=68&db4=10&db5=0&db6=3&db7=0";  // 62%
$url10 = "http://127.0.0.1:44322/control?cmd=dim&dl=9&id=22&db0=1&db1=38&db2=17&db3=68&db4=9&db5=0&db6=3&db7=0";  // 56%
$url9 = "http://127.0.0.1:44322/control?cmd=dim&dl=8&id=22&db0=1&db1=38&db2=17&db3=68&db4=8&db5=0&db6=3&db7=0";  // 50%
$url8 = "http://127.0.0.1:44322/control?cmd=dim&dl=7&id=22&db0=1&db1=38&db2=17&db3=68&db4=7&db5=0&db6=3&db7=0";  // 43%
$url7 = "http://127.0.0.1:44322/control?cmd=dim&dl=6&id=22&db0=1&db1=38&db2=17&db3=68&db4=6&db5=0&db6=3&db7=0";  // 37%
$url6 = "http://127.0.0.1:44322/control?cmd=dim&dl=5&id=22&db0=1&db1=38&db2=17&db3=68&db4=5&db5=0&db6=3&db7=0";  // 31%
$url5 = "http://127.0.0.1:44322/control?cmd=dim&dl=4&id=22&db0=1&db1=38&db2=17&db3=68&db4=4&db5=0&db6=3&db7=0";  // 25%
$url4 = "http://127.0.0.1:44322/control?cmd=dim&dl=3&id=22&db0=1&db1=38&db2=17&db3=68&db4=3&db5=0&db6=3&db7=0";  // 18%
$url3 = "http://127.0.0.1:44322/control?cmd=dim&dl=2&id=22&db0=1&db1=38&db2=17&db3=68&db4=2&db5=0&db6=3&db7=0";  // 12%
$url2 = "http://127.0.0.1:44322/control?cmd=dim&dl=1&id=22&db0=1&db1=38&db2=17&db3=68&db4=1&db5=0&db6=3&db7=0";  // 6%
$url1 = "http://127.0.0.1:44322/control?cmd=off&id=22&db0=1&db1=38&db2=17&db3=68&db4=0&db5=0&db6=3&db7=0";  // AUS
$url0 = "http://127.0.0.1:44322/control?cmd=off&id=22&db0=1&db1=38&db2=17&db3=68&db4=0&db5=0&db6=3&db7=0";  // AUS

$t5dimarray = array($url0, $url1, $url2, $url3, $url4, $url5, $url6, $url7, $url8, $url9, $url10, $url11, $url12, $url13, $url14, $url15, $url16, $url17 );
IPS_SetScriptTimer($IPS_SELF, 74);  // bei einer Helligkeit weniger, alle 74 Sekunden, dauert der Sonnenuntergang ~20 Minuten



if($IPS_SENDER == "TimerEvent")  {

	$t5dimvarX = GetValue($t5dimvar);

	if ($t5dimvarX == 16) {
	   // UV-Spots ausschalten
	   HM_WriteValueBoolean(23430 /*[Hardware\HomeMatic\Schaltaktor-4fach\SA4x01 (Terrarium)\SA4x01_K2 (UV-Spots)]*/, "STATE", false);
	}
	
	if ($t5dimvarX == 9) {
		// Manuellen-Dim-Balken auf 50% setzen
      SetValue($t5manuellerDim, 50);
	}

	if ($t5dimvarX >= 2) {
		// FS20 EVG Dimmer >> Dim-Wert setzen
		WWWReader_SetPage(52026 /*[WWW Reader (LightManager)]*/,$t5dimarray[$t5dimvarX]);
		IPS_ApplyChanges(52026 /*[WWW Reader (LightManager)]*/);
		WWWReader_UpdatePage(52026 /*[WWW Reader (LightManager)]*/);
	}

	if ($t5dimvarX == 1) {
	   //TimerEvent ausschalten
	   IPS_SetScriptTimer($IPS_SELF, 0);
	   // Manuellen-Dim-Balken auf 0% setzen
      SetValue($t5manuellerDim, 0);
	   // T5 Röhren ausschalten
	   IPS_Sleep(500);
   	HM_WriteValueBoolean(24268 /*[Hardware\HomeMatic\Schaltaktor-4fach\SA4x01 (Terrarium)\SA4x01_K1 (T5 Röhren)]*/, "STATE", false);
   	SetValue($t5statusvar, false);
   	// LED Sternenhimmel anschalten
	   IPS_Sleep(500);
   	SetValue(56350 /*[Skripte & Variablen\Beleuchtung\Terrarium groß\Sternenhimmel funkeln\Aktiv]*/, true);
	}

	IPS_Sleep(1000);

	if (($t5dimvarX <= 16) AND ($t5dimvarX > 0)) {
		$t5dimvarY = $t5dimvarX - 1;
		SetValue($t5dimvar, $t5dimvarY);
	}
}
}

?>

> Geht mit anderer Hardware sicher auch anders und kürzer, aber so klappt es bei mir wunderbar :slight_smile: Die $t5dimvar ist eine Integer Hilfsvariable, welche hoch und runter zählt, damit ich das FS20 EVG über den Lightmanager mit automatisieren kann.

Wer Fragen hat, einfach melden, aber denke ist relativ übersichtlich :smiley:

Grüße,
Chris