Poolheizung

Unseren kleinen IP-Symcon-Pool heize ich mit einem 100m langen PE-Absorber-Rohr,
das einfach schneckenförmig an einer sonnigen Stelle auslegen wird (ca. € 35,- zzgl. Pumpe).
Regnerische Tage können mit einer elektrischen 2000W Pool-Heizung (ca. € 130,-) überbrückt werden.
Das ganze wird natürlich mit IP-Symcon gesteuert und grafisch in meinem Dashboard aufbereitet.

MST

PS: wen es interessiert: hier das Skript für das Trend-Icon

$breite = 48;     	// Pixel-Breite des Icon
$hoehe = 48;      	// Pixel- Höhe des Icon
$y_min = 16;      	// minimaler Wert z.B. 15 Grad
$y_max = 24;      	// maximaler Wert z.B. 25 Grad
$gr_hi = 21;         // ab diesem Wert wird in ROT gezeichnet
$gr_lo = 18;  			// unter diesem Wert wird in BLAu gezeichnet > // sonst wird in GRÜN gezeichnet

// IST-Wert > horizontale Linie
$y_hline = GetValue(50196 /*[5 Wetter\Temp Außen Schatten\Temperature Schatten 1W ]*/);
//$y_hline  = 21.5;     //Test
// SOLL-Wert > An / AUS oberer Rand
$soll = GetValue(39520 /*[Schwimmbad\Wellness Temperatur]*/);
$ysoll = ($soll* $hoehe/($y_max - $y_min) -($hoehe/($y_max - $y_min)*$y_min));
// WERT *************************************************************************************************
$wert = GetValue(53547 /*[Schwimmbad\Pool\TEMPERATURE]*/);    // z.B. aktuelle Temperatur
$w_str_array = GetValue(52614 /*[Schwimmbad\Pool\Trend\Array]*/); // ARRAY
$count = $breite; //Anzahl zu speichernder Temps
if ($w_str_array == ""){
   $wert_array = array_fill(0, $count, $wert);  // Wenn nicht vorhanden mit 0 Initialisieren
   echo "INI
";
}else{
   $wert_array = wddx_deserialize($w_str_array );  // Array aus String gewinnen
}
array_unshift($wert_array, $wert);
if (count($wert_array) > $count)
   unset($wert_array[$count]);
// STATUS ************************************************************************************************
$status = GetValue(45279 /*[3 Hof Garten\Pergola\STATE]*/);
$s_str_array = GetValue(16696 /*[Schwimmbad\Pool\Trend\Array Status]*/); // ARRAY
if ($s_str_array == ""){
   $status_array = array_fill(0, $count, $status);  // Wenn nicht vorhanden mit 0 Initialisieren
   echo "INI
";
}else{
   $status_array = wddx_deserialize($s_str_array);  // Array aus String gewinnen
}
array_unshift($status_array, $status);
if (count($status_array) > $count)
   unset($status_array[$count]);
// Farben *************************************************************************************************
$im=imagecreate($breite,$hoehe);
$white=imagecolorallocate($im,255,255,255);
$lightblue=imagecolorallocate($im,20,93,233);
$black=imagecolorallocate($im,0,0,0);
$white=imagecolorallocate($im,255,255,255);
$blue=imagecolorallocate($im,128,55,225);
$grau_gruen=imagecolorallocate($im,0,128,128);
$yellow=imagecolorallocate($im,255,255,0);
$rgb_red=imagecolorallocate($im,255,0,0);
$rgb_gruen=imagecolorallocate($im,0,255,0);
$rgb_blau=imagecolorallocate($im,0,0,255);
$zbv_color=imagecolorallocate($im,128,192,128);
$pastell_gelb_orange=imagecolorallocate($im,230,240,150);  // alt $im,208,227,0);
imagecolortransparent($im,$white);

$y0 = ($gr_lo * $breite/($y_max - $y_min) -($breite/($y_max - $y_min)*$y_min));
$y1 = ($gr_hi  * $breite/($y_max - $y_min) -($breite/($y_max - $y_min)*$y_min));
for($x=0; $x< $breite; $x = $x + 1) {   // 0 bis 47
	//echo $wert_array[$breite-1-$x]."
";
	$y = (($wert_array[$breite-1-$x])* $breite/($y_max - $y_min) -($breite/($y_max - $y_min)*$y_min));
	// Status
	$s_array = $status_array[$breite-1-$x];
	if($s_array == 1){
	   imageline  ($im, $x, 0, $x, ($hoehe-2- $ysoll), $pastell_gelb_orange);
	}
	if (($wert_array[$breite-1-$x]) > $gr_hi){
		imageline  ($im, $x, $hoehe-1, $x, ($hoehe -1 - $y0), $rgb_blau);
		imageline  ($im, $x, $hoehe-1-$y0, $x, ($hoehe -1 - $y1), $rgb_gruen);
		imageline  ($im, $x, $hoehe-2-$y1, $x, ($hoehe -1 - $y), $rgb_red);     // -2 warum auch immer?!
   }
   if ((($wert_array[$breite-1-$x]) <= $gr_hi) and (($wert_array[$breite-1-$x]) >= $gr_lo)) {
		imageline  ($im, $x, $hoehe-1, $x, ($hoehe -1 - $y0), $rgb_blau);
		imageline  ($im, $x, $hoehe-1-$y0, $x, ($hoehe -1 - $y), $rgb_gruen);
   }
   if (($wert_array[$breite-1-$x]) < $gr_lo){
      imageline  ($im, $x, $hoehe-1, $x, ($hoehe -1 - $y), $rgb_blau);
   }
}
$y = ($y_hline * $breite/($y_max - $y_min) -($breite/($y_max - $y_min)*$y_min));
imageline  ($im, 0,($hoehe -1 - $y), $breite, ($hoehe -1 - $y), $grau_gruen);
ImageString ($im, 2, 8, 36, number_format($wert, 1, ".", "." ) . "°C", $zbv_color);
imagepng($im, IPS_GetKernelDir()."media\	rend_pool.png");
SetValue(52614 /*[Schwimmbad\Pool\Trend\Array]*/, wddx_serialize_value($wert_array) );
SetValue(16696 /*[Schwimmbad\Pool\Trend\Array Status]*/, wddx_serialize_value($status_array) );
// zum Testen
if($IPS_SENDER == "Execute") {
   echo "Soll Wert: $$soll
";
   echo "Ist  Wert: $wert
";
	echo "Statsu: ".(int)$status."
";
	echo "H-Linie: $y_hline
";
}

pool_ausschnitt_dashboard.png

pool_trend_legende.png