PHP brauche Hilfe bei PHP Script

Hotbird

gehört zum Inventar
Hallo zusammen,

hab in letzter Zeit nicht mehr so viel Zeit um hier rein zu schauen. Seit mein Kleiner auf der Welt ist ( 1 1/2 Jahre ) habe ich leider auch kaum noch Zeit irgendetwas am PC zu testen oder zu recherchieren... Dieses Thema beschäftigt mich jetzt schon einen Monat lang ( immer mal wieder ) und mittlerweile gehen mir die Ideen aus.. Es geht um ein Script womit ich meine Netatmo Daten auf dem Raspberry Pi zusammen sammel und das Ganze dann in ein Bild verarbeiten lasse welches mit auf einem Kindle angezeigt wird. Funktionierte bis vor 1-2 Monaten ganz gut, jetzt hat Netatmo aber das Verfahren umgestellt wie man an die Daten kommt.

Hier ist das Originale Script ( Ur-Script )

Hier mein Versuch das Ganze irgendwie auf den accesstoken umzubauen

Code:
<?php
// Zugangsdaten Netatmo
$username = "emailaddy";
$password = "passwort";
$app_id = "appID";
$app_secret = "clientsecret";
$access_token = "accesstoken"
$refresh_token = "refreshtoken"
// Token anfordern
$postdata = array(
'grant_type' => "refresh_token",
'client_id' => $app_id,
'client_secret' => $app_secret,
'username' => $username,
'password' => $password,
'scope' => 'read_station'
);
$url = "https://api.netatmo.net/oauth2/token";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
// Anfrage mit Token
$params = null;
$params = json_decode($response, true);
$api_url =
"https://api.netatmo.net/api/devicelist?access_token=" .
$params['refresh_token'];
// Daten abrufen
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$array = curl_exec($ch);
curl_close($ch);
[/CODE]

Ich habe auch schon recherchiert und etwas gefunden wie es funktionieren soll. Da hat allerdings jemand ein Python Script laufen. Ich habe leider keine Ahnung wie ich das in mein Script einbauen kann.

Code:
1: auf dev.netatmo.com bei der App Token generieren
2: den Code von Username / Passwort umstellen auf refresh Token

Alter Code (Emailadresse und die Springs sind nun Zufall, nicht die wahre Identität:
#payload = {'grant_type': 'password',
#          'username': "MEINE-EMAIL@BLABLA.DE",
#          'password': "dfkgjhdgkj",
#          'client_id':"34598kjs394857skjf84",
#          'client_secret': "345kj3434k5hkjh345uh34uh",
#          'scope': 'read_station'}

Neuer Code (der Refresh Token ist der im 1. Schritt generierte Token (nicht der Access Token):
payload = {'grant_type': 'refresh_token',
          'client_id':"34598kjs394857skjf84",
          'client_secret': "345kj3434k5hkjh345uh34uh",
          'refresh_token': "345kj354kj34klj35lk3j5lk3j54",
          'scope': 'read_station'}




Und dann gehts weiter mit anmelden und Auslesen der Werte:

try:
    response = requests.post("https://api.netatmo.com/oauth2/token", data=payload)
    response.raise_for_status()
    access_token=response.json()["access_token"]
    refresh_token=response.json()["refresh_token"]
    scope=response.json()["scope"]
    #print("Your access token is:", access_token)
    #print("Your refresh token is:", refresh_token)
    #print("Your scopes are:", scope)

    params = {
    'access_token': access_token
    }
    try:
        response = requests.post("https://api.netatmo.com/api/getstationsdata", params=params)
        response.raise_for_status()
        data = response.json()["body"]
        print json.dumps(data, indent=4, sort_keys=True)
        print '--------'
        print "Sensor: Kueche"
        my_luftdruck = data['devices']
['dashboard_data']['Pressure']
        print "Pressure",
        print my_luftdruck

und so weiter für alle Sensoren dann...

Hoffe hier ist jemand, der mir den entsprechenden Tip geben kann damit es wieder funktioniert.

Viele Grüße aus Frankfurt am Main
 
Oben