Hi!
Hier findet ihr eine Pool-Steuerung, welche aktuell für diese beiden Systeme/Webseiten funktioniert:
>> Vistapool | Domotic for swimmingpools | Accede a tu cuenta
>> Naturally Salt | Pool-access | Accede a tu cuenta
<?
/********************************************************************************/
/***** VISTAPOOL CONTROL v1.2 **************************************************/
/* */
/* by Bayaro ( https://www.bayaro.net) */
/* */
/* Release-Date: 2018-09-09 */
/********************************************************************************/
$username = 'email@domain.de'; // Benutzername zur Anmeldung bei vistapool.es oder anderen kompatiblen Webseiten
$password = '*************'; // Passwort zur Anmeldung bei vistapool.es oder anderen kompatiblen Webseiten
$poolID = '1234'; // Steht in der URL am Ende, wenn man sich die Daten eines Pool im Browser anschaut
$ServerOS = 'linux'; // Betriebssystem von IP-Symcon -- "windows" oder "linux" (notwendig für korrekten Cookie-Pfad)
$WebsiteURL = "http://vistapool.es"; // URL der Webseite mit Vistapool-Steuerung (aktuell bekannte sind: "http://vistapool.es" und "http://www.naturally-salt-poolaccess.de"
/********************************************************************************/
/***** BEGINN DER DATENABFRAGE **************************************************/
$result = Vistapool_ReadData();
print_r($result); // Array mit ALLEN Daten die ein maximaler Ausbau enthalten kann - !!das können mehr sein als beim eigenen Pool verbaut!!
// Hier die ausgelesenen Daten in Variablen schreiben und/oder sonstiges damit anstellen
//echo PHP_EOL.PHP_EOL.PHP_EOL."Einzelne Werte vom Pool:".PHP_EOL.PHP_EOL;
//echo "Licht Status = ".$result["lightStat"]["status"]["status"];
//echo PHP_EOL;
//echo "Filter Status = ".$result["filtration_stat"];
//echo PHP_EOL;
//echo "Filter Mode = ".$result["filtration_mode"];
//echo PHP_EOL;
//echo "Temperatur = ".(float)$result["temp"];
//echo PHP_EOL;
//echo "pH Status = ".$result["PH_status"]["status"];
//echo PHP_EOL;
//echo "pH IST-Wert = ".(float)$result["PH"];
//echo PHP_EOL;
//echo "pH SOLL-Wert = ".(float)$result["PH_status"]["hi_value"];
//echo PHP_EOL;
//echo PHP_EOL.PHP_EOL.PHP_EOL."Status der AUX-Relais:".PHP_EOL.PHP_EOL;
//echo "AUX 1 - Manuell/Auto/Tempo = ".$result["aux"][0]["manAutoTemp"]; // 0 = Manuell, 1 = Auto, 2 = Tempo
//echo PHP_EOL;
//echo "AUX 1 - On/Off = ".$result["aux"][0]["onoff"]; // 0 = Off, 1 = On
//echo PHP_EOL;
//echo "AUX 2 - Manuell/Auto/Tempo = ".$result["aux"][1]["manAutoTemp"]; // 0 = Manuell, 1 = Auto, 2 = Tempo
//echo PHP_EOL;
//echo "AUX 2 - On/Off = ".$result["aux"][1]["onoff"]; // 0 = Off, 1 = On
//echo PHP_EOL;
// SetValue(12345, (float)$result["temp"]);
// SetValue(67890, (float)$result["PH"]);
/***** ENDE DER DATENABFRAGE ****************************************************/
/***** BEGINN DER STEUERUNG ****************************************************/
//// DATUM + UHRZEIT ////
//$CommandResult = Vistapool_Control("Datum-Uhrzeit", "25/06/2017 13:48"); // Setzt 25.06.2017 13:48 Uhr als aktuelles Datum/Uhrzeit
//// LICHT ////
//$CommandResult = Vistapool_Control("Licht", "ON"); // Schaltet das Licht auf manuelle Steuerung und auf EIN
//$CommandResult = Vistapool_Control("Licht", "OFF"); // Schaltet das Licht auf manuelle Steuerung und auf AUS
//$CommandResult = Vistapool_Control("Licht", "AUTO", "01:00", "14:45", 86400); // Aktiviert die Licht-Automatik für jeden Tag von 1.00 Uhr bis 14.45 Uhr (Licht an in dieser Zeit)
// freq=86400 >> jeden Tag // freq=172800 >> jeden 2. Tag // freq=259200 >> jeden 3. Tag // freq=345600 >> jeden 4. Tag // freq=432000 >> jeden 5. Tag // freq=604800 >> jede woche // freq=1209600 >> jede 2. woche // freq=1814400 >> jede 3. woche // freq=2419200 >> jede 4. woche
//// CHLOR ////
//$CommandResult = Vistapool_Control("SOLL-Chlor", 5); // Setzt den SOLL-Wert vom Chlor auf 0,05
//// PH ////
//$CommandResult = Vistapool_Control("SOLL-pH", 720); // Setzt den SOLL-Wert vom pH auf 7,2
//$CommandResult = Vistapool_Control("SOLL-pH", 30); // Setzt den SOLL-Wert vom pH auf 0,3
//// FILTERREINIGUNG ////
//$CommandResult = Vistapool_Control("Filter-Reinigung", "MAN", "ON", 60); // Filter-Reinigung manuell mit einem Intervall von 60 Sekunden einschalten
//$CommandResult = Vistapool_Control("Filter-Reinigung", "MAN", "OFF"); // Filter-Reinigung manuell ausschalten
//$CommandResult = Vistapool_Control("Filter-Reinigung", "AUTO", "03:00", 120, 172800); // Automatische Filter-Reinigung jeden 2. Tag, ab 3 Uhr, in einem Intervall von 120 Sekunden aktivieren
// freq=86400 >> jeden Tag // freq=172800 >> jeden 2. Tag // freq=259200 >> jeden 3. Tag // freq=345600 >> jeden 4. Tag // freq=432000 >> jeden 5. Tag // freq=604800 >> jede woche // freq=1209600 >> jede 2. woche // freq=1814400 >> jede 3. woche // freq=2419200 >> jede 4. woche
//// FILTER ////
//$CommandResult = Vistapool_Control("Filter", "MAN", "ON"); // Filtration manuell einschalten
//$CommandResult = Vistapool_Control("Filter", "MAN", "ON", 0); // Filtration manuell einschalten, Geschwindigkeit langsam (0 = langsam, 1 = medium, 2 = hoch)
//$CommandResult = Vistapool_Control("Filter", "MAN", "OFF"); // Filtration manuell ausschalten
//$CommandResult = Vistapool_Control("Filter", "AUTO", "01:00", "02:00", "12:00", "13:00", "17:00", "18:00"); // Filtration-AUTO in 3 Zeiträumen aktivieren (Intervall1 von 1Uhr bis 2Uhr, Intervall2 von 12Uhr bis 13Uhr, Intervall3 von 17Uhr bis 18Uhr)
//$CommandResult = Vistapool_Control("Filter", "AUTO", "01:00", "02:00", "12:00", "13:00", "17:00", "18:00", 0, 1, 2); // Filtration-AUTO in 3 Zeiträumen aktivieren (Intervall1 von 1Uhr bis 2Uhr, Intervall2 von 12Uhr bis 13Uhr, Intervall3 von 17Uhr bis 18Uhr, Intervall 1 Geschwindigkeit langsam, Intervall 2 Geschwindigkeit medium, Intervall 3 Geschwindigkeit hoch)
//$CommandResult = Vistapool_Control("Filter", "HEAT", 25, "CLIMA-ON", "07:00", "10:00", "13:00", "15:00", "19:00", "21:00"); // Filtration-HEAT in 3 Zeiträumen aktivieren (Temperatur auf 25 Grad mit Klima ON, Intervall1 von 7Uhr bis 10Uhr, Intervall2 von 13Uhr bis 15Uhr, Intervall3 von 19Uhr bis 21Uhr)
//$CommandResult = Vistapool_Control("Filter", "HEAT", 25, "CLIMA-OFF", "07:00", "10:00", "13:00", "15:00", "19:00", "21:00"); // Filtration-HEAT in 3 Zeiträumen aktivieren (Temperatur auf 25 Grad mit Klima OFF, Intervall1 von 7Uhr bis 10Uhr, Intervall2 von 13Uhr bis 15Uhr, Intervall3 von 19Uhr bis 21Uhr)
//$CommandResult = Vistapool_Control("Filter", "SMART", 20, 25, "ANTIFROST-ON", "07:00", "10:00", "13:00", "15:00", "19:00", "21:00"); // Filtration-SMART in 3 Zeiträumen aktivieren (Temperatur auf min. 20 Grad und max. 25 Grad mit Antigefriermittel ON, Intervall1 von 7Uhr bis 10Uhr, Intervall2 von 13Uhr bis 15Uhr, Intervall3 von 19Uhr bis 21Uhr)
//$CommandResult = Vistapool_Control("Filter", "SMART", 20, 25, "ANTIFROST-OFF", "07:00", "10:00", "13:00", "15:00", "19:00", "21:00"); // Filtration-SMART in 3 Zeiträumen aktivieren (Temperatur auf min. 20 Grad und max. 25 Grad mit Antigefriermittel OFF, Intervall1 von 7Uhr bis 10Uhr, Intervall2 von 13Uhr bis 15Uhr, Intervall3 von 19Uhr bis 21Uhr)
//$CommandResult = Vistapool_Control("Filter", "SMART", 20, 25, "ANTIFROST-OFF", "07:00", "10:00", "13:00", "15:00", "19:00", "21:00", 0, 1 , 2); // Filtration-SMART in 3 Zeiträumen aktivieren (Temperatur auf min. 20 Grad und max. 25 Grad mit Antigefriermittel OFF, Intervall1 von 7Uhr bis 10Uhr, Intervall2 von 13Uhr bis 15Uhr, Intervall3 von 19Uhr bis 21Uhr, Intervall 1 Geschwindigkeit langsam, Intervall 2 Geschwindigkeit medium, Intervall 3 Geschwindigkeit hoch)
//$CommandResult = Vistapool_Control("Filter", "INTEL", 25, 13); // Filtration-INTEL mit einer Wunschtemperatur von 25 Grad für 13 Stunden aktivieren
//// HYDROLYSE ////
//$CommandResult = Vistapool_Control("Hydrolyse", 29, "Cover-ON", 10, 0); // Hydrolyse mit 29%, Abdeckung um 10% reduziert und Chlor-Schock OFF
//$CommandResult = Vistapool_Control("Hydrolyse", 29, "Cover-ON", 10, 1); // Hydrolyse mit 29%, Abdeckung um 10% reduziert und Chlor-Schock ON
//$CommandResult = Vistapool_Control("Hydrolyse", 28, "Cover-OFF", 0, 0); // Hydrolyse mit 28%, Abdeckung OFF und Chlor-Schock OFF
//$CommandResult = Vistapool_Control("Hydrolyse", 28, "Cover-OFF", 0, 1); // Hydrolyse mit 28%, Abdeckung OFF und Chlor-Schock ON
//// AUX RELAIS ////
//$CommandResult = Vistapool_Control("Relais", 1, "ON"); // Schaltet Relais 1 auf manuelle Steuerung und auf EIN
//$CommandResult = Vistapool_Control("Relais", 1, "OFF"); // Schaltet Relais 1 auf manuelle Steuerung und auf AUS
//$CommandResult = Vistapool_Control("Relais", 1, "AUTO", "21:00", "23:45", 86400); // Aktiviert die Automatik von Relais 1 für jeden Tag von 21.00 Uhr bis 23.45 Uhr (Relais AN in dieser Zeit)
// freq=86400 >> jeden Tag // freq=172800 >> jeden 2. Tag // freq=259200 >> jeden 3. Tag // freq=345600 >> jeden 4. Tag // freq=432000 >> jeden 5. Tag // freq=604800 >> jede woche // freq=1209600 >> jede 2. woche // freq=1814400 >> jede 3. woche // freq=2419200 >> jede 4. woche
//echo PHP_EOL.PHP_EOL.PHP_EOL.PHP_EOL;
//echo $CommandResult; // $CommandResult kann jeweils "OK" oder "ERROR" zurückgeben.
/***** ENDE DER STEUERUNG ******************************************************/
/**** AB HIER NICHTS MEHR ÄNDERN ***********************************************/
function Vistapool_Control($command, $value1, $value2 = NULL, $value3 = NULL, $value4 = NULL, $value5 = NULL, $value6 = NULL, $value7 = NULL, $value8 = NULL, $value9 = NULL, $value10 = NULL, $value11 = NULL, $value12 = NULL, $value13 = NULL)
{
Global $poolID;
Global $password;
Global $username;
Global $ServerOS;
Global $WebsiteURL;
// Mapping der PHP-Befehle in eine Command-URL für die Poolsteuerung
$command = strtolower($command);
switch ($command)
{
case "datum-uhrzeit":
if (is_string($value1) === true)
{
$datetime = urlencode($value1);
$CommandURL = $WebsiteURL."/de/pool/settimevalue?id=".$poolID."&time=".$datetime;
}
else
{
IPS_LogMessage("VISTAPOOL", 'Datum-Uhrzeit // Ungültiger Wert! Value muss String sein! --- Datum und Uhrzeit müssen im folgenden Format angegeben werden: "23/07/2017 13:48"');
return "ERROR";
}
break;
case "licht":
if ($value1 === "ON")
{
$CommandURL = $WebsiteURL."/de/pool/setlightvalues?id=".$poolID."&type=0&status=1";
}
elseif ($value1 === "OFF")
{
$CommandURL = $WebsiteURL."/de/pool/setlightvalues?id=".$poolID."&type=0&status=0";
}
elseif ($value1 === "AUTO")
{
if ((is_string($value1) === true) AND (is_string($value2) === true) AND (is_string($value3) === true) AND (is_int($value4) === true))
{
$CommandURL = $WebsiteURL."/de/pool/setlightvalues?id=".$poolID."&type=1&status=1&freq=".$value4."&start=".$value2."&end=".$value3;
}
else
{
IPS_LogMessage("VISTAPOOL", 'Licht-Automatik // Ungültiger Wert! Value muss String sein! --- Datum und Uhrzeit müssen im folgenden Format angegeben werden: "23/07/2017 13:48"');
return "ERROR";
}
}
else
{
IPS_LogMessage("VISTAPOOL", "Licht // Irgendwas stimmt bei den verwendeten Values nicht!");
return "ERROR";
}
break;
case "soll-ph":
if (is_int($value1) === true)
{
$CommandURL = $WebsiteURL."/de/pool/setphvalue?id=".$poolID."&acid=".$value1."&base=NaN&type=ACID";
}
else
{
IPS_LogMessage("VISTAPOOL", "SOLL-Chlor // Ungültiger Wert! Value muss Integer sein! --- Für einen Chlor-Wert von 0,05 muss als Value 5 verwendet werden!");
return "ERROR";
}
break;
case "soll-chlor":
if (is_int($value1) === true)
{
$CommandURL = $WebsiteURL."/de/pool/setclvalue?id=".$poolID."&val=".$value1;
}
else
{
IPS_LogMessage("VISTAPOOL", "SOLL-pH // Ungültiger Wert! Value muss Integer sein! --- Für einen pH-Wert von 7,2 muss als Value 720 verwendet werden!");
return "ERROR";
}
break;
case "filter-reinigung":
if ($value1 === "MAN")
{
if ($value2 === "ON")
{
$CommandURL = $WebsiteURL."/de/pool/setbackwashvalues?id=".$poolID."&mode=0&onoff=1&interval=".$value3;
}
elseif ($value2 === "OFF")
{
$CommandURL = $WebsiteURL."/de/pool/setbackwashvalues?id=".$poolID."&mode=0&onoff=0&interval=".$value3;
}
}
elseif ($value1 === "AUTO")
{
$CommandURL = $WebsiteURL."/de/pool/setbackwashvalues?id=".$poolID."&mode=1&onoff=1&freq=".$value4."&start=".$value2."&interval=".$value3;
}
else
{
IPS_LogMessage("VISTAPOOL", "Filter-Reinigung // Irgendwas stimmt bei den verwendeten Values nicht!");
return "ERROR";
}
break;
case "hydrolyse":
if ($value2 === "Cover-ON")
{
$CommandURL = $WebsiteURL."/de/pool/sethidrovalue?id=".$poolID."&level=".$value1."&cover=1&reduction=".$value3."&cloration=".$value4;
}
elseif ($value2 === "Cover-OFF")
{
$CommandURL = $WebsiteURL."/de/pool/sethidrovalue?id=".$poolID."&level=".$value1."&cover=0&reduction=".$value3."&cloration=".$value4;
}
else
{
IPS_LogMessage("VISTAPOOL", "Hydrolyse // Irgendwas stimmt bei den verwendeten Values nicht!");
return "ERROR";
}
break;
case "filter":
if ($value1 === "MAN")
{
if ($value2 === "ON")
{
if ($value3 !== NULL)
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":0,"mode":1,"vel":'.$value3.'}';
}
else
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":0,"mode":1}';
}
}
elseif ($value2 === "OFF")
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":0,"mode":0}';
}
}
elseif ($value1 === "AUTO")
{
if (($value8 !== NULL) AND ($value9 !== NULL) AND ($value10 !== NULL))
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":1}&int={"inter1":"'.$value2.'-'.$value3.'","inter2":"'.$value4.'-'.$value5.'","inter3":"'.$value6.'-'.$value7.'"}&vel={"vel1":"'.$value8.'","vel2":"'.$value9.'","vel3":"'.$value10.'"}';
}
else
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":1}&int={"inter1":"'.$value2.'-'.$value3.'","inter2":"'.$value4.'-'.$value5.'","inter3":"'.$value6.'-'.$value7.'"}&vel={}';
}
}
elseif ($value1 === "HEAT")
{
if ($value3 === "CLIMA-ON")
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":2,"temp":"'.$value2.'","clima":1}&int={"inter1":"'.$value4.'-'.$value5.'","inter2":"'.$value6.'-'.$value7.'","inter3":"'.$value8.'-'.$value9.'"}&vel={}';
}
elseif ($value3 === "CLIMA-OFF")
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":2,"temp":"'.$value2.'","clima":0}&int={"inter1":"'.$value4.'-'.$value5.'","inter2":"'.$value6.'-'.$value7.'","inter3":"'.$value8.'-'.$value9.'"}&vel={}';
}
}
elseif ($value1 === "SMART")
{
if ($value4 === "ANTIFROST-ON")
{
$freeze = "1";
}
elseif ($value4 === "ANTIFROST-OFF")
{
$freeze = "0";
}
if (($value11 !== NULL) AND ($value12 !== NULL) AND ($value13 !== NULL))
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":3,"tempMin":'.$value2.',"tempMax":'.$value3.',"freeze":'.$freeze.'}&int={"inter1":"'.$value5.'-'.$value6.'","inter2":"'.$value7.'-'.$value8.'","inter3":"'.$value9.'-'.$value10.'"}&vel={"vel1":"'.$value11.'","vel2":"'.$value12.'","vel3":"'.$value13.'"}';
}
else
{
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":3,"tempMin":'.$value2.',"tempMax":'.$value3.',"freeze":'.$freeze.'}&int={"inter1":"'.$value5.'-'.$value6.'","inter2":"'.$value7.'-'.$value8.'","inter3":"'.$value9.'-'.$value10.'"}&vel={}';
}
}
elseif ($value1 === "INTEL")
{
if (($value3 < 2) OR ($value3 > 23))
{
IPS_LogMessage("VISTAPOOL", "Filter - INTEL // Der Zeitraum kann minimal 2 und maximal 23 Stunden sein!");
return "ERROR";
}
else
{
$inteltimeMIN = $value3 * 60;
$CommandURL = $WebsiteURL.'/de/pool/setfiltrationvalues?id='.$poolID.'&data={"type":4,"temp":"'.$value2.'","time":'.$inteltimeMIN.'}&int=[]&vel=[]';
}
}
else
{
IPS_LogMessage("VISTAPOOL", "Filter // Etwas stimmt bei den verwendeten Values nicht!");
return "ERROR";
}
break;
case "relais":
if ($value2 === "ON")
{
$CommandURL = $WebsiteURL."/de/pool/setauxvalues?id=".$poolID.'&rel='.$value1.'&data={"mode":0,"onoff":1}';
}
elseif ($value2 === "OFF")
{
$CommandURL = $WebsiteURL."/de/pool/setauxvalues?id=".$poolID.'&rel='.$value1.'&data={"mode":0,"onoff":0}';
}
elseif ($value2 === "AUTO")
{
if ((is_string($value3) === true) AND (is_string($value4) === true))
{
$CommandURL = $WebsiteURL."/de/pool/setauxvalues?id=".$poolID.'&rel='.$value1.'&data={"mode":1,"from":"'.$value3.'","to":"'.$value4.'","freq":"'.$value5.'"}';
}
else
{
IPS_LogMessage("VISTAPOOL", 'Relais-Automatik // Ungültiger Wert! Value muss String sein! --- Datum und Uhrzeit müssen im folgenden Format angegeben werden: "23/07/2017 13:48"');
return "ERROR";
}
}
else
{
IPS_LogMessage("VISTAPOOL", "Relais // Irgendwas stimmt bei den verwendeten Values nicht!");
return "ERROR";
}
break;
default:
IPS_LogMessage("VISTAPOOL", "ERROR // Der Befehl '".$command."' konnte nicht verarbeitet werden!");
return "ERROR";
break;
}
// Versuch sich mit Cookie an der Webseite anzumelden
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if (strtolower($ServerOS) == "windows")
{
curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\Windows\Temp\vistapool_cookie');
}
else
{
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/vistapool_cookie');
}
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $WebsiteURL.'/de/pool/list');
$curlData = curl_exec($ch);
// Prüfen, ob die Anmeldung mit Cookie erfolgreich war, wenn nicht, dann wird ein normaler Login durchgeführt
preg_match("|(Passwort wiederherstellen)|", $curlData, $LoginFALSE);
if ($LoginFALSE)
{
echo "Anmeldung mit Cookie war nicht erfolgreich - normaler Login wird durchgeführt!".PHP_EOL;
$fields = array(
'user'=>urlencode($username),
'pass'=>urlencode($password),
'remember_password'=>'0',
'entrar'=>'Eingabe',
);
$fields_string = '';
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
$fields_string = substr($fields_string,0,-1);
$postfields = $fields_string;
ini_set("max_execution_time", 60);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if (strtolower($ServerOS) == "windows")
{
curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\Windows\Temp\vistapool_cookie');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'C:\Windows\Temp\vistapool_cookie');
}
else
{
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/vistapool_cookie');
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/vistapool_cookie');
}
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.session_id());
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_URL, $WebsiteURL.'/de/login/login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "$postfields");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curlData = curl_exec($ch);
}
// Befehl an Poolsteuerung senden
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $CommandURL);
$curlData = curl_exec($ch);
if ($curlData == '"not connected"')
{
// Poolsteuerung ist offline - Befehl kann nicht gesendet werden
echo "POOLSTEUERUNG IST NICHT VERBUNDEN! - Steuerung nicht möglich!".PHP_EOL;
IPS_LogMessage("VISTAPOOL", "POOLSTEUERUNG IST NICHT VERBUNDEN! - Steuerung nicht möglich!");
}
else
{
// Poolsteuerung ist online - Befehl kann gesendet werden
$result = json_decode($curlData);
if ($result == true)
return "OK";
else
return "ERROR";
}
// cURL Sitzung beenden
curl_close($ch);
}
function Vistapool_ReadData()
{
Global $poolID;
Global $password;
Global $username;
Global $ServerOS;
Global $WebsiteURL;
// Versuch sich mit Cookie an der Webseite anzumelden
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if (strtolower($ServerOS) == "windows")
{
curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\Windows\Temp\vistapool_cookie');
}
else
{
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/vistapool_cookie');
}
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $WebsiteURL.'/de/pool/list');
$curlData = curl_exec($ch);
// Prüfen, ob die Anmeldung mit Cookie erfolgreich war, wenn nicht, dann wird ein normaler Login durchgeführt
preg_match("|(Passwort wiederherstellen)|", $curlData, $LoginFALSE);
if ($LoginFALSE)
{
echo "Anmeldung mit Cookie war nicht erfolgreich - normaler Login wird durchgeführt!".PHP_EOL;
$fields = array(
'user'=>urlencode($username),
'pass'=>urlencode($password),
'remember_password'=>'0',
'entrar'=>'Eingabe',
);
$fields_string = '';
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
$fields_string = substr($fields_string,0,-1);
$postfields = $fields_string;
ini_set("max_execution_time", 60);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if (strtolower($ServerOS) == "windows")
{
curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\Windows\Temp\vistapool_cookie');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'C:\Windows\Temp\vistapool_cookie');
}
else
{
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/vistapool_cookie');
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/vistapool_cookie');
}
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.session_id());
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_URL, $WebsiteURL.'/de/login/login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "$postfields");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curlData = curl_exec($ch);
}
// Abfragen der Pool-Daten
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $WebsiteURL.'/de/pool/getmainvalues?id='.$poolID.'&hasPH=true&hasRX=true&hasCL=true&hasCD=true&config=1&hasHidro=true&hasLight=true&hasRelays=true&numRelays=1%2C2%2C3%2C4&hasFiltration=true&hasBackwash=true&hasIO=true&hasUV=true&needsTimeBesgoRemaining=false');
$curlData = curl_exec($ch);
// Ausgabe der ausgelesenen Daten
if ($curlData == '"not connected"')
{
// Poolsteuerung ist offline - Daten können nicht ausgelesen werden
echo "POOLSTEUERUNG IST NICHT VERBUNDEN!".PHP_EOL;
IPS_LogMessage("VISTAPOOL", "POOLSTEUERUNG IST NICHT VERBUNDEN!");
}
else
{
// Poolsteuerung ist online - Daten können ausgelesen werden
$PoolData_Array = json_decode($curlData, true);
return $PoolData_Array;
}
// cURL Sitzung beenden
curl_close($ch);
}
?>
Im Skript enthalten ist auch eine Anmeldung bei einer Webseite mittels Cookie…kann man immer mal brauchen
Leider unterstützen sowohl vistapool.es als auch naturally-salt-poolaccess.de nach wie vor keine Anmeldung über HTTPS
Eventuell kann sich ja mal ein Besitzer einer solchen Steuerung mal mit denen in Verbindung setzen und um Aktivierung von HTTPS bitten.
Falls ihr euch auch so eine Pool-Steuerung kaufen wollt >> Keine Ahnung wie der verwendete Kram heißt Ich habe nur das Script dazu geschrieben…
Auch habe ich selbst keinen Zugriff auf eine solche Pool-Steuerung. Solltet ihr also eine Erweiterung/Ergänzung wünschen, benötige ich einen temporären Zugang zu eurer Pool-Steuerung.
Viel Spaß damit und beste Grüße,
Chris
CHANGELOG:
Version 1.2
>> Datenabfrage erweitert, so dass ALLE Informationen ausgelesen werden die ein mir bekannter maximaler Ausbau hat (kann deshalb mehr anzeigen als der eigene Pool kann bzw. verbaut hat)
>> Webseite der Pool-Steuerung anpassbar gemacht - Variable $WebsiteURL
>> Steuerung der AUX-Relais
>> Filter-Geschwindigkeit kann jetzt auch in den Funktionen verwendet werden (0 = langsam, 1 = medium, 2 = hoch)
Version 1.1
>> Schockchlorung als Parameter hinzugefügt (siehe Beispiele unter „HYDROLYSE“)
>> Cookie Anmeldung für Linux und Windows über Variable $ServerOS anpassbar
Version 1.0
>> Erster Release