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
";
}