Jump to content
Les Forums d'Infoclimat

Ce tchat, hébergé sur une plateforme indépendante d'Infoclimat, est géré et modéré par une équipe autonome, sans lien avec l'Association.
Un compte séparé du site et du forum d'Infoclimat est nécessaire pour s'y connecter.

Recommended Posts

Posted

Location : Andelot-en-Montagne (39) - 604 m
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é.

Share this post


Link to post
Share on other sites
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...)

Share this post


Link to post
Share on other sites
Posted

Location : Andelot-en-Montagne (39) - 604 m
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.

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Posted (edited)
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 :

image.png.cfe285bb1b5ebf131520c67e4fd557d2.pngimage.png.c034c647033d5a38bb3f417603e097a1.png

Edited by MilesTEG

Share this post


Link to post
Share on other sites

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.

 

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites

Merci beaucoup, mais y aurait il un tuto qui explique les grandes lignes pour que je comprenne un minimum lol

Share this post


Link to post
Share on other sites
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 😉😃

  • J'aime 1

Share this post


Link to post
Share on other sites

Merci beaucoup vais regarder cela.

 

Connais tu les logiciel graphweather ou weewx ?

 

Son t il simple d'utilisqtion ?

Share this post


Link to post
Share on other sites

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?

 

 

Share this post


Link to post
Share on other sites

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 :

 

Share this post


Link to post
Share on other sites
Posted (edited)

Location : Orsay
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...

 

Edited by fanfan91
  • J'aime 2

Share this post


Link to post
Share on other sites

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 ;)

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Posted

Location : Ticheville-alt: 216 m (61-Orne-Normandie)

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".

 

 

 

 

Share this post


Link to post
Share on other sites

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

Edited by davdu12

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...