Sphagnum Posté(e) 4 juin 2019 Andelot-en-Montagne (39) - 604 m Partager Posté(e) 4 juin 2019 Il y a 11 heures, MilesTEG a dit : Sinon comment as-tu vu comment que ta station était filtrée ? On peut activer/désactiver le filtre via le bouton en forme d'entonnoir sur la carte Netatmo. Station toujours filtrée actuellement, pourtant l'écart est moins important qu'hier (2-3°C) et certaines stations indiquant une température inférieure à la mienne ne sont pas filtrées. Très étonnant, à croire que je suis blacklisté. Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 4 juin 2019 Le Grand-Quevilly Partager Posté(e) 4 juin 2019 Il y a 2 heures, Sphagnum a dit : On peut activer/désactiver le filtre via le bouton en forme d'entonnoir sur la carte Netatmo. Station toujours filtrée actuellement, pourtant l'écart est moins important qu'hier (2-3°C) et certaines stations indiquant une température inférieure à la mienne ne sont pas filtrées. Très étonnant, à croire que je suis blacklisté. Je sais qu'on peut afficher ou masquer les stations filtrées, mais la tienne, comment sais-tu qu'elle est filtrée ? Elle n'apparait pas ? (si c'est le cas, je pensais que la sienne apparaissait tout le temps...) Lien à poster Partager sur d’autres sites More sharing options...
Sphagnum Posté(e) 4 juin 2019 Andelot-en-Montagne (39) - 604 m Partager Posté(e) 4 juin 2019 il y a 14 minutes, MilesTEG a dit : Je sais qu'on peut afficher ou masquer les stations filtrées, mais la tienne, comment sais-tu qu'elle est filtrée ? Elle n'apparait pas ? (si c'est le cas, je pensais que la sienne apparaissait tout le temps...) Oui, elle n'apparaît pas. Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 4 juin 2019 Le Grand-Quevilly Partager Posté(e) 4 juin 2019 Haaa ! Je pensais que notre station devait toujours apparaître... Et que seules celles des autres qui étaient filtrées pouvaient ne pas être présente... Du coup faut demander à Netatmo directement... Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 5 juin 2019 Partager Posté(e) 5 juin 2019 y a 18 heures Bonjour à tous, j'aurais aimé savoir comment faire pour exporter ces données météo de la station NETATMO. Je ne comprend pas trop le systeme API ou SDK Merci d'avance Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 5 juin 2019 Le Grand-Quevilly Partager Posté(e) 5 juin 2019 (modifié) il y a 54 minutes, davdu12 a dit : Bonjour à tous, j'aurais aimé savoir comment faire pour exporter ces données météo de la station NETATMO. Je ne comprend pas trop le systeme API ou SDK Merci d'avance Bonjour, Que cherches-tu as faire exactement ? Et sous quel format veux-tu récupérer les données ? Car le système d'API de Netatmo te permet de récupérer les données sur un certains intervalle de temps (que tu définis) en format JSON. C'est un peu particulier à appréhender niveau fonctionnement... edit : sinon si c'est ponctuel, tu peux récupérer via ton compte : Modifié 5 juin 2019 par MilesTEG Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 5 juin 2019 Partager Posté(e) 5 juin 2019 Merci de ta reponse, ce serais pour faire un site météo de mon village avec la météo en direct, ainsi que des recap mensuel et annuel. Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 5 juin 2019 Le Grand-Quevilly Partager Posté(e) 5 juin 2019 il y a 41 minutes, davdu12 a dit : Merci de ta reponse, ce serais pour faire un site météo de mon village avec la météo en direct, ainsi que des recap mensuel et annuel. Ok, donc il te faut bien utiliser l'API Netatmo qui va te générer une strucutre JSON. Il te faudra donc coder du PHP pour ton site, et donc aussi pour l'API. Maitrises-tu les bases du PHP ? Si c'est pas le cas, va falloir d'abord bosser là-dessus ^^ Ici, c'est pour avoir une idée de la structure des données que tu vas récupérer : https://dev.netatmo.com/resources/technical/reference/weather/getstationsdata Et là c'est pour le SDK PHP : https://github.com/Netatmo/Netatmo-API-PHP Il va falloir que tu fasses des tests pour comprendre comment ça fonctionne et pour organiser les données et les afficher Tu comptes utiliser quoi comme serveur ? Hébergeur ? En ce qui me concerne je suis en train de bricoler un afficheur externe pour ma station météo. L'arduino qui gère tout ça fait une requête sur le script PHP et récupère les données pour me les afficher sur un petit écran. Le script PHP que j'ai fait utilise les identifiants de connexion à l'API Netatmo, et je n'ai pas trouvé d'autre moyen que de les stocker dans un fichier qui est inaccessible depuis le web mais qui reste accessible au script. Mais mon serveur WEB est sur mon NAS, et est accédé depuis le LAN, donc pas trop de risque. Par contre, je ne sais pas trop comment faire si c'était sur un hébergeur autre... Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 11 juin 2019 Partager Posté(e) 11 juin 2019 Merci beaucoup, mais y aurait il un tuto qui explique les grandes lignes pour que je comprenne un minimum lol Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 12 juin 2019 Le Grand-Quevilly Partager Posté(e) 12 juin 2019 Il y a 23 heures, davdu12 a dit : Merci beaucoup, mais y aurait il un tuto qui explique les grandes lignes pour que je comprenne un minimum lol Malheureusement non pas de tuto existant autre que ce qui est présent sur le site de netatmo. Je te conseil de partir sur le script qui est fourni, et de faire des tests, en mettant plein de echo ou print pour afficher les variables. Tiens voilà mon script PHP qui me fourni les données, dans un certains format pour mon arduino : <?php /** * Example of Netatmo Welcome API * For further information, please take a look at https://dev.netatmo.com/doc */ // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* DEBUG *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* $debug = FALSE; // Petite fonction pour afficher avec des retours les tableaux lors d'un debug function print_r2($val){ echo '<pre>'; print_r($val); echo '</pre>'; } // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* FIN DEBUG *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // On défini ici la variable du chemi absolu de là où se trouve le script php // Sur mon synology, la fonction dirname(dirname(__FILE__)) donnait que /VolumeX // alors que le fichier php était dans /VolumeX/web/ , donc j'ajoute /web/ après le résultat de dirname(dirname(__FILE__)) define('__ROOT__', dirname(dirname(__FILE__)) . '/web/'); // On définit ici les variables de chemin d'accès aux trois fichiers nécessaires à inclure // Il faudra avoir placé les fichiers dans le dossier src (fourni par Netatmo) define('_configpath_', __ROOT__ . 'src/Config.php'); define('_utilpath_', __ROOT__ . 'src/Utils.php'); define('_autoloadpath_', __ROOT__ . 'src/Netatmo/autoload.php'); // On inclue (PHP vérifie si le fichier a déjà été inclus, et si c'est le cas, ne l'inclut // pas une deuxième fois) et exécute les fichiers précédents. // Et avec require_once lorsqu'une erreur // survient, le script est arrêté, et plus rien // ne se passe ensuite. require_once (_autoloadpath_); require_once (_configpath_); require_once (_utilpath_); /** * Prints a list of devices * Les autres fonctions printxxxxxx sont dans Utils.php * Ne sert pas vraiment dans le script utilisé pour générer les données pour l'Arduino. * Mais en cas de DEBUG, ça peut servir. */ function printDevices($devices, $title = NULL) { if(!is_null($devices) && is_array($devices) && !empty($devices)) { if(!is_null($title)) printMessageWithBorder($title); foreach($devices as $device) { printWSBasicInfo($device); } } } //App client configuration $scope = Netatmo\Common\NAScopes::SCOPE_READ_STATION; $config = array("client_id" => $client_id, "client_secret" => $client_secret, "username" => $test_username, "password" => $test_password); $client = new Netatmo\Clients\NAWSApiClient($config); //Authentication with Netatmo server (OAuth2) try { $tokens = $client->getAccessToken(); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error happened while trying to retrieve your tokens: " .$ex->getMessage()."\n", TRUE); } //Retrieve user's Weather Stations Information try { //retrieve all stations belonging to the user, and also his favorite ones $data = $client->getData(NULL, TRUE); // Message affiché par le script Netatmo mais inutile dans notre utilisation //printMessageWithBorder("Informations Basiques de la Station Météo"); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occured while retrieving data: ". $ex->getMessage()."\n", TRUE); } if(empty($data['devices'])) { echo 'No devices affiliated to user'; } else { //------------------------------------------------------ // Ce qui suit est présent dans le script de Netatmo, mais n'est pas utile pour nous. // À voir si on garde ou on supprime // // $users = array(); // $friends = array(); // $fav = array(); // $device = $data['devices'][0]; // $tz = isset($device['place']['timezone']) ? $device['place']['timezone'] : "GMT"; //devices are already sorted in the following way: first weather stations owned by user, then "friend" WS, and finally favorites stations. Still let's store them in different arrays according to their type // foreach($data['devices'] as $device) // { // // //favorites have both "favorite" and "read_only" flag set to true, whereas friends only have read_only // if(isset($device['favorite']) && $device['favorite']) // $fav[] = $device; // else if(isset($device['read_only']) && $device['read_only']) // $friends[] = $device; // else $users[] = $device; // } //------------------------------------------------------ // ------------------------------------------------ // Ce qui suit provient du script Netatmo et sert à afficher les données récupérées. // Cela peut servir pour debugger. // // $data = $client->getData(NULL, TRUE); // foreach($data['devices'] as $device) // { // echo $device['station_name'] . "\n"; // print_r2($device['dashboard_data']); // foreach($device['modules'] as $module) // { // echo $module['module_name']; // print_r2($module['dashboard_data']); // echo '<br>'; // } // echo '<br>'; // } // ------------------------------------------------ // Je n'arrive pas à déterminer si ces deux lignes suivantes sont nécessaires ou pas... //$data = $client->getData('YOUR_DEVICE_ID'); //$data = $client->getData('YOUR_FAV_DEVICE_ID', TRUE); // Pour Débug // print_r2($data); // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ================================= DONNÉES DES MESURES EN TEMPS REEL ================================= // On écrit sur une ligne les différentes données extraites que l'on utilisera avec l'Arduino // // Je n'ai pas de pluviomètre, donc je commente ces lignes vu qu'elles ne retournent aucune infos // Mais du coup, ça décale les modules dans le tableau, ainsi le 1er module est le module extérieur // et le second module est le module chambre. Donc : // ["modules"][0] correspond à mon module extérieur // ["modules"][1] correspond à mon module intérieur Chambre // Il faudra donc déterminer les indices de vos modules et adapter le script en fonction // // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // // MODULE EXTERIEUR // echo ("#EXT#"); echo $data["devices"][0]["modules"][0]["dashboard_data"]["Temperature"]; //temp ext echo ("#"); echo $data["devices"][0]["modules"][0]["dashboard_data"]["temp_trend"]; //temp ext trend echo ("#"); echo $data["devices"][0]["modules"][0]["dashboard_data"]["Humidity"]; //Humidity // MODULE INTERIEUR PRINCIPAL - SALON // echo ("#SALON#"); echo $data["devices"][0]["dashboard_data"]["Noise"]; //bruit echo ("#"); echo $data["devices"][0]["dashboard_data"]["Temperature"]; //temp echo ("#"); echo $data["devices"][0]["dashboard_data"]["temp_trend"]; //temp trend echo ("#"); echo $data["devices"][0]["dashboard_data"]["Humidity"]; //humidity echo ("#"); echo $data["devices"][0]["dashboard_data"]["Pressure"]; //pressure echo ("#"); echo $data["devices"][0]["dashboard_data"]["pressure_trend"]; //pressure trend echo ("#"); echo $data["devices"][0]["dashboard_data"]["CO2"]; //CO2 // MODULE INTERIEUR SECONDAIRE - CHAMBRE // echo ("#CHAMBRE#"); echo $data["devices"][0]["modules"][1]["dashboard_data"]["Temperature"]; //temp echo ("#"); echo $data["devices"][0]["modules"][1]["dashboard_data"]["temp_trend"]; //temp trend echo ("#"); echo $data["devices"][0]["modules"][1]["dashboard_data"]["Humidity"]; //humidity echo ("#"); echo $data["devices"][0]["modules"][1]["dashboard_data"]["CO2"]; //CO2 echo ("#"); // PLUVIOMETRE // <--- Si j'en ajoutais un, il prendrait probablement l'indice ["modules"][2] //echo ("#PLUVIO#"); //echo $data["devices"][0]["modules"][2]["dashboard_data"]["Rain"]; //pluie //echo ("#"); //echo $data["devices"][0]["modules"][2]["dashboard_data"]["sum_rain_24"]; //pluie 24 h //echo ("#"); //echo $data["devices"][0]["modules"][2]["dashboard_data"]["sum_rain_1"]; //pluie 1 h // Note pour une amélioration possible du script : // Il pourrait être intéressant d'utiliser la boucle foreach // pour les deux modules, mais pas sur que l'on gagne vraiment en code avec... // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // =============================== FIN DU BLOC DES MESURES EN TEMPS REEL ============================== // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ============================ RÉCUPÉRATION DE L'HISTORIQUE DES PRESSIONS ============================ // On récupère l'historique des pressions sur les 6 précédents jours // On devrait avoir 1 MESURE / 3 heures, donc sur 6 jours => 48 mesures // // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* $device = $data['devices'][0]; $module_id = NULL; // Pour la pression, l'ID du module et du device sont les mêmes $scale = "3hours"; // Pour avoir une mesure toutes les heures $type = 'Pressure'; $date_begin = time() -24*3600*6; // 6 jours $date_end = time(); //now $optimized = FALSE; $real_time = FALSE; try { /* ---------------------- Les différents paramètres de la fonction getMeasure -------------------- * @type PUBLIC, PRIVATE & PARTNER API * @param string $device_id * @param string $module_id (optional) if specified will retrieve the module's measurements, else it will retrieve the main device's measurements * @param string $scale : interval of time between two measurements. Allowed values : max, 30min, 1hour, 3hours, 1day, 1week, 1month * @param string $type : type of measurements you wanna retrieve. Ex : "Temperature, CO2, Humidity". * @param timestamp (utc) $start (optional) : starting timestamp of requested measurements * @param timestamp (utc) $end (optional) : ending timestamp of requested measurements. * @param int $limit (optional) : limits numbers of measurements returned (default & max : 1024) * @param bool $optimize (optional) : optimize the bandwith usage if true. Optimize = FALSE enables an easier result parsing * @param bool $realtime (optional) : Remove time offset (+scale/2) for scale bigger than max * @return array of measures and timestamp * @brief Method used to retrieve specifig measures of the given weather station */ $measurements = $client->getMeasure($device['_id'], $module_id, $scale, $type, $date_begin, $date_end, 1024, $optimized, $real_time); // La commande suivante sert à afficher les valeurs récupérées avec la commande précédentes. // Mais comme on veut les afficher avec un certains formattage... //printMeasure($measurements, $type, $tz, $device['_id'] ."'s 3 mesures par heures sur les 6 derniers jours"); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occured while retrieving main device's measurements over 6 days: " . $ex->getMessage() . "\n"); } // On affiche les 48 dernières valeurs de pression (1 mesure / 3 heures, sur 6 jours => 48 mesures) $keys = explode(",", $type); // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { $compteur_val = 1; $compteur_mes = 1; $dix_valeurs_pression = "%"; // Pour récupérer seulement 10 valeurs en vue de créer/vérifier le programme Arduino } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* echo '<br>'; // Un petit retour à la ligne pour séparer les nouvelles valeurs récupérées des précédentes foreach($measurements as $timestamp => $values) { // echo $timestamp; // echo "<br>"; foreach($values as $key => $val) { // Pour chaque valeurs de mesures, on affiche cette valeur séparée de la précédente par un % //echo $keys[$key] . ": "; echo ("%"); echo $val; // printUnit($keys[$key]); // if(count($values)-1 === $key || $monthly) // echo "<br>"; // else echo ", "; // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { // On met la valeur dans la variable $dix_valeurs avec le % if ($compteur_val < 11) // tant que l'on n'a pas atteint les 10 valeurs { $dix_valeurs_pression = $dix_valeurs_pression . "$val%"; } $compteur_val = $compteur_val + 1; // Je compte combien de valeurs sont présentes } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* } // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { $compteur_mes = $compteur_mes + 1; // Je compte combien de mesures sont présentes } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* } echo ("%"); // On marque la fin des mesures // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ============================ FIN DU BLOC DE L'HISTORIQUE DES PRESSIONS ============================= // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ========================= RÉCUPÉRATION DE L'HISTORIQUE DES TEMPÉRATURES MAX ======================== // On récupère l'historique des températures sur les 6 précédents jours // On devrait avoir 1 MESURE / 3 heures, donc sur 6 jours => 48 mesures // // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* $device = $data['devices'][0]; $module_id = $data['devices'][0]['modules'][0]; // Pour la temp. MAX, c'est sur le module extérieur qu'il faut prendre les données. $scale = "3hours"; // Pour avoir une mesure toutes les 3 heures $type = 'max_temp'; $date_begin = time() -24*3600*6; // 6 jours $date_end = time(); //now $optimized = FALSE; $real_time = FALSE; try { $measurements = $client->getMeasure($device['_id'], $module_id['_id'], $scale, $type, $date_begin, $date_end, 1024, $optimized, $real_time); // La commande suivante sert à afficher les valeurs récupérées avec la commande précédentes. // Mais comme on veut les afficher avec un certains formattage... //printMeasure($measurements, $type, $tz, $device['_id'] ."'s 3 mesures par heures sur les 6 derniers jours"); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occured while retrieving main device's daily measurements: " . $ex->getMessage() . "\n"); } // On affiche les 48 dernières valeurs de pression (1 mesure / 3 heures, sur 6 jours => 48 mesures) $keys = explode(",", $type); // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { $compteur_val = 1; $compteur_mes = 1; $dix_valeurs_temp_max = "%"; // Pour récupérer seulement 10 valeurs en vue de créer/vérifier le programme Arduino } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* echo '<br>'; // Un petit retour à la ligne pour séparer les nouvelles valeurs récupérées des précédentes foreach($measurements as $timestamp => $values) { // echo $timestamp; // echo "<br>"; foreach($values as $key => $val) { // Pour chaque valeurs de mesures, on affiche cette valeur séparée de la précédente par un % //echo $keys[$key] . ": "; echo ("%"); echo $val; // printUnit($keys[$key]); // if(count($values)-1 === $key || $monthly) // echo "<br>"; // else echo ", "; // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { // On met la valeur dans la variable $dix_valeurs avec le % if ($compteur_val < 11) // tant que l'on n'a pas atteint les 10 valeurs { $dix_valeurs_temp_max = $dix_valeurs_temp_max . "$val%"; } $compteur_val = $compteur_val + 1; // Je compte combien de valeurs sont présentes } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* } // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { $compteur_mes = $compteur_mes + 1; // Je compte combien de mesures sont présentes } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* } echo ("%"); // On marque la fin des mesures // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ========================= FIN DU BLOC DE L'HISTORIQUE DES TEMPÉRATURES MAX ========================= // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ========================= RÉCUPÉRATION DE L'HISTORIQUE DES TEMPÉRATURES MIN ======================== // On récupère l'historique des températures sur les 6 précédents jours // On devrait avoir 1 MESURE / 3 heures, donc sur 6 jours => 48 mesures // // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* $device = $data['devices'][0]; $module_id = $data['devices'][0]['modules'][0]; // Pour la temp. MIN, c'est sur le module extérieur qu'il faut prendre les données. $scale = "3hours"; // Pour avoir une mesure toutes les 3 heures $type = 'min_temp'; $date_begin = time() -24*3600*6; // 6 jours $date_end = time(); //now $optimized = FALSE; $real_time = FALSE; try { $measurements = $client->getMeasure($device['_id'], $module_id['_id'], $scale, $type, $date_begin, $date_end, 1024, $optimized, $real_time); // La commande suivante sert à afficher les valeurs récupérées avec la commande précédentes. // Mais comme on veut les afficher avec un certains formattage... //printMeasure($measurements, $type, $tz, $device['_id'] ."'s 3 mesures par heures sur les 6 derniers jours"); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occured while retrieving main device's daily measurements: " . $ex->getMessage() . "\n"); } // On affiche les 48 dernières valeurs de Temp MIN (1 mesure / 3 heures, sur 6 jours => 48 mesures) $keys = explode(",", $type); // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { $compteur_val = 1; $compteur_mes = 1; $dix_valeurs_temp_min = "%"; // Pour récupérer seulement 10 valeurs en vue de créer/vérifier le programme Arduino } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* echo '<br>'; // Un petit retour à la ligne pour séparer les nouvelles valeurs récupérées des précédentes foreach($measurements as $timestamp => $values) { // echo $timestamp . '=> ' . $values; // echo "<br>"; foreach($values as $key => $val) { // Pour chaque valeurs de mesures, on affiche cette valeur séparée de la précédente par un % //echo $keys[$key] . ": "; echo ("%"); echo $val; // printUnit($keys[$key]); // if(count($values)-1 === $key || $monthly) // echo "<br>"; // else echo ", "; // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { // On met la valeur dans la variable $dix_valeurs avec le % if ($compteur_val < 11) // tant que l'on n'a pas atteint les 10 valeurs { $dix_valeurs_temp_min = $dix_valeurs_temp_min . "$val%"; } $compteur_val = $compteur_val + 1; // Je compte combien de valeurs sont présentes } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* } // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { $compteur_mes = $compteur_mes + 1; // Je compte combien de mesures sont présentes } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* } echo ("%"); // On marque la fin des mesures // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // Pour Debug des données récupérées if($debug == TRUE) { echo "<br><br>Échantillon de 10 valeurs de pression :<br>"; echo $dix_valeurs_pression; // On affiche la variable contenant les 10 valeurs de chaque echo "<br><br>Échantillon de 10 valeurs de températures maximales :<br>"; echo $dix_valeurs_temp_max; // On affiche la variable contenant les 10 valeurs de chaque echo "<br><br>Échantillon de 10 valeurs de températures minimales :<br>"; echo $dix_valeurs_temp_min; // On affiche la variable contenant les 10 valeurs de chaque } // Fin de la partie Debug // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ========================= FIN DU BLOC DE L'HISTORIQUE DES TEMPÉRATURES MIN ========================= // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // C'est la fin du script qui récupère les données de notre station météo // // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // ========================= ========================= // Ce qui suit est inutile pour notre utilisation, mais peut servir en cas de debuggage // Par exemple lors de l'ajout d'un module, c'est pourquoi je laisse ce code en commentaire /* //print first User's device Then friends, then favorite printDevices($users, "User's weather stations"); //printDevices($friends, "User's friends weather stations"); //printDevices($fav, "User's favorite weather stations"); // now get some daily measurements for the last 30 days $type = "temperature,Co2,humidity,noise,pressure"; //first for the main device try { $measure = $client->getMeasure($device['_id'], NULL, "1day" , $type, time() - 24*3600*30, time(), 30, FALSE, FALSE); printMeasure($measure, $type, $tz, $device['_id'] ."'s daily measurements of the last 30 days"); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occured while retrieving main device's daily measurements: " . $ex->getMessage() . "\n"); } //Then for its modules foreach($device['modules'] as $module) { //requested data type depends on the module's type switch($module['type']) { case "NAModule3": $type = "sum_rain"; break; case "NAModule2": $type = "WindStrength,WindAngle,GustStrength,GustAngle,date_max_gust"; break; case "NAModule1" : $type = "temperature,humidity"; break; default : $type = "temperature,Co2,humidity"; } try { $measure = $client->getMeasure($device['_id'], $module['_id'], "1day" , $type, time()-24*3600*30 , time(), 30, FALSE, FALSE); printMeasure($measure, $type, $tz, $module['_id']. "'s daily measurements of the last 30 days "); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occured while retrieving main device's daily measurements: " . $ex->getMessage() . "\n"); } } //Finally, retrieve general info about last month for main device $type = "max_temp,date_max_temp,min_temp,date_min_temp,max_hum,date_max_hum,min_hum,date_min_hum,max_pressure,date_max_pressure,min_pressure,date_min_pressure,max_noise,date_max_noise,min_noise,date_min_noise,max_co2,date_max_co2,min_co2,date_min_co2"; try { $measures = $client->getMeasure($device['_id'], NULL, "1month", $type, NULL, "last", 1, FALSE, FALSE); printMeasure($measures, $type, $tz, "Last month information of " .$device['_id'], TRUE); } catch(Netatmo\Exceptions\NAClientException $ex) { handleError("An error occcured while retrieving last month info: ".$ex->getMessage() . " \n"); } // ========================= ========================= // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* */ } ?> Il faut un fichier config.php qui contient les infos de connexion : <?php // Rentrer vos données ici. // Il faudra récupérer le Client_ID et le Client-Secret ici : https://dev.netatmo.com/myaccount/ // Il faut créer une application dans l'interface web, et les deux infos seront créées. // Il faudra vérifier que ce fichier n'est pas accessible en édition, ou que le dossier src // ne puisse pas être listé. $client_id = ""; $client_secret = ""; $test_username = ""; $test_password = ""; ?> Dans mon script PHP il y a une partie qui ne te sera à priori pas utile, c'est celle qui formate les données avec les # ou des @. Tu peux tenter d'utiliser la fonction print_r2 que j'ai mise pour afficher le contenu des variables $device ou les autres... Voilà voilà Bon courage 😉😃 1 Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 12 juin 2019 Partager Posté(e) 12 juin 2019 Merci beaucoup vais regarder cela. Connais tu les logiciel graphweather ou weewx ? Son t il simple d'utilisqtion ? Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 12 juin 2019 Le Grand-Quevilly Partager Posté(e) 12 juin 2019 Aucune idée, je ne les connait pas. Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 12 juin 2019 Partager Posté(e) 12 juin 2019 ok pas de soucis merci beaucoup déjà pour ton aide. Je viens d’acquérir l'anenometre et le pluvio de netatmo avec les accroche murale speciale de chez eux. Aurais tu des conseils pour bien les installer et avoir les meilleures données possible? Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 12 juin 2019 Le Grand-Quevilly Partager Posté(e) 12 juin 2019 Heu, non pas vraiment, si ce n'est ce que j'ai lu dans ce sujet, car je n'ai ni pluviomètre ni anémomètre... (un jour probablement 😉) Tu peux aussi lire ceux-ci : Lien à poster Partager sur d’autres sites More sharing options...
TenZen Posté(e) 12 juin 2019 Orsay Partager Posté(e) 12 juin 2019 (modifié) Il y a 6 heures, davdu12 a dit : Merci beaucoup vais regarder cela. Connais tu les logiciel graphweather ou weewx ? Son t il simple d'utilisqtion ? Bonjour davdu12, Sinon, une solution simple pour exporter tes données et d'utiliser meteotemplate qui propose une API spécifique NetAtmo. Météotemplate te crée directement ton site que tu peux paramétrer et customiser très largement. Un exemple de mon site réalisé simplement de cette manière avec une station NetAtmo. Mais ce n'est qu'un exemple... Modifié 12 juin 2019 par fanfan91 4 Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 13 juin 2019 Partager Posté(e) 13 juin 2019 a oui quand même, c'est genial vais regarder ca merci beaucoup Il y a 15 heures, fanfan91 a dit : Bonjour davdu12, Sinon, une solution simple pour exporter tes données et d'utiliser meteotemplate qui propose une API spécifique NetAtmo. Météotemplate te crée directement ton site que tu peux paramétrer et customiser très largement. Un exemple de mon site réalisé simplement de cette manière avec une station NetAtmo. Mais ce n'est qu'un exemple... Il y a 17 heures, MilesTEG a dit : Heu, non pas vraiment, si ce n'est ce que j'ai lu dans ce sujet, car je n'ai ni pluviomètre ni anémomètre... (un jour probablement 😉) Tu peux aussi lire ceux-ci : Merci vais lire tout ca Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 13 juin 2019 Partager Posté(e) 13 juin 2019 Il y a 17 heures, fanfan91 a dit : Bonjour davdu12, Sinon, une solution simple pour exporter tes données et d'utiliser meteotemplate qui propose une API spécifique NetAtmo. Météotemplate te crée directement ton site que tu peux paramétrer et customiser très largement. Un exemple de mon site réalisé simplement de cette manière avec une station NetAtmo. Mais ce n'est qu'un exemple... Que faut il faire exactement pour créer une export netatmo je capte pas tout? désolé je suis completement novice en la matiere Lien à poster Partager sur d’autres sites More sharing options...
ben6114 Posté(e) 14 juin 2019 Ticheville-alt: 216 m (61-Orne-Normandie) Partager Posté(e) 14 juin 2019 Bonjour davdu12 , 1) Ton but est de crée un site météo pour ton village. 2) La station Netatmo est autonome et exporte les données sur les serveurs Netatmo 3) Je développe ce que veux dire "fanfan91" Il te faut souscrire un abonnement (payant, attention au gratuit) chez un hébergeur qui va te fournir un espace de stockage (serveur). 4) A partir de là, tu installes le modèle de site "meteotemplate" sur ton serveur; Tu configures ton identifiant et mot de passe et cela va importer toutes les données de ta station Netatmo à partir de leur serveur vers ton site. Comme le site montré en exemple par "fanfan91". Lien à poster Partager sur d’autres sites More sharing options...
davdu12 Posté(e) 16 juin 2019 Partager Posté(e) 16 juin 2019 (modifié) Merci bcp. Peut on faire ça avec une freebox serveur ? Et dernière question, pour installer anémomètre et pluvio, vous mettez quoi ? Moi je voudrais mettre des pique en fer insérer dans la terre avec un poteaux en bois de 2m Modifié 16 juin 2019 par davdu12 Lien à poster Partager sur d’autres sites More sharing options...
jch@11 Posté(e) 25 juin 2019 Orsans 11 (limite 09) Partager Posté(e) 25 juin 2019 (modifié) Ayant craqué pour une netatmo, une question se pose a moi concernant le capteur extérieur. Je vais me réaliser un abri extérieur home made dont on trouve de nombreux tutos ici. Dans quel sens doit être placée la sonde (sans son capuchon extérieur) dans l'abri ? compartiment pile vers le haut, le bas, en travers, peu importe ? Merci Modifié 25 juin 2019 par jch@11 Lien à poster Partager sur d’autres sites More sharing options...
southmind Posté(e) 25 juin 2019 Nice (Ouest), Collines secteur Bellet . 193 m Partager Posté(e) 25 juin 2019 Perso je l'ai mise verticalement (piles en bas) et suspendue dans son abri à coupelles, pour qu'elle ne touche aucune parois. Aucun problème en 4 ans. Lien à poster Partager sur d’autres sites More sharing options...
Clem68 Posté(e) 26 juin 2019 Village-Neuf (68) 245 m, extrême sud de la Plaine d’Alsace (les WE) et Lausanne proche Lac Leman (CH), 400 m (la semaine) Partager Posté(e) 26 juin 2019 Maintenance à Netatmo au pire moment 😪. Bref, en espérant que ça ne dure pas longtemps 🙃! Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 26 juin 2019 Le Grand-Quevilly Partager Posté(e) 26 juin 2019 J'ai vu le petit message dans l'application, mais un refresh l'a fait disparaître. Et ici le voyant est au vert : https://helpcenter.netatmo.com/fr Du coup je pense que c'était passager et que c'est revenu à la normale. 1 Lien à poster Partager sur d’autres sites More sharing options...
MilesTEG Posté(e) 26 juin 2019 Le Grand-Quevilly Partager Posté(e) 26 juin 2019 La normandie c'est cool 😊 Mais il commence quand même à faire un peu chaud 😁 Lien à poster Partager sur d’autres sites More sharing options...
jch@11 Posté(e) 26 juin 2019 Orsans 11 (limite 09) Partager Posté(e) 26 juin 2019 Station netatmo installée ce matin (non sans mal). J'ai une pression indiquée qui est très largement supérieure a ce qu'elle devrait être au vu des diverses stations météo alentour (reseau netatmo ou StatiC) : 1025 au lieu de 1016mba La calibration ne permet que des rectifications de +/-3. Y a-t-il une astuce que j'ai loupé ? Merci au pro de la netatmo 😉 Lien à poster Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant