Forum Lifedomus
Demande d'aide Problème avec un code !! - Version imprimable

+- Forum Lifedomus (http://forum-lifedomus.com)
+-- Forum : Vos automates et applications (http://forum-lifedomus.com/forumdisplay.php?fid=52)
+--- Forum : Autres (http://forum-lifedomus.com/forumdisplay.php?fid=85)
+--- Sujet : Demande d'aide Problème avec un code !! (/showthread.php?tid=4598)



Problème avec un code !! - Al_Bla - 12-19-2019

Salut les chefs Parseur, [Image: 01xx-9acf6.gif]
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.


RE: Problème avec un code !! - jojo - 12-19-2019

"
 if ( typemodules == "NAModule1" ) {
       parammodulexterieur = objan.body.devices[0].modules[i].dashboard_data
       batterymodulexterieur = objan.body.devices[0].modules[i].battery_percent
   }
"

Je ne suis pas du tout un programmeur, donc , c'est difficile pour moi de mettre le doigts sur ce qui n'irais pas.

Mais la chose que je me dit, pourquoi ce test sur NAModule1 (et pas les 2/3), alors que du dis que NAModule1 ne fonctionne pas ?


RE: Problème avec un code !! - Al_Bla - 12-19-2019

(12-19-2019, 09:51 AM)jojo a écrit : "
 if ( typemodules == "NAModule1" ) {
       parammodulexterieur = objan.body.devices[0].modules[i].dashboard_data
       batterymodulexterieur = objan.body.devices[0].modules[i].battery_percent
   }
"

Je ne suis pas du tout un programmeur, donc , c'est difficile pour moi de mettre le doigts sur ce qui n'irais pas.

Mais la chose que je me dit, pourquoi ce test sur NAModule1 (et pas les 2/3), alors que du dis que NAModule1 ne fonctionne pas ?

Salut Jojo,


Le code fonctionne très bien pour NAModule2 (Anémomètre) et NAModule3 (Pluviomètre), les données remontent bien. Même en bricolant le code, j'ai réussi a faire remonter les données de (NAMain) la station

Mais pour le NAModule1, j'obtiens un message d'erreur 404, Pourquoi ?
La question que je me pose "Est-ce que cela ne vient pas du fait que les noms des données NAMain et NAModule1 sont les mêmes ?"
Exemple : temperature

C'est pour cela que j'appelle à l'aide la communauté des codeurs !!!

PS : Si un codeur tombe sur mon post, peut-il me dire comment transformer une date linux (1576593006) en date au format (dd/mm/aaaa hh:mm), dans un code pour l'avoir en affichage dans DS par exemple.

Merci Jojo pour ta réponse.... mais il faut encore creuser un peu, je cherche toujours...


RE: Problème avec un code !! - Al_Bla - 12-19-2019

Salut Jojo et les super codeurs,

Pour plus d'info complète ci-dessous le Listener complet des 4 équipements (Station "NAMain"- Anémomètre "NAModule2"- Pluviomètre "NAModule3" - Module ext."NAModule1")
Module ext. renvoie "error"

Voir le code post précédent pour le Module ext.(NAModule1)


Listener :

{"error":{"code":404,"message":"Not Found"}}

0.0
3
0.0
0.0
Pluviomètre
05:00:00:06:c1:46
{"body":{"devices":[{"_id":"70:ee:50:22:a4:0a","station_name":"XXXX","date_setup":1506167028,"last_setup":1506167028,"type":"NAMain","last_status_store":1576755517,"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":30,"city":"xxxxx","country":"FR","timezone":"Europe\/Paris","location":[xxxxxx,yyyyyyy]},"dashboard_data":{"time_utc":1576755508,"Temperature":21.7,"CO2":541,"Humidity":54,"Noise":47,"Pressure":1014.1,"AbsolutePressure":1010.5,"min_temp":21.3,"max_temp":21.9,"date_max_temp":1576710237,"date_min_temp":1576750673,"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":1576755516,"last_seen":1576755477,"rf_status":73,"battery_vp":6054,"dashboard_data":{"time_utc":1576755477,"Temperature":17.4,"Humidity":66,"min_temp":11.5,"max_temp":17.9,"date_max_temp":1576753376,"date_min_temp":1576726968,"temp_trend":"up"}},{"_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":1576755516,"last_seen":1576755516,"rf_status":81,"battery_vp":6188,"dashboard_data":{"time_utc":1576755503,"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":1576755516,"last_seen":1576755516,"rf_status":74,"battery_vp":6096,"dashboard_data":{"time_utc":1576755503,"WindStrength":8,"WindAngle":241,"GustStrength":18,"GustAngle":225,"max_wind_str":18,"max_wind_angle":228,"date_max_wind_str":1576736739}}]}],"user":{"mail":"xxxxxx@xxx.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.08902287483215332,"time_server":1576755680}

3
8.0
1.576736739E9
228.0
18.0
225.0
18.0
241.0
8
Anémomètre
06:00:00:03:b0:66
{"body":{"devices":[{"_id":"70:ee:50:22:a4:0a","station_name":"XXXX","date_setup":1506167028,"last_setup":1506167028,"type":"NAMain","last_status_store":1576755517,"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":30,"city":"xxxxx","country":"FR","timezone":"Europe\/Paris","location":[xxxxxx,yyyyyyy]},"dashboard_data":{"time_utc":1576755508,"Temperature":21.7,"CO2":541,"Humidity":54,"Noise":47,"Pressure":1014.1,"AbsolutePressure":1010.5,"min_temp":21.3,"max_temp":21.9,"date_max_temp":1576710237,"date_min_temp":1576750673,"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":1576755516,"last_seen":1576755477,"rf_status":73,"battery_vp":6054,"dashboard_data":{"time_utc":1576755477,"Temperature":17.4,"Humidity":66,"min_temp":11.5,"max_temp":17.9,"date_max_temp":1576753376,"date_min_temp":1576726968,"temp_trend":"up"}},{"_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":1576755516,"last_seen":1576755516,"rf_status":81,"battery_vp":6188,"dashboard_data":{"time_utc":1576755503,"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":1576755516,"last_seen":1576755516,"rf_status":74,"battery_vp":6096,"dashboard_data":{"time_utc":1576755503,"WindStrength":8,"WindAngle":241,"GustStrength":18,"GustAngle":225,"max_wind_str":18,"max_wind_angle":228,"date_max_wind_str":1576736739}}]}],"user":{"mail":"xxxxxx@xxx.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.08902287483215332,"time_server":1576755680}

3
NaN
1010.5
1014.1
47.0
541.0
54.0
NaN
1.576710237E9
-8000
21.9
21.3
NaN
Salon
70:ee:50:22:a4:0a
{"body":{"devices":[{"_id":"70:ee:50:22:a4:0a","station_name":"XXXX","date_setup":1506167028,"last_setup":1506167028,"type":"NAMain","last_status_store":1576755517,"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":30,"city":"xxxxx","country":"FR","timezone":"Europe\/Paris","location":[xxxxxx,yyyyyyy]},"dashboard_data":{"time_utc":1576755508,"Temperature":21.7,"CO2":541,"Humidity":54,"Noise":47,"Pressure":1014.1,"AbsolutePressure":1010.5,"min_temp":21.3,"max_temp":21.9,"date_max_temp":1576710237,"date_min_temp":1576750673,"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":1576755516,"last_seen":1576755477,"rf_status":73,"battery_vp":6054,"dashboard_data":{"time_utc":1576755477,"Temperature":17.4,"Humidity":66,"min_temp":11.5,"max_temp":17.9,"date_max_temp":1576753376,"date_min_temp":1576726968,"temp_trend":"up"}},{"_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":1576755516,"last_seen":1576755516,"rf_status":81,"battery_vp":6188,"dashboard_data":{"time_utc":1576755503,"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":1576755516,"last_seen":1576755516,"rf_status":74,"battery_vp":6096,"dashboard_data":{"time_utc":1576755503,"WindStrength":8,"WindAngle":241,"GustStrength":18,"GustAngle":225,"max_wind_str":18,"max_wind_angle":228,"date_max_wind_str":1576736739}}]}],"user":{"mail":"xxxxxx@xxx.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.08902287483215332,"time_server":1576755680}


RE: Problème avec un code !! - Jlr - 12-19-2019

Ta date est un timestamp sous unix. tu trouvera des conversion à adapter en fonction de langage utilisé:
ex:

http://www.tux-planet.fr/convertir-des-dates-et-des-timestamp-sous-linux/


RE: Problème avec un code !! - Al_Bla - 12-20-2019

(12-19-2019, 05:30 PM)Jlr a écrit : Ta date est un timestamp sous unix. tu trouvera des conversion à adapter en fonction de langage utilisé:
ex:

http://www.tux-planet.fr/convertir-des-dates-et-des-timestamp-sous-linux/

Merci j'ai trouvé un petit script que j'ai ajouté à mon code, il fonctionne à merveille.

Mais je n'ai toujours pas trouvé mon problème "error 404" dan mon code pour mon module extérieur Netatmo.
Je vais appliquer ma devise et poursuivre.....


RE: Problème avec un code !! - Al_Bla - 12-20-2019

Je me réponds, n'ayant pas trouvé l'erreur dans mon code, j'ai essayé de faire remonter les valeurs en passant par l'équipement Pluviomètre et là toutes les valeurs du module extérieur ont pu être récupérées en parsant la trame. (température mini, maxi, date température maxi-mini, évolution température etc...)
Je ne comprends pas mais cela fonctionne de cette manière.


RE: Problème avec un code !! - jojo - 12-21-2019

Eek-1e6fb, les mystères de l'informatique ...