Demande d'aide Problème avec un code !!
#1
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.
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#2
"
 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 ?
Répondre
#3
(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...
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#4
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}
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#5
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-d...ous-linux/
Répondre
#6
(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-d...ous-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.....
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#7
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.
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#8
Eek-1e6fb, les mystères de l'informatique ...
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Météo avec Météo concept sud-domotique-expert 84 97,477 05-11-2020, 11:31 AM
Dernier message: Al_Bla
  faire un tableau avec les valeurs d'une variable dans le temps sud-domotique-expert 18 24,709 01-06-2020, 01:46 AM
Dernier message: sud-domotique-expert
  Demande d'aide Compteur Energie Electrique avec KES Zennio Skylab 11 20,182 04-05-2019, 09:04 PM
Dernier message: sirdjey
  Lancer un automate avec un tyxia 2600 Al_Bla 4 10,223 09-13-2018, 09:35 PM
Dernier message: Al_Bla



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)