Rapportera temperatur från Netatmo via Python
Postat: 16 jun 2016, 11:39
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!
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)