Rapportera temperatur från Netatmo via Python

Denna forumdel är inte längre aktiv, för att diskutera saker relaterat till väder eller temperatur.nu - använd https://www.facebook.com/groups/temperatur.nu
Kategoriregler
Denna forumdel är inte längre aktiv, för att diskutera saker relaterat till väder eller temperatur.nu - använd https://www.facebook.com/groups/temperatur.nu
palaxel
Wannabe
Inlägg: 6
Blev medlem: 11 jul 2015, 22:42
Ort: Yngsjö

Rapportera temperatur från Netatmo via Python

Inlägg av palaxel »

Sedan ett tag tillbaka kan inte temperatur.nu hämta temperaturer från Netatmo. För att rapportera min temperatur har jag köpt en Raspberry Pi och använder nedanstående rapporteringsskript i Python 3 för att skicka temperaturdata till temperatur.nu. Det är ingen idé att skicka oftare än var tionde minut beroende på att väderstationen skickar bara upp data till Netatmo var tionde minut.

Innan du börjar måste du ladda ner modulen netatmo-api-python från GitHub (https://github.com/philippelt/netatmo-api-python): Du måste även skapa dig en app på Netatmo Connect (https://dev.netatmo.com/) så att du kan komma åt dina data på Netatmo.

I skriptet nedan måste du konfigurera inloggningen mot Netatmo samt den hashkod du fått från temperatur.nu för att rapportera via URL.

Det finns ingen felhantering mer än ej uppdaterade värden och lite skärmutskrifter!

Kod: Markera allt

import sys
import lnetatmo ### https://github.com/philippelt/netatmo-api-python/blob/master/usage.md
import urllib.request
import urllib.parse

timeout = 30
authorization = lnetatmo.ClientAuth(clientId = _CLIENT_ID, clientSecret = _CLIENT_SECRET, username = _USERNAME, password = _PASSWORD)
devList = lnetatmo.DeviceList(authorization)
netatmoData = devList.lastData()
temperature = netatmoData['Outdoor']['Temperature']
print(temperature)

notUpdated = devList.checkNotUpdated(delay=900)
if notUpdated != None:
    print("Station error aborting before reporting to temperatur.nu!")
    for m in notUpdated:
        print("Warning, sensor %s information is obsolete" % m)
        error = +1
        if devList.moduleByName(m) == None : # Sensor is not an external module
            print("The station is lost")
    sys.exit(1)

timeout = 20
data = {}
data['hash'] = '_MY_HASH'
data['t'] = temperature
url_values = urllib.parse.urlencode(data)
print(url_values)
url = 'http://www.temperatur.nu/rapportera.php'
full_url = url + '?' + url_values
print(full_url)
response = urllib.request.urlopen(full_url)
result = response.read()
print(result)
Låst