Comme son nom l'indique, l'utilitaire MBM5 (Motherboard Monitor 5) surveille un certain nombre de paramètres de fonctionnement de l'ordinateur, dont des températures, des tensions, des vitesses de rotation,...
Le logiciel enregistre ces paramètres dans un fichier journal, qu'il peut transférer par FTP. Le fichier est au format CSV, la première ligne comporte les intitulés des champs, la seconde les données les plus récentes et ensuite des données plus anciennes. Voici à quoi il ressemble :
;;;CPU;Eau;Disque;Fan 1;
25/08/2005;22:52:04;1614 MHz;53 C;38 C;51 C;1500 RPM;
25/08/2005;22:51:34;1614 MHz;53 C;38 C;51 C;1452 RPM
Le contenu est configurable.
J'ai écrit un plugin Serendipity qui lit le fichier journal, téléchargé par MBM5. Le plugin affiche théoriquement les températures, mails il est très configurable et peut afficher n'importe quel paramètre du fichier (dans la version actuelle, le nombre est fixé à trois).
Le plugin a une structure absolument standard, et il n'appelle pas les fonctions de Serendipity ; il est donc très simple. La fonction generate_content() affiche les données (le nom est imposé) :
function generate_content(&$title)
{
$title = $this->title;
$path = $this->get_config('path');
// Read captions and most recent parameters from log
$separator = ($this->get_config('separator') == '\t' ? "\t" : $this->get_config('separator'));
$handle =
fopen($path,
'r');
print '<dt>' .
$captions[$this->
get_config('temp1')] .
': </dt>';
print '<dd>' .
$this->_degree
($temps[$this->
get_config('temp1')]) .
'</dd>';
print '<dt>' .
$captions[$this->
get_config('temp2')] .
': </dt>';
print '<dd>' .
$this->_degree
($temps[$this->
get_config('temp2')]) .
'</dd>';
print '<dt>' .
$captions[$this->
get_config('temp3')] .
': </dt>';
print '<dd>' .
$this->_degree
($temps[$this->
get_config('temp3')]) .
'</dd>';
}
La ligne 9 récupère le séparateur, qui est généralement une virgule en anglais (d'où le nom du format, Comma Separated Values) et un point-virgule en français. Les tabulations sont souvent employées, mais ne sont pas faciles à spécifier dans un formulaire web. Nous contournons le problème en convertissant la chaîne de caractères '\t' en tabulation "\t".
Nous lisons les noms des champs et les valeurs les plus récentes lignes 11 et 12, puis nous fermons le fichier.
Les listes de définitions <dl> semblent un bon moyen de présenter des paires d'informations. Une table serait aussi appropriée, surtout si on affichait un historique. La mise en forme est dans le fichier CSS.
La souplesse de la configuration apparaît lignes 16 et 17. L'indice du paramètre dans le CSV est spécifié dans la configuration du plugin : on peut donc afficher n'importe lequel. À noter que les trois premiers champs du CSV n'ont pas d'intitulé. Je ne sais pas si c'est normal ou si c'est un défaut de configuration.
Prévu :
Autoriser moins de trois paramètres... FAIT
Mieux, autoriser un nombre quelconque de paramètres, si cet aspect des plugins est modifiable. FAIT
- Zipper tout ça et le mettre à disposition
- Éventuellement le charger sur s9y.org
- Convertir en plugin d'affichage général de CSV
Tout un programme !