Moin.... ich möchte gerne die Webseite von meiner Wärmepumpe auslesen. Diese wird bei dem Hersteller gehostet und ich muss mich dort mit meiner Emailadresse und einem Passwort einloggen. Allerdings sind das zwei Felder auf der Webseite und keine htaccess Passwortabfrage....
Bisher hatte ich das über einen extra Webserver gelöst und mit dem folgenden Code ausgelesen:
Jetzt wollte ich den extra Webserver aber nicht mehr dafür benutzen, sondern das ganze lieber in Openhab machen....
Jemand eine Idee wie das gehen könnte ?
Das Hauptproblem ist ja anscheinend das einloggen, das Auslesen sollte dann ja funktionieren wie bei https://code.google.com/p/openhab-sa...a_HTTP_binding
Gruß
Jörg
Bisher hatte ich das über einen extra Webserver gelöst und mit dem folgenden Code ausgelesen:
PHP-Code:
<?php
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);
}
function doPostRequest($item, $data) {
$url = "http://user:passwort@192.168.178.7:8081/rest/items/" . $item;
$options = array(
'http' => array(
'header' => "Content-type: text/plain\r\n",
'method' => 'POST',
'content' => $data //http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
$ch = curl_init();
// SET URL FOR THE POST FORM LOGIN
curl_setopt($ch, CURLOPT_URL, 'https://www.warmepump.com/LogIn?');
// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);
// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'Email=ich@meinemail.de&Password=meinpasswort');
// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'ich@meinemail.txt');
# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
# not to print out the results of its query.
# Instead, it will return the results as a string return value
# from curl_exec() instead of the usual true/false.
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// EXECUTE 1st REQUEST (FORM LOGIN)
$store = curl_exec ($ch);
// SET FILE TO DOWNLOAD
curl_setopt($ch, CURLOPT_URL, "https://www.warmepumpe.com/Status/Info");
ob_start();
$content = curl_exec ($ch);
curl_close($ch);
$parsed = get_string_between($content, "<span class="AutoUpdateValue ID1234">", "°C</span>");
doPostRequest("heiz_t_aussen", $parsed);
print "$content";
?>
Jemand eine Idee wie das gehen könnte ?
Das Hauptproblem ist ja anscheinend das einloggen, das Auslesen sollte dann ja funktionieren wie bei https://code.google.com/p/openhab-sa...a_HTTP_binding
Gruß
Jörg
Kommentar