Code:
<?php
/**
* Profilux Comunication with GHL XML-File
* version: 1.01
*
* NOTES:
* - Fist release of the script.
*
* Written by Markus Kromberg
* http://www.kromberg.tk
*
*/
function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
/* Config-Area */
$server = "W.X.Y.Z"; //IP eintragen!
$port = "80";
$file = "/Status.rss";
$start = microtime(true); // starts runtime check
$cont = "";
$ip = gethostbyname($server);
$fp = fsockopen($ip, $port, $errno, $errstr, 25);
if (!$fp)
{
$delay = microtime(true) - $start; // Calculate delay
$delay = round($delay, 0);
echo $delay;
SetValue(10371 /*[Wohnung\Wohnzimmer\Aquarium\Antwortzeit]*/,$delay);
$var_error = 1;
}
else
{
$com = "GET $file HTTP/1.1\r\nAccept: */*\r\nAccept-Language: de-ch\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\nHost: $server:$port\r\nConnection: Keep-Alive\r\n\r\n";
fputs($fp, $com);
while (!feof($fp))
{
$cont .= fread($fp, 500);
}
fclose($fp);
$cont = substr($cont, strpos($cont, "\r\n\r\n") + 4);
$delay = microtime(true) - $start; // Calculate delay
$delay = round($delay, 0);
echo $delay;
SetValue(10371 /*[Wohnung\Wohnzimmer\Aquarium\Antwortzeit]*/,$delay);
/* Convert 2 UTF-8 */
$var_site = utf8_encode($cont);
/* XML in Array umwandeln */
$xml = simplexml_load_string($var_site);
/* Variablen parsen */
$var_pl_zeit = get_string_between($var_site, "<time>", "</time>");
$var_pl_date = get_string_between($var_site, "<date>", "</date>");
$var_pl_model = get_string_between($xml->entry[0]->content, "Modell: ", ", S/N:");
$var_pl_fwver = get_string_between($xml->entry[0]->content, "FW-Version ", " vom");
$var_pl_fwdate = get_string_between($var_site, "<firmware_date>", "</firmware_date>");
$var_pl_1to10_01 = intval(get_string_between($var_site, '<content>Beleucht. 1', "</content>"));
$var_pl_1to10_02 = intval(get_string_between($var_site, '<content>Beleucht. 2', "</content>"));
$var_pl_1to10_03 = intval(get_string_between($var_site, '<content>Beleucht. 3', "</content>"));
$var_pl_1to10_04 = intval(get_string_between($var_site, '<content>Beleucht. 4', "</content>"));
$var_pl_1to10_05 = intval(get_string_between($var_site, '<content>Beleucht. 5', "</content>"));
$var_pl_1to10_06 = intval(get_string_between($var_site, '<content>Beleucht. 6', "</content>"));
$var_pl_power_01 = $xml->entry[9]->content;
$var_pl_power_02 = $xml->entry[10]->content;
// $var_pl_power_03 = $xml->entry[11]->content;
$var_pl_power_04 = $xml->entry[11]->content;
// $var_pl_power_05 = get_string_between($var_site, '<kanal id="S 5">', "</kanal>");
$var_pl_power_06 = $xml->entry[12]->content;
$var_pl_power_07 = $xml->entry[13]->content;
/* PH-Wert */
$var_pl_sens_01_capt = $xml->entry[1]->summary;
$var_pl_sens_01_val = get_string_between($xml->entry[1]->content, 'pH 1', "pH ");
$var_pl_sens_01_val = floatval(trim(str_replace(",", ".", $var_pl_sens_01_val)));
/* Temperatur */
$var_pl_sens_02_capt = $xml->entry[2]->summary;
$var_pl_sens_02_val = get_string_between($xml->entry[2]->content, 'Temp 1', "C ");
$var_pl_sens_02_val = floatval(trim(str_replace(",", ".", $var_pl_sens_02_val)));
/* Variablen abspeichern */
if ($var_pl_power_01 == "Ein") { SetValue(24180 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 1]*/,TRUE); } else { SetValue(24180 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 1]*/,FALSE); }
if ($var_pl_power_02 == "Ein") { SetValue(43620 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 2]*/,TRUE); } else { SetValue(43620 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 2]*/,FALSE); }
// if ($var_pl_power_03 == "Ein") { SetValue(36035 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 3]*/,TRUE); } else { SetValue(36035 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 3]*/,FALSE); }
if ($var_pl_power_04 == "Ein") { SetValue(34376 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 4]*/,TRUE); } else { SetValue(34376 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 4]*/,FALSE); }
// if ($var_pl_power_05 == "Ein") { SetValue(56665 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 5]*/,TRUE); } else { SetValue(56665 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 5]*/,FALSE); }
if ($var_pl_power_06 == "Ein") { SetValue(28024 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 6]*/,TRUE); } else { SetValue(28024 /*[Wohnung\Wohnzimmer\Aquarium\Steckdosen\Steckdose 6]*/,FALSE); }
/* Plausibilitäts-Check & speichern*/
if ($var_pl_sens_01_val > 9.5) $var_pl_sens_01_val = "_error_";
if ($var_pl_sens_01_val < 5.5) $var_pl_sens_01_val = "_error_";
if ($var_pl_sens_01_val != "_error") SetValue(39430 /*[Wohnung\Wohnzimmer\Aquarium\PH]*/,$var_pl_sens_01_val);
if ($var_pl_sens_02_val > 35) $var_pl_sens_02_val = "_error_";
if ($var_pl_sens_02_val < 15) $var_pl_sens_02_val = "_error_";
if ($var_pl_sens_02_val != "_error") SetValue(28818 /*[Wohnung\Wohnzimmer\Aquarium\Wassertemperatur]*/,$var_pl_sens_02_val);
/* Beleuchtung zuordnen & speichern */
switch (date("N"))
{
case 1:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 2:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 3:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = 0;
$var_bel_moon = $var_pl_1to10_03;
break;
case 4:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 5:
$var_bel_54wd = $var_pl_1to10_01;
$var_bel_36wn = $var_pl_1to10_02;
$var_bel_moon = $var_pl_1to10_03;
break;
case 6:
$var_bel_54wd = $var_pl_1to10_04;
$var_bel_36wn = $var_pl_1to10_05;
$var_bel_moon = $var_pl_1to10_06;
break;
case 7:
$var_bel_54wd = $var_pl_1to10_04;
$var_bel_36wn = $var_pl_1to10_05;
$var_bel_moon = $var_pl_1to10_06;
break;
}
SetValue(56061 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\2x 36 Watt nicht dimmbar]*/,$var_bel_36wn);
SetValue(36597 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\2x 54 Watt dimmbar]*/,$var_bel_54wd);
SetValue(12680 /*[Wohnung\Wohnzimmer\Aquarium\Beleuchtung\Mondlicht]*/,$var_bel_moon);
}
?>
Viele Grüße,
Bookmarks