Script, um Netatmo-Daten direkt auszulesen.
Zugangsdaten beantragen: Auf http://dev.netatmo.com/ anmelden und eine neue App anlegen. Client secret und die Client id merken, Username und Passwort sind die, die auch in der iOS-App bzw. beim Login auf der Netatmo-Seite benutzt wird.
"App" meint hier jedes Programm, das Zugriff auf die Daten haben kann.
Technische Referenz mit den verfügbaren Daten siehe
hier.
var http = require('https');
var querystring = require('querystring');
// Zugangsdaten Netatmo
var username = "uuuuu;
var password = "ppppp";
var client_id = "iiiii";
var client_secret = "sssss";
var host = "api.netatmo.net";
var auth_url = "/oauth2/token";
var api_url = "https://" + host + "/api/devicelist?access_token=";
var auth_data = querystring.stringify({
username: username,
password: password,
client_id: client_id,
client_secret: client_secret,
scope: 'read_station',
grant_type: 'password'
});
var login_opt = {
host: host,
path: auth_url,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': auth_data.length
}
};
var req = http.request(login_opt, function (res) {
var body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
jbody = JSON.parse(body);
// console.log ("jbody: ", jbody);
access_token = jbody.access_token;
// Anfrage mit Token
var url = api_url + access_token;
var req = http.get(url, function(res) {
var body = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += String(chunk);
});
res.on('end', function() {
var jbody = JSON.parse( body );
// console.log ("jbody: ", jbody);
for (var i in jbody.body.modules) {
var module = jbody.body.modules[i];
// console.log ("module: ", module);
switch(module.type) {
case "NAModule1":
type = "outdoor";
temp = module.dashboard_data.Temperature;
humidity = module.dashboard_data.Humidity;
console.log ("module=" + i + ", type=" + type + ", temp=" + temp + ", humidity" + humidity);
break;
case "NAModule2":
type = "wind";
winddir = module.dashboard_data.WindAngle;
windspeed = module.dashboard_data.WindStrength;
windgustdir = module.dashboard_data.GustAngle;
windgust = module.dashboard_data.GustStrength;
console.log ("module=" + i + ", type=" + type + ", winddir=" + winddir + ", windspeed" + windspeed + ", windgustdir=" + windgustdir + ", windgust");
break;
case "NAModule3":
type = "rain";
rain = module.dashboard_data.Rain;
sum_rain_1 = module.dashboard_data.sum_rain_1;
sum_rain_24 = module.dashboard_data.sum_rain_24;
console.log ("module=" + i + ", type=" + type + ", rain=" + rain + ", sum_rain_1" + sum_rain_1 + ", sum_rain_24=" + sum_rain_24);
break;
case "NAModule4":
type = "indoor";
temp = module.dashboard_data.Temperature;
humidity = module.dashboard_data.Humidity;
co2 = module.dashboard_data.CO2;
console.log ("module=" + i + ", type=" + type + ", temp=" + temp + ", humidity" + humidity + ", co2=" + co2);
break;
default:
break;
};
};
});
});
});
res.on('error', function (err) {
console.log(err);
});
});
req.on('error', function (err) {
console.log(err);
});
req.write(auth_data);
req.end();
Ist natürlich nur ein Beispiel ohne SPeicherung oder Weiterverarbeitung, es gibt auch eine Menge weiterer Daten.
Von
hallo,
falls Interesse besteht, Daten selbst zu speichen: von Netatmo kann man die Daten auch per http-Request abrufen, da bekommt man alle Daten aller Wetter-Module (keine Prognosen etc).
Von
Interesse immer. Hast Du ein Script dafür ?
Von
Ich habe mal ein php-script gemacht, mit dem ich die Netatmo-Daten in Weatherunderground übertragen, das kann man nehmen, um zu verstehen, wie das funktioniert. kannst du mit php was anfangen? sonst versuche ich, das in javascript zu übertragen.
Von
Ne mit PHP hab ich mich noch nicht so tief beschäftigt. Javascrit schon eher.
Von
ok, ich habe den Zugriff in javascript gemacht (getestet im AM meines GW V5+).
Wegen der besseren Formatierungsmöglichkeiten habe ich das als "Antwort" verfasst.
Neuen Kommentar hinzufügen