Salut les chefs Parseur,
un peu long je vous l'accorde !!
Je n'y comprends pas grand chose, mais avec l'aide de tous ceux qui ont travaillé sur Netatmo, j'ai repris des codes qui m'ont permis de récupérer les données du Pluviomètre, de l'Anémomètre, et même en bricolant de la station.
Je pensais qu'en bricolant le code ci-dessous je récupèrerai les données du module extérieure (NAModules1), mais je ne reçois dans le Listener que le message "{"error":{"code":404,"message":"Not Found"}}"
Pour les autres équipements (NAModules2) et (NAModules3) j'obtiens bien les données.
Exemple pour l'anémomètre :
3
9.0
1.576632695E9
230.0
22.0
250.0
11.0
241.0
8
Anémomètre
06:00:00:03:b0:66
le code pour les modules est celui-ci :
//On récupère la trame et on la formate
var objan = JSON.parse(trame);
// Recherche et mise en forme du Module Extérieur
for (i=0; i<objan.body.devices[0].modules.length; i++) {
typemodules = objan.body.devices[0].modules[i].type
if ( typemodules == "NAModule1" ) {
parammodulexterieur = objan.body.devices[0].modules[i].dashboard_data
batterymodulexterieur = objan.body.devices[0].modules[i].battery_percent
}
}
//Récupération et mise en forme des variables disponibles
id = objan.body.devices[0].modules[0]._id;
nom_module=objan.body.devices[0].modules[0].module_name;
temperature1 = parammodulexterieur.temperature;
Temperature = parseFloat(temperature1)
humidity1 = parammodulexterieur.humidity;
Humidite = parseFloat(humidity1)
battery1 = batterymodulexterieur;
min_temp1 = parammodulexterieur.min_temp;
Temperature_minimale = parseFloat(min_temp1)
max_temp1= parammodulexterieur.max_temp;
Temperature_maximale= parseFloat(max_temp1)
date_max_temp1=parammodulexterieur.date_max_temp;
Date_temperature_maxi=parseFloat(date_max_temp1)
date_min_temp1=parammodulexterieur.date_min_temp;
Date_temperature_mini=parseFloat(date_min_temp1)
temp_trend1=parammodulexterieur.temp_trend;
Evolution_temperature=parseFloat(temp_trend1)
//Mise en forme pour l’état de la batterie pour Lifedomus
if (battery1 < 20) {
batteryan = BATTERY_LEVEL.LOW;
} else if (battery1 < 80) {
batteryan = BATTERY_LEVEL.MEDIUM;
} else {
batteryan = BATTERY_LEVEL.FULL;
}
//Affichage pour débugage
ldprint(id);
ldprint(nom_module);
ldprint(Temperature);
ldprint(Humidity);
ldprint(Temperature_minimale);
ldprint(Temperature_maximale);
ldprint(Date_temperature_mini);
ldprint(Date_temperature_maxi);
ldprint(Evolution_temperature);
ldprint(batteryan);
Question : Où est mon erreur ?
Il y a un problème que j'avais vu sur le forum, des variables avec le même nom, ici dans la station et dans le module extérieure ?
En vert les données que je veux récupérer.
Voilà ce que me renvoie le Listener :
{"body":{"devices":[{"_id":"70:ee:50:22:a4:0a","station_name":"XXXXX","date_setup":1506167028,"last_setup":1506167028,"type":"NAMain","last_status_store":1576685936,"module_name":"Salon","firmware":140,"last_upgrade":1506167029,"wifi_status":58,"reachable":true,"co2_calibrating":false,"data_type":["Temperature","CO2","Humidity","Noise","Pressure"],"place":{"altitude":xx,"city":"AAAAAAAA","country":"FR","timezone":"Europe\/Paris","location":[4.xxxxxx,43.xxxxxxx]},"dashboard_data":{"time_utc":1576685924,"Temperature":21.5,"CO2":641,"Humidity":57,"Noise":45,"Pressure":1016.9,"AbsolutePressure":1013.3,"min_temp":21.5,"max_temp":22.8,"date_max_temp":1576668228,"date_min_temp":1576652182,"temp_trend":"stable","pressure_trend":"stable"},"modules":[{"_id":"02:00:00:22:ae:62","type":"NAModule1","module_name":"Patio","data_type":["Temperature","Humidity"],"last_setup":1506167057,"battery_percent":100,"reachable":true,"firmware":44,"last_message":1576685928,"last_seen":1576685903,"rf_status":74,"battery_vp":6050,"dashboard_data":{"time_utc":1576685903,"Temperature":16.1,"Humidity":72,"min_temp":9.7,"max_temp":22.9,"date_max_temp":1576671803,"date_min_temp":1576655504,"temp_trend":"down"}},{"_id":"05:00:00:06:c1:46","type":"NAModule3","module_name":"Pluviome\u0300tre","data_type":["Rain"],"last_setup":1575188696,"battery_percent":100,"reachable":true,"firmware":8,"last_message":1576685928,"last_seen":1576685928,"rf_status":80,"battery_vp":6196,"dashboard_data":{"time_utc":1576685916,"Rain":0,"sum_rain_1":0,"sum_rain_24":0}},{"_id":"06:00:00:03:b0:66","type":"NAModule2","module_name":"An\u00e9mome\u0300tre","data_type":["Wind"],"last_setup":1575308451,"battery_percent":100,"reachable":true,"firmware":19,"last_message":1576685928,"last_seen":1576685928,"rf_status":76,"battery_vp":6108,"dashboard_data":{"time_utc":1576685922,"WindStrength":9,"WindAngle":241,"GustStrength":11,"GustAngle":250,"max_wind_str":22,"max_wind_angle":230,"date_max_wind_str":1576632695}}]}],"user":{"mail":"xxxx_xxxx@xxxx.fr","administrative":{"lang":"fr-FR","reg_locale":"fr-FR","country":"FR_FR","unit":0,"windunit":0,"pressureunit":0,"feel_like_algo":0}}},"status":"ok","time_exec":0.09859418869018555,"time_server":1576686335}
Merci de vos réponses.
un peu long je vous l'accorde !!
Je n'y comprends pas grand chose, mais avec l'aide de tous ceux qui ont travaillé sur Netatmo, j'ai repris des codes qui m'ont permis de récupérer les données du Pluviomètre, de l'Anémomètre, et même en bricolant de la station.
Je pensais qu'en bricolant le code ci-dessous je récupèrerai les données du module extérieure (NAModules1), mais je ne reçois dans le Listener que le message "{"error":{"code":404,"message":"Not Found"}}"
Pour les autres équipements (NAModules2) et (NAModules3) j'obtiens bien les données.
Exemple pour l'anémomètre :
3
9.0
1.576632695E9
230.0
22.0
250.0
11.0
241.0
8
Anémomètre
06:00:00:03:b0:66
le code pour les modules est celui-ci :
//On récupère la trame et on la formate
var objan = JSON.parse(trame);
// Recherche et mise en forme du Module Extérieur
for (i=0; i<objan.body.devices[0].modules.length; i++) {
typemodules = objan.body.devices[0].modules[i].type
if ( typemodules == "NAModule1" ) {
parammodulexterieur = objan.body.devices[0].modules[i].dashboard_data
batterymodulexterieur = objan.body.devices[0].modules[i].battery_percent
}
}
//Récupération et mise en forme des variables disponibles
id = objan.body.devices[0].modules[0]._id;
nom_module=objan.body.devices[0].modules[0].module_name;
temperature1 = parammodulexterieur.temperature;
Temperature = parseFloat(temperature1)
humidity1 = parammodulexterieur.humidity;
Humidite = parseFloat(humidity1)
battery1 = batterymodulexterieur;
min_temp1 = parammodulexterieur.min_temp;
Temperature_minimale = parseFloat(min_temp1)
max_temp1= parammodulexterieur.max_temp;
Temperature_maximale= parseFloat(max_temp1)
date_max_temp1=parammodulexterieur.date_max_temp;
Date_temperature_maxi=parseFloat(date_max_temp1)
date_min_temp1=parammodulexterieur.date_min_temp;
Date_temperature_mini=parseFloat(date_min_temp1)
temp_trend1=parammodulexterieur.temp_trend;
Evolution_temperature=parseFloat(temp_trend1)
//Mise en forme pour l’état de la batterie pour Lifedomus
if (battery1 < 20) {
batteryan = BATTERY_LEVEL.LOW;
} else if (battery1 < 80) {
batteryan = BATTERY_LEVEL.MEDIUM;
} else {
batteryan = BATTERY_LEVEL.FULL;
}
//Affichage pour débugage
ldprint(id);
ldprint(nom_module);
ldprint(Temperature);
ldprint(Humidity);
ldprint(Temperature_minimale);
ldprint(Temperature_maximale);
ldprint(Date_temperature_mini);
ldprint(Date_temperature_maxi);
ldprint(Evolution_temperature);
ldprint(batteryan);
Question : Où est mon erreur ?
Il y a un problème que j'avais vu sur le forum, des variables avec le même nom, ici dans la station et dans le module extérieure ?
En vert les données que je veux récupérer.
Voilà ce que me renvoie le Listener :
{"body":{"devices":[{"_id":"70:ee:50:22:a4:0a","station_name":"XXXXX","date_setup":1506167028,"last_setup":1506167028,"type":"NAMain","last_status_store":1576685936,"module_name":"Salon","firmware":140,"last_upgrade":1506167029,"wifi_status":58,"reachable":true,"co2_calibrating":false,"data_type":["Temperature","CO2","Humidity","Noise","Pressure"],"place":{"altitude":xx,"city":"AAAAAAAA","country":"FR","timezone":"Europe\/Paris","location":[4.xxxxxx,43.xxxxxxx]},"dashboard_data":{"time_utc":1576685924,"Temperature":21.5,"CO2":641,"Humidity":57,"Noise":45,"Pressure":1016.9,"AbsolutePressure":1013.3,"min_temp":21.5,"max_temp":22.8,"date_max_temp":1576668228,"date_min_temp":1576652182,"temp_trend":"stable","pressure_trend":"stable"},"modules":[{"_id":"02:00:00:22:ae:62","type":"NAModule1","module_name":"Patio","data_type":["Temperature","Humidity"],"last_setup":1506167057,"battery_percent":100,"reachable":true,"firmware":44,"last_message":1576685928,"last_seen":1576685903,"rf_status":74,"battery_vp":6050,"dashboard_data":{"time_utc":1576685903,"Temperature":16.1,"Humidity":72,"min_temp":9.7,"max_temp":22.9,"date_max_temp":1576671803,"date_min_temp":1576655504,"temp_trend":"down"}},{"_id":"05:00:00:06:c1:46","type":"NAModule3","module_name":"Pluviome\u0300tre","data_type":["Rain"],"last_setup":1575188696,"battery_percent":100,"reachable":true,"firmware":8,"last_message":1576685928,"last_seen":1576685928,"rf_status":80,"battery_vp":6196,"dashboard_data":{"time_utc":1576685916,"Rain":0,"sum_rain_1":0,"sum_rain_24":0}},{"_id":"06:00:00:03:b0:66","type":"NAModule2","module_name":"An\u00e9mome\u0300tre","data_type":["Wind"],"last_setup":1575308451,"battery_percent":100,"reachable":true,"firmware":19,"last_message":1576685928,"last_seen":1576685928,"rf_status":76,"battery_vp":6108,"dashboard_data":{"time_utc":1576685922,"WindStrength":9,"WindAngle":241,"GustStrength":11,"GustAngle":250,"max_wind_str":22,"max_wind_angle":230,"date_max_wind_str":1576632695}}]}],"user":{"mail":"xxxx_xxxx@xxxx.fr","administrative":{"lang":"fr-FR","reg_locale":"fr-FR","country":"FR_FR","unit":0,"windunit":0,"pressureunit":0,"feel_like_algo":0}}},"status":"ok","time_exec":0.09859418869018555,"time_server":1576686335}
Merci de vos réponses.
C'est en cherchant que l'on trouve...
Al_Bla
Al_Bla