WWW Reader / Curl

Hallo Zusammen,

ich probier nun schon seit Stunden herum. Auch die Suche im Forum hat bisher leider noch nciht geholfen.
Folgendes Problem: Ich will die Daten meines Powerroutes auslesen. Die daten kann ich per Https Zeile auslesen:

(Aufruf im Browser)
auslesen.

Nun habe ich schon versucht per WWW Reader die Seite auslesen zu lassen. Das führt zu dem „error 500“. Scheint also nciht zu funktionieren.
Dann habe ich versucht Curl mit IPS zum laufen zu bringen. Aber hierfür scheine Ich zu blöd zu sein - ich bekomms nämlich nicht hin… Ich habe auf meinem RASP die CURL bibliothek per apt-get install libcurl4-openssl-dev installiert.

Hat einer von Euch eine zündende Idee?

Da ich in dem Umfeld noch so ein relativer neuling bin, bitte ich die Frage zu entschuldigen, falls Sie zu trivial ist :wink:

Vielen Dank schonmal für die Hilfe.

Beste Grüße
Steve

Hi Steve!

Hier findest du ein Beispiel mit einem IPS-Skript in Verbindung mit cURL :slight_smile:
IP-Symcon - Wie kann ich… 2.0 - Seite 5

Du wirst aber dich doch bei deinem Router mit Benutzer/Passwort anmelden müssen, damit du an die Daten kommst? Das müsstest du beim WWWReader und bei cURL natürlich auch noch machen! Sonst gibt es keine Daten :wink:

Und wie man die Daten dann weiter verarbeiten kann, hängt davon ab, wie der Router die Daten bereit stellt. Werden diese mit z.B. Java dynamisch generiert, wird es übel :smiley: Aber versuch erstmal hin zu bekommen, dass du die komplette Seite in einer Variable hast, dann sehen wir weiter.

Grüße,
Chris

Hallo Chris,

es funktioniert! Vielen Dank für deine schnelle Hilfe!
Kaum verwendet man CURL richtig, funktioniert es auch :slight_smile:

Ich bin jedes mal wieder überrascht von Euch! Ihr helft immer schnell und kompetent UND ich muss nie lange auf eine Antwort warten -> Dafür mal ein DICKES DANKE!!

Beste Grüße und einen schönen Abend,
Steve

Abend Steve!

Freut mich zu hören :cool:

Magst du, um das Thema für die Suchfunktion sauber abzuschließen, bitte noch dein Ergebnis/Skript (ohne Passwörter) posten?! :slight_smile:
Dann müssen andere, die ein gleiches/ähnliches Problem haben, nicht lange suchen oder nachfragen.

Dir auch einen schönen Abend und Grüße,
Chris

Nabend Chris,

naklar poste ich mein Script. Wobei es momentan noch sehr rudimentär ist und nur die Seite zurückliefert. Die eigentliche Verarbeitung fehlt noch.

Script:

<?

