
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";
}
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
}
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
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
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


Dites-moi ce que vous en pensez
