Système de récup. et traitement de données sur Oregon RMS300

Observations de l'incidence climatique sur nos palmiers (conséquences des vagues de froid, de la sécheresse...)
Les prévisions météo.
Règles du forum
Avant de poster
› Merci de prendre connaissance du Réglement
› Restez poli, courtois et respectueux, cela commence par savoir dire Bonjour ou Bonsoir et Merci.
› Merci d'utiliser la fonction "Rechercher" avant de poster
› Le flood, les doubles-posts (deux messages consécutifs), la polémique et les propos déplacés sont interdits
>Merci de limitez la taille de vos photos, une taille de 640 x 480 pixels est largement suffisante, 1024 x 768 pixels sera le maximum accepté, sinon l’équipe de modération se réserve le droit de la supprimer.
Pour poster
› Veillez à poser votre question dans la bonne rubrique.
› Veillez à donner un titre explicite à vos sujets.
› Afin d'être compréhensible, abstenez vous d'écrire en langage SMS ou d'utiliser des abréviations.
Pour finir
› Sachez vous montrer patient, un UP (message visant à remonter votre sujet) n'est permis qu'après 24 heures sans réponse.
Répondre
G-PALM
Messages : 520
Enregistré le : 05 déc. 2008 08:55
Localisation : Juan-les-Pins

Système de récup. et traitement de données sur Oregon RMS300

Message par G-PALM »

Salut à  tous :)

Comme je l'ai écrit dans un autre topic, j'avais acheté il y a un mois à  Hong Kong sur Internet un thermomètre/hygromètre USB, et il s'est avéré, après une bonne période de tests, qu'il n'est pas fiable du tout...

J'ai alors décidé d'acheter le thermomètre "USB" le moins cher que l'on peut trouver facilement autour de chez soi : un Oregon Scientific RMS300, à  49€. Je l'ai acheté à  Nature et Découverte à  Valence, mais ils l'ont aussi à  Grenoble, alors je pense qu'ils doivent l'avoir dans à  peu près tous les magasins.

Franchement : rien à  redire sur ce thermomètre et hygromètre, si ce n'est le logiciel qui va sur le PC, mais j'y reviendrai après.
Il y a donc une sonde, émettrice (sans fil), à  placer à  l'endroit où vous souhaitez mesurer la température, et une base, dotée d'un écran affichant les différentes données relatives à  l'extérieur (sonde) et l'intérieur (la base elle-même).

Mais on peut aussi, et c'est là  le "+" de ce modèle, connecter la base à  un ordinateur, par USB, afin de consulter les données de la base. Mais c'est là  que l'on rencontre le gros problème du RMS300 : son logiciel, qui n'a absolument pas la maturité requise pour être lancé sur le marché.

On insère le CD, on installe le logiciel, et on le lance. Et là  , rien ne se passe, et il faut attendre franchement longtemps avant qu'un message apparaisse de nulle part, et indiquant qu'une nouvelle version existe. Ok.. téléchargeons là  . Le téléchargement sur leur serveur est assez long, et enfin bref, une fois la mise à  jour installée, on lance à  nouveau le logiciel. Là  , cette fois-ci, une fenêtre s'ouvre immédiatement et demande à  ce que l'on sélectionne le modèle dont il s'agit, donc ici "RMS300". Et là  , la fenêtre des paramètres s'ouvre, et il faut savoir que certaines données de la fenêtre des paramètres doivent être téléchargées depuis leurs serveurs. Et ça prend une plombe... Et parfois même, cela ne marche même pas !

Bref, une fois tout paramétré, on peut constater que dans un certain dossier où se trouve le logiciel, des fichiers ont été créés et contiennent la température en cours. Ce sont des fichiers CSV (Comma-separated values) : tout est dans le nom, mais vous connaissez sûrement déjà  .

Le problème majeur est que tant que l'on est connecté à  Internet, le logiciel se met à  planter au bout de quelques minutes, et n'écrit plus rien dans ces fichiers-là  ! Il plante, on ne sait pas ce qu'il fait, bref, c'est absolument déséspérant.
J'ai finalement trouvé une astuce consistant à  totalement bloquer l'accès au réseau à  ce programme, afin qu'il "pense" que l'on n'est pas connecté à  Internet. On le bloque en créant une règle dans un firewall (avec Look'n'stop, cela se fait facilement). En effet, quand on n'est pas connecté à  Internet, le programme fonctionne sans planter : mystère :p


Bon, je vais simplement vous présenter un moyen de parvenir à  faire les choses suivantes avec un simple RMS300 à  49€ :
- Créer des fichiers de log de la température et de l'humidité, avec la fréquence que vous souhaitez (cela vous permettera donc d'effectuer toutes les statistiques que vous souhaitez)
- Générer une bannière personnalisée que vous pouvez par exemple insérer en signature, comme je l'ai fait, contenant l'heure du relevé, la température, et l'humidité


Vous avez besoin de 2 choses, en plus du logiciel fourni avec RMS300 :
- WAMP : un pack contenant un serveur HTTP (Apache), PHP utilisable par Apache pour exécuter le script qui suit, et une base de données SQL, mais ici on n'en a pas besoin (libre à  vous de vous amuser après :))
- mIRC : un client IRC (Internet Relay Chat), permettant initiallement de se connecter à  des serveurs IRC (de discussion). Mais il se trouve qu'il contient également un excellent langage de scripts, dont on va se servir par la suite


