Hallo,
ich hab mir einen Solarmonitor mit einem Arduino & Wlan-Modul (ESP8266) zusammengebastelt.
der ESP8266 fungiert als ‘pseudo’ Server und gibt wenn man ihn anspricht einen Json-String raus.
was heißt "pseudo"? Ist er ein Server oder ist er keiner? Und versteht bzw. spricht er korrektes HTTP?
Mit dem Browser bekomme ich den String angezeigt!
Schon mal gut. Aber Browser sind allgemein recht fehlertolerant. Gut möglich, dass der großzügig über irgendeinen Formfehler hinwegsieht, der andere, pingelige HTTP-Clients aus dem Tritt bringt. Welche Response-Header sendet denn dein Controller?
Allerdings mit php:
- $data = file_get_contents
- $data = file
- open // $data = fgets
bekomme ich
Bitte, zum (n+1). Mal: Beschreibe genau, was du tust! Wie sieht dein Test-Code aus?
PHP Warning: file_get_contents(http://192.168.123.35/): failed to open stream: HTTP request failed! {"I_Sol":"0.13","I_Bat":"1.48","I_Load":"1.07","U_Sol":"0.00","U_Bat":"13.35","P_Sol":"0.00","P_Bat":"19.75","P_Load":"14.34"} in ..
in der Var $data nix -
Klar, wenn der Request fehlschlägt, kommen auch keine Daten.
das Json steht allerdings im Terminal ??
Und, wie es aussieht, als Teil der Fehlermeldung. Sehr eigenartig.
$ch = curl_init('http://192.168.123.35');
$data = curl_exec($ch);
if (!curl_errno($ch) ) {
echo "Schuppen Sol:\n";
echo "data: " . $data ."\n";
}
curl_close($ch);
Ich kenne mich mit der curl-Extension nicht aus - aber ist es Absicht, dass bei der URL der abschließende Slash / fehlt? Gewöhnliche Browser ergänzen den stillschweigend, aber macht curl das auch?
bekomm ich zwar keine Fehlermeldung - allerdings das selbe wie oben -> In der Shell steht das Json, in der var nicht !?
Kann mir Jemand helfen.
Ja, vielleicht. Mit komplettem Code und möglichst einem HTTP-Mitschnitt.
So long,
Martin
--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy