WLAN-Adapter VZ mit JSON auslesen

Hallo, ich bekomme am Donnerstag einen neuen Stromzähler, für den ich mir zum Auslesen einen WLAN-Adapter VZ beschafft habe. Dieser stellt mittels Webserver ein JSON Format zur Verfügung. Ich kenne mich PHP mässig nicht so aus, kann mir jemand sagen wie ich die Werte am Einfachsten in Variablen bekommen???

Beispiel siehe Bild:
JSON.jpg

Besten Dank! Andreas

JSON Daten von einer Webseite auslesen und auswerten

Ansonsten müstest Du schreiben wo es genau hängt bzw. was Du probiert hast.

Danke für deine Antwort. Ich möchte einfach aus der Webseite die LAST Werte jeweils in eine Variable schreiben, habe aber leider keine Ahnung wie… außer ich würde den Textparser verwenden… ich dachte das geht beim JSON Format evtl. wesentlich leichter?

Ich kenne den WLAN-Adapter VZ zwar nicht (klingt aber interessant, Quelle?), habe das aber mit anderer Hardware, vielleicht etwas „quick and dirty“, so gelöst.

-WWW-Reader auf den Webserver verbunden und Ausleseintervall angegeben
-Text Parser-Instanz mit dem WWW-Reader verbunden
Konfiguration des Text Parser:
1. Vorher abschneiden: <letzte 5 Stellen der UUID>
2. Vorher abschneiden: tuples
3. Vorher abschneiden: , (Komma+Leerzeichen)
4. Hole Text: ] (Leerzeichen+eckige Klammer zu) und schreibe in Variable 12345

  • Nr. 1-4 wird für alle zu füllenden Variablen oder UUID wiederholt.

Funktionier bei mir mit dem vzlogger auf Raspi.

Grüße
Frank

Hat das Gerät denn eine dokumentierte API bzw. ist Dir bekannt wie die Daten genau abzurufen sind?

Oder einfach so:


$json = file_get_contents($URL_ZUR_JSON);
$werte = json_decode($json);
print_r($werte);

In dem $werte-Array hast Du dann alle Werte zu Deiner Verfügung.

@Titus

genau sowas habe ich gesucht, besten Dank, wenn du mir vielleicht noch ein Beispielcode liefern könntest wie ich einen Einzelwert vom Beispiel in eine Variable lesen könnte wäre das ein Traum! :o (also z.B. die 3 Last Werte)

Habe zwar Dein JSON nicht zum testen zur Verfügung, aber die Werte sind in einem Objekt:


$uuid= $werte->data->0->uuid;

Besten Dank, es wird ausgegeben:

stdClass Object
(
    [version] => 0.6.1
    [generator] => vzlogger
    [data] => Array
        (
            [0] => stdClass Object
                (
                    [uuid] => c639ed60-11fd-11ea-a624-391967baa162
                    [last] => 7911000
                    [interval] => -1
                    [protocol] => sml
                    [tuples] => Array
                        (
                            [0] => Array
                                (
                                    [0] => 7872000
                                    [1] => 1034,4366666667
                                )

                        )

                )

            [1] => stdClass Object
                (
                    [uuid] => df2b2200-11fd-11ea-a1f8-7baf23147e2c
                    [last] => 7911000
                    [interval] => -1
                    [protocol] => sml
                    [tuples] => Array
                        (
                            [0] => Array
                                (
                                    [0] => 7872000
                                    [1] => 2770,5
                                )

                        )

                )

        )

)

Mit $uuid= $werte->data->0->uuid;
kommt leider:

Parse error: syntax error, unexpected ‚0‘ (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or ‚{‘ or ‚$‘ in C:\IP-Symcon\scripts\13415.ips.php on line 7

Da passt was mit der Syntax vermutlich nicht?

Hallo,

json_decode($json) gibt Dir Objekte zurück, json_decode($json, true) ein array. Versuchs mal damit.

Grüße, Gerhard

Leider keine Änderung dadurch…:o

Ja, sorry. [data] ist ja ein Array. Es müsste daher so gehen:


 $werte->data[0]->uuid;

dann kommt:
Notice: Trying to get property ‚data‘ of non-object in C:\IP-Symcon\scripts\13415.ips.php on line 8

Hat noch jemand eine Idee wie man dieses Array bzw. Objekte ausliest???

Zeig doch bitte den ganzen Code.
Michael

Habe gemerkt das von dem alten Tipp das true noch drin war, ohne geht es jetzt, besten Dank an alle!!!

Eine Frage hätte ich noch, mit

$werte->data[0]->uuid; komme ich an die UID.

Wie komme ich an den Wert: 1034,4366666667

Besten Dank!

Das wäre dann $werte->data[0]->tuples[0][1]

super, vielen Dank allen!