Après avoir installé WAMP, vous pouvez configurer le fichier httpd.conf de Apache afin de le personnaliser à  votre guise, mais cela n'est à  priori pas nécessaire.
Allez dans le répertoire C:/wamp/www/ (c'est la racine de votre serveur HTTP). Créez un fichier que vous appellerez "generer.php" et insérez le code suivant :

Code : Tout sélectionner

<?php

// Chemin vers le dossier où se situe le fichier csv contenant la température actuelle
$OREGON_PATH = "C:\\Program Files\\Oregon Scientific\\Weather OS\\DATA\\TH\\";

// Nom du fichier csv
$nomfichier = "sensor2-1day.csv";

// Chemin complet vers le fichier csv
$pathfichier = $OREGON_PATH.$nomfichier;

$exists = file_exists($pathfichier);

// Si le fichier existe bien
if ($exists) {

	// On ouvre ce fichier
	$f = fopen($pathfichier,"r");
	// On récupère la première ligne
	$ligne = fgets($f);
	// Sans oublier biensûr de refermer après lecture
	fclose($f);
	
	// On récupère la date, l'heure, et la température en faisant un explode avec les virgules
	$composantes = explode(",",$ligne);
	$date = $composantes[0];
	$heure = $composantes[1];
	$temp = $composantes[3];	

	// On charge l'image de référence
	$image = imagecreatefromgif("ref.gif");
	// On définit la couleur rouge pour écrire sur l'image
	$rouge = imagecolorallocate($image,0xFF,0x99,0x00);
	// On écrit sur l'image l'heure du relevé et la température
	imagestring($image,3,137,30,"Relevé : ".$heure,$rouge);
	imagestring($image,3,137,45,"Température : ".$temp."°",$rouge);
	// Et on donne un nom au nouveau fichier
	imagegif($image,"image.gif");
	
	// Pour finir, on stock la température actuelle dans notre propre fichier de log
	// pour de futures statistiques
	$f2 = fopen("rel.txt","a");
	fwrite($f2,$date." - ".$heure." - ".$temp."\n");
	fclose($f2);
	
	echo "OK";
}
else {
	echo "!OK";
}
Vous pouvez lire les commentaires pour comprendre ce que le script fait. En gros, il va aller lire le fichier que génère le programme de RMS300, en extraire la date du relevé, l'heure, et la température, générer le fichier image servant de bannière (image.gif), et rajouter une ligne dans le fichier de log qui vous servira à  faire des statistiques (rel.txt).

Installez ensuite mIRC, et lancez-le. Allez dans le menu "Tools" -> "Scripts Editor", et écrivez le code suivant :

Code : Tout sélectionner

alias genererimage {
  sockopen gener localhost 80
}

on *:sockopen:gener: {
  echo -s Connexion établie
  sockwrite -tn $sockname GET /generer.php HTTP/1.0
  sockwrite -tn $sockname $crlf
}

on *:sockread:gener: {
  sockread %sr
}

on *:sockclose:gener: {
  echo -s Connexion terminée
}
Pour finir, cliquez sur OK pour revenir à  la fenêtre principale de mIRC.

Ce code demande simplement à  votre serveur HTTP d'exécuter le script generer.php que vous avez créé juste avant.

En gros, mIRC va servir à  demander la génération de la bannière et l'écriture de la ligne dans le fichiers de log, toutes les x secondes. Pour cela, tapez dans mIRC (invite de commandes en bas) :

Code : Tout sélectionner

/timer1 0 60 genererimage
Changez 60 par une autre quantité de secondes, si vous le souhaitez.

Attention : il faut évidemment que le logiciel RMS300 soit déjà  en fonction, et en train de générer les fichiers CSV. Ainsi, mIRC demande au script PHP via le serveur HTTP, de lire ces fichiers CSV et de générer le fichier image.gif (la bannière) et d'écrire une ligne supplémentaire dans le fichier de log.

Pour arrêter le timer :

Code : Tout sélectionner

/timer1 off
Pour la bannière, elle est accessible à  l'adresse : http://localhost/image.gif

Si vous souhaitez l'inclure dans votre signature sur le forum, vous ne pouvez pas indiquer cette adresse, car "localhost" désigne "votre ordinateur", d'un point de vue local. Chacun possède une adresse "localhost" pour sa propre machine, et cela ne vous identifie évidemment en rien sur Internet.

Il faut donc une adresse du genre : http://VOTRE_ADRESSE_IP/image.gif

Mais pour accepter les connections extérieures, il faut d'abord que vous acceptiez les connexions sur le port TCP 80 de votre machine serveur : pour cela, vous devez configurer votre firewall comme il se doit.
Il faut également, si vous êtes situé derrière un routeur, faire une redirection du port TCP 80 vers l'adresse IP locale à  votre réseau local désignant votre serveur, en configurant votre routeur.

Voilà  donc comment j'ai fait :) Ca demande une trentaine de minutes à  mettre en place. J'espère que ça pourra aider certaines personnes :D

Dites-moi ce que vous en pensez :)
G-PALM
Messages : 520
Enregistré le : 05 déc. 2008 08:55
Localisation : Juan-les-Pins

Re: Système de récup. et traitement de données sur Oregon RMS300

Message par G-PALM »

J'vais quand même mettre une petite photo pour que vous voyiez à  quoi ressemble ce beau petit appareil :)

Image
Répondre

Retourner vers « Climatologie »