$curl = curl_init(‚https://www.mypowerrouter.com/aspects/history/energy_balance/1hour?scope=day&power_router[0]=25018‘);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERPWD, „$username:$password“);
curl_setopt($curl, CURLOPT_USERAGENT,‚Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13‘);
$page = curl_exec($curl);
echo $page

?>

Falls es dann noch von interesse sein sollte, wie ich die Verarbeitung gemacht habe, kann ich die dazu auch noch post (erst wenn sie fertig ist).

Das Problem an dem Router (Nedap) ist das er zu einer Sonnenbatterie und man dessen Daten nur über die Internetseite einsehen kann. Das Problem ist im Netz weithin bekannt und man wird nur sehr schwer fündig, wenn es den ein oder anderen noch interessieren sollte, kann ich dazu dann auch noch weitere infos geben.

Schönen Abend noch,
Steve

:smiley: Den Teil mit cURL sollte man kennen, ich meinte dann schon das komplette Skript :slight_smile: Dachte du bist schon fertig :slight_smile:

Bitte PHP-Code immer mit dem PHP-Tag „umfassen“, damit das schöner aussieht :wink:

php code

Aber kein Problem, Missverständnis… Dann kannst du gerne dein Ergebnis posten, wenn du es fertig hast :slight_smile:

Grüße,
Chris

Hi Chris,

hier nun mein fertiges und funktionsfähiges Script. :slight_smile:



 <?
// Variablen
$curl 					= curl_init('https://www.mypowerrouter.com/aspects/history/consumption/1hour?scope=day&power_router\[0\]=25018');
$vonNetz 				= 0;
$zumNetz 				= 0;
$vonBatterie 			= 0;
$zurBatterie 			= 0;
$direkterVerbrauch 	= 0;
$gesamtverbrauch 		= 0;
$produktion          = 0;
$suchString          = '"data":[["';
$tmp                 = '';

// Seite auslesen und speichern
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$page = curl_exec($curl);

//echo $page;


// Auslesen der Daten

function readData(){

	$GLOBALS['page'] = substr( $GLOBALS['page'], strpos( $GLOBALS['page'], $GLOBALS['suchString']) );
	$GLOBALS['page'] = substr( $GLOBALS['page'], strpos( $GLOBALS['page'], ',' ) + 1 );

	return substr( $GLOBALS['page'] , 0, strpos( $GLOBALS['page'], ']]' ) );
}


$direkterVerbrauch 	= readData ();
$gesamtverbrauch     = readData ();
$vonNetz             = readData ();
$vonBatterie         = readData ();

//speichern
SetValue(17044 /*[Photovoltaik\DirekterVerbrauch]*/, GetValue(17044 /*[Photovoltaik\DirekterVerbrauch]*/) + $direkterVerbrauch/1000);
SetValue(22670 /*[Photovoltaik\StromverbrauchHaus]*/, GetValue(22670 /*[Photovoltaik\StromverbrauchHaus]*/) + $gesamtverbrauch/1000);
SetValue(18511 /*[Photovoltaik\Netzbezug]*/, GetValue(18511 /*[Photovoltaik\Netzbezug]*/) + $vonNetz/1000);
SetValue(12519 /*[Photovoltaik\Batteriebezug]*/, GetValue(12519 /*[Photovoltaik\Batteriebezug]*/) + $vonBatterie/1000);

// Initialisierung für zweite Abfrage
$curl 					= curl_init('https://www.mypowerrouter.com/aspects/history/production/1hour?scope=day&power_router\[0\]=25018');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$page 					= curl_exec($curl);

//einmal ins leere lesen, da dieser Wert bereits vorhanden
readData ();
$produktion 			= readData ();
$zurBatterie		 	= readData ();
$zumNetz				 	= readData ();

//Speichern
SetValue(42643 /*[Photovoltaik\Produktion]*/, GetValue(42643 /*[Photovoltaik\Produktion]*/) + $produktion/1000);
SetValue(25253 /*[Photovoltaik\LadenDerBatterie]*/, GetValue(25253 /*[Photovoltaik\LadenDerBatterie]*/) + $zurBatterie/1000);
SetValue(43922 /*[Photovoltaik\Einspeisung]*/, GetValue(43922 /*[Photovoltaik\Einspeisung]*/) + $zumNetz/1000);

?>


Schönen Abend noch und bis zum nächsten mal :wink:
Steve

Abend Steve!

Das sieht doch schon recht gut aus :slight_smile: Könnte man zwar noch ein wenig optimieren, aber das passt schon so :slight_smile:

PHP-Tags im Post werden mit [ und ] eingefasst, nicht mit < und > :wink: Oder einfach oben über dem Textfeld den „php“ Button drücken :wink:

Danke fürs posten und Grüße,
Chris

Hi Steve,

ich habe auch eine Powerrouter und Dein Script liefert auch Daten … die Frage ist: Was mache ich damit :slight_smile:

Aktuell zählt das Script pro Ausführung „einfach“ fixe Werte hoch. Meine Frage ist, wie Du die Werte nutzt und wie oft Du das Script ausführst. Das ist mir noch nicht so richtig klar?

Viele Grüße

Enno

Link zu Script für aktuelle Daten: https://www.symcon.de/forum/threads/31161-Nedap-Powerrouter-(PV-Wechselrichter)-Aktuelle-Daten-auslesen?p=288552#post288552