PHP-Beispiel zur API Abfrage der Zählerstände


#1

Hallo,

Ich baut mir gerade eine Visualisierung zu Hause, und möchte gerne die Zählerstände
abfragen. Die API habe ich mir angeschaut, aber meine Kenntnisse reichen bei Weitem nicht,
um das alles zu verstehen.

Ich suche nun ein PHP Script, welches ich mit meinen Discovery-Daten ergänze,
und welches dann bei Aufruf im Browser als Antwort meine Zählerstände ausgibt.
Nicht mehr und nicht weniger.

Hat Jemand Sowas?
Könnte Discovergy sowas zur Verfügung stellen?

Danke & Gruß,

Volker


#2

Moin Volker,

vereinfacht hier ein Script, welches das Prinzip der PHP Nutzung zeigt für den “/last_reading” API Endpunkt:

<? 
$username ='meine@email.de';
$password ='MeinSuperGeheimesPasswort';
$meterId ='MeineZählerkennung bei Discovergy';
$json = json_decode(file_get_contents(" https://".$username.":".$password."@api.discovergy.com/public/v1/last_reading?meterId=".$meterId));
echo "Zählerstand:".$json->values->energy;
?>

#3

Wo kann man die Zählerkennung (meterID?) bekommen?
Ich bekomme Fehlermeldung “400 Bad Request: Invalid meterId: xxxxxxx”
sowohl wenn ich die Zählpunktbezeichnung DE001068977051000000000000xxxxxxx eingebe
als auch mit der 8 stelligen nummer die im Portal in der Spalte “Beschreibung” entnehmen kann


#4

Da darfst Du nicht Deine IBAN eingeben…!!!


#5

Du kannst den Meters Endpunkt der API verwenden ( https://api.discovergy.com/public/v1/meters ) einfach im Browser aufrufen und Zugangsdaten eingeben, dann erhälst Du eine JSON Antwort.


#6

Danke. Nun kommt keine Fehlermeldung mehr, aber es wird auch kein Wert angezeigt. Die gesendete Seite enthält nur

Zählerstand:


#7

@wireless-dj wir hatten uns ja gestern noch bilateral etwas ausgetauscht und Du hattest im PHP Script scheinbar einen Fehler in der URL gefunden. Kannst Du diesen hier nennen?

@tubist88 ich hatte keine PHP Testumgebung, weshalb der Code mehr oder minder aus dem Kopf geschrieben wurde… Wenn ich die Kommunikation mit Volker richtig interpretiere, dann war noch ein Typo in der URL.


#8

wäre nett wenn Du mir den Typo verraten würdest ansonsten ist das hier leider ziemlich nutzlos


#9

Moin,

Wenn Du folgende Zeile im Browser aufrufst ( Deine Daten eintragen ),
dann bekommst Du eine JSON Antwort.:

https://MeinDiscovergyUser:MeinDiscovergyPasswort@api.discovergy.com/public/v1/last_reading?meterId=MeineMeterID

In dieser Antwort findest Du die Zählerstände:
energy
energyOut

Diese kannst Du dann weiter bearbeiten.

Gruß,

Volker


#10

Das funktioniert.

Thema hier ist aber " PHP-Beispiel zur API Abfrage der Zählerstände"

und das haben wir immer noch nicht :frowning:

Mein Anwendungsfall: Ich brauche die Daten in Loxone, welches kein https kann. Deswegen die idee. auf dem NAS ein PHP script aufzurufen, welches die Daten holt.


#11

Was willst Du denn noch wissen?
Suchst Du ein fertig geschriebenes Script, welches Du in Loxone benutzen kannst?
Kann ich Dir nicht liefern.

Wenn Du diese URL im Browser aufrufst, bekommst Du eine Antwort.
Hier sind die gefragten Werte enthalten.

Wie man diese Werte nun in PHP - mit ein wenig Eigeninitiative - in Variablen speichert,
solltest Du hinbekommen, denn das wirst Du müssen, um diese Werte zu benutzen,
und sie woanders hin weiter zu verarbeiten.

Das sind ganz simple Basics, ohne die wirst Du nicht weit kommen.
Wie man sowas macht, erfährst Du z.B. auf
https://www.php.net/manual/de/language.variables.basics.php


#12

Vielleicht liest Du einfach nochmal die Überschrift des Thread und denkst dann kurz drüber nach.
Wenn Du das Beispiel nicht liefern kannst, was schreibst Du dann hier?


#13

Vielleicht liesst Du nochmal mein 1. Posting, und denkst kurz darüber nach.
Da steht, dass ich ein Beispiel suche!

API war so nett, mir eines zu geben - steht im 2. Posting.

Was also erwartest Du hier?


#14

sorry, falscher Ansprechpartner. Tut mir leid. Meine Posting war an API gerichtet.
Denn das scprit funktioniert nicht, weil es wie er ja selber sagt, einen Typo hat.

Funktioniert es bei Dir? Hast Du was geändert dran? Wenn ja, wäre es nett wenn Du das berichtigte Script hier postest