file_get_content mit username und Passwort Abfrage funkt. nicht

Hallo zusammen,

ich versuche gerade Daten von meinem Fronius Symo Wechselrichter per json abzufragen.
Das funktioniert grundsätzlich auch ohne Passwort, aber bei der von mir verwendeten URL will er auch Username und Password haben.

Ich hab daraufhin in mein script eine passwort Abfrage laut Vorlage eingebaut, bekomme aber immer noch eine unauthorized Fehlermeldung.

$url = "http://192.168.1.22/components/5/0/?print=names";
$username = "admin";
$password = "xxxxxxx";

$context = stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " . base64_encode("$username:$password")
    )
));

$content = file_get_contents($url, false, $context);

$json = json_decode($content);


//Dies ist die eigentliche Wertabfrage und Zuweisung zu den vorne stehenden Variablen
//Ihr könnt es mit den Werten ergänzen die Ihr wollt
$gen = $json->Body->Data->Power_P_Generate->Value;
$load = $json->Body->Data->Power_P_Load->Value;
$grid = $json->Body->Data->Power_P_Grid->Value;
$self = $json->Body->Data->Power_P_SelfConsumption->Value;


// Variablenzuweisung mit euren Variablen ändern
SetValue(27827 /*[KG\Energy\PV\PV1\Power_P_Generate (gerade produzierte Leistung)]*/,$gen);
SetValue(35043 /*[KG\Energy\PV\PV1\Power_P_Grid (momenate Einspeisung/Bezug)]*/,$grid);
SetValue(44174 /*[KG\Energy\PV\PV1\Power_P_Load (momentaner Verbrauch)]*/,$load);
SetValue(57684 /*[KG\Energy\PV\PV1\Power_P_SelfConsumption (Eigenverbrauch)]*/,$self);

Das spuckt untenstehende Fehlermeldung aus.

Warning:  file_get_contents(http://192.168.1.22/components/5/0/?print=names): failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized
 in C:\IP-Symcon\scripts\12418.ips.php on line 12

Notice:  Trying to get property of non-object in C:\IP-Symcon\scripts\12418.ips.php on line 19

Habt ihr einen Tip, was ich falsch mache?
Danke.

Abend!

Ich würds mit cURL machen > http://php.net/manual/en/book.curl.php

Beispiele:

http://teampasswordmanager.com/docs/api-authentication/

Oder der ganz simple Weg > WWWReader und Text Parser in eine Variable :slight_smile:

Grüße,
Chris