javascript in PHP

Das ist Geschmacksache ob man lieber jemand hat der einem etwas per Video erzählt. Ich bin da kein Fan von, denn man muss ja auch nachvollziehen können was einem erzählt wird bzw. das auch ausprobieren um es wirklich zu verstehen. Da ist man mehr damit beschäftigt den Kurs laufend anzuhalten um folgen zu können.

Daher ist meine persönliche Präferenz Lesen, da bestimmt man selber das Tempo und kann einen Satz auch zwei mal lesen und muss nicht spulen ;).

Kostet auch nichts
PHP Einfach

Du kannst auch einen IPS-/PHP-Grundkurs bei mir buchen - kostet nur 10000000000000000€ (natürlich pro Stunde) :wink: :smiley:
…oder lieber nicht, ich kann nicht wirklich gut erklären :smiley:

Die besten Seiten zum PHP „verstehen lernen“ sind immer noch das Manual und W3S
https://www.w3schools.com/php/default.asp
https://secure.php.net/manual/de/

-Chris-

boah

ich versuche und probiere und nichts geht man o man.

das was ich schwarz gepostet habe war die Ausgabe.

Wie sehe ich die Ausgabe von print_r ?

Das hier funktioniert bei mir.


$json = '{"version":"0.3","data":[{"tuples":[[1548866946807,60.787,1],[1548867007035,0,1]],"uuid":"85ef0010-....","from":1548866887584,"to":1548867007035,"min":[1548867007035,0],"max":[1548866946807,60.78719416299194],"average":30.138,"consumption":1,"rows":3}]}';
$daten = json_decode ( $json);
print $daten->data[0]->consumption;
print "
";
print $daten->data[0]->tuples[0][1];
print "
";
print_r($daten);

Das json kommt aus meiner volkszähler Installation. Wenn du die URL in Firefox aufrufst, zeigt der auch direkt eine aufgeklappte Struktur an.

EDIT: Überflüssig durch den Post von Tobias :slight_smile:

>> Die Ausgabe von print_r steht unter dem Skript, nach der Skript-Ausführung :slight_smile:

hier ist mal ein Screenshot wie es bei fierfox aussieht.

da sieht man die Struktur besser. Data ist auf jeden Fall da und consumption ist ein Unterortnerip bild2.JPG

EDIT: Wir konnten es jetzt gemeinsam lösen. Aber da ist ein Fehler in „Sys_GetURLContent“ :confused: Schreibe dazu später noch was, deshalb hatte Thomas leider nie eine Chance das hinzubekommen :smiley:

Dank eines Profis hat es geklappt!!

Vielen Dank an Chris für seine super Unterstützung!!:slight_smile:

Auch einen speziellen Dank Fonzo für seine Bemühung und Geduld.

Gestern wurde es zu spät, deshalb jetzt der Fehlerbericht…

@paresy: Irgendwie gibt es einen Fehler in Sys_GetURLContent, den ich mir überhaupt nicht erklären kann.

Thomas hatte versucht seinen Volkszähler abzufragen. Das an sich hat auch geklappt - aber er konnte daraus kein Json machen…und wieso das so ist, das erklärt sich mir so gar nicht :confused:

Dieser Aufruf:

$data = Sys_Geturlcontent("http://192.168.178.48/volkszaehler.org/htdocs/middleware.php/data.json?from=Yesterday&to=today&uuid[]=b6ae8c20-683c-01e5-0000-0000xxxxxxxx");
var_dump($data);

Ergibt bei ihm diese Ausgabe:

string(29239) "722a
{"version":"0.3","data":[{"uuid":"b6ae8c20-683c-01e5-0000-0000xxxxxxxx","from":1548716280000,"to":1548802920000,"min":[1548716340000,0],"max":[1548789960000,600],"average":8.435,"consumption":203,"rows":1445,"tuples":[[1548716340000,0,1],...................................[1548802920000,0,1]]}]}
0

"

Man beachte am Anfang der Ausgabe das „722a“ und am Ende die „0“ und die Leerzeilen :confused:

Verwendet man hingegen „file_get_conents“, dann sieht die Ausgabe wunderbar aus und es klappt auch mit dem „json_decode“:

$data = file_get_contents("http://192.168.178.48/volkszaehler.org/htdocs/middleware.php/data.json?from=Yesterday&to=today&uuid[]=b6ae8c20-683c-01e5-0000-0000xxxxxxxx");
var_dump($data);

Ausgabe:

string(29226) "{"version":"0.3","data":[{"uuid":"b6ae8c20-683c-01e5-0000-0000xxxxxxxx","from":1548716280000,"to":1548802920000,"min":[1548716340000,0],"max":[1548789960000,600],"average":8.435,"consumption":203,"rows":1445,"tuples":[[1548716340000,0,1],[1548716400000,0,1],...................,[1548802920000,0,1]]}]}"

Wie kann das sein? Ich habe im Browser mir die Debug Ausgaben angeschaut und alles mögliche versucht…ich konnte nicht herausfinden, woher die komische Ausgabe bei „Sys_GetURLContent“ kommt :confused: Und diese Ausgaben kommen auch nur bei „Sys_GetURLContent“ und nirgends sonst :confused:

@Thomas: Welche IPS-Version hast du genau installiert? Und auf welchem Windows?

Viele Grüße,
Chris

Hey,

IPS: 5.0 vom 16.12.18

Windows 10 64 Bit

Hallo miteinander,

ich mache Fortschritte wenn auch langsam aber man muß ja leider auch etwas arbeiten.

Ich habe dank der Hilfe von Chris von dem bestimmten Server die Verbrauchsdaten von gestern geholt, gut. Danach machte ich mich ans

Werk die Daten vom aktuellen Tag zu hohlen das hat auch geklappt.

Jetzt wollte ich die Daten der Woche abholen, Pustekuchen, da sagt mir doch die böse Software das die Datei zu Groß sei > 1 MB.

In der Doku steht man solle den Wert auslagern oder so ähnlich.

Frage 1: Kann mir jemand einen Tipp geben wie ich das anstelle ich fand im Forum 2 Beispiele daraus werde ich nicht richtig schlau.

Ich überlegte mir eine alternative und dachte mal sehen ob ich den Zählerstand herein bekomme.

Jetzt kommts, mein erstes selbst gebastelte Script, trörö :smiley:

set_time_limit(60);

$data = Sys_GetURLContentEx("http://192.168.178.48/json/API.php/getReading/?meterId=76",Array("Timeout"=> 60000));

$json = json_decode($data);

print_r($json);

SetValue(17204, $json->result[0]->counter);

Die Anfrage dauert 40 sec. von daher wollte das erst nicht richtig. Ich habe mir die Lösung selbst erarbeitet, ein Lob nehme ich

gerne an. :wink:

Frage 2: Wenn ich für dieses Skript ein time limit von 60 nehme ist dies auf dauer schädlich für den Programmablauf, bzw. gibt es

noch einen anderen Weg?

Ich dachte wenn ich den Zählerstand habe kann ich mit Skripten hier aus dem Forum auch den Wochen-, Monats-, und

Jahresverbrauch ermitteln.

Da kann ich unter Umständen auch mit dem Modul von Paresy „paresyMisc“ etwas anfangen.

Für Tipps und Meinungen währe ich dankbar

Gruß
Thomas

Wenn das so groß ist, wird Dir wohl nichts anders übrig bleiben, als das in einer Datei zwischen zu speichern und dann mit dieser zu arbeiten.

Dateien schreiben

Ich habe das Problem jetzt anders gelöst denn wie ich den Wert zwischenspeichere weiß ich noch nicht.

Jetzt habe ich den Zählerstand reingeholt und mit diesem Skript https://www.symcon.de/forum/threads/36830-Energieberichte ausgewertet. Natürlich bockte es erst ein wenig aber nach einem gewissen Feintuning funktionierte es und der Anfänger war happy, :smiley: