Le Raspberry Pi de moi pas branché. |
Ce qui nous intéresse ici c'est afficher la température du Pi sur la page une page web en presque temps réel (toutes les 5 secondes). Pour ma part c'est affiché sur une page ou j'ai listé les différentes applications web d'installées (Leed et rien d'autre pour l'instant). Rien de sorcier, un peu de PHP dégueulasse, un peu de JavaScript pompé et adapté et zou !
Avant de coder, voici le résultat :
Ça bouge toutes les 5 secondes. Ça faisait tellement longtemps que je n'avait pas fait de gif animé... |
Pour commencer deux commandes permettent de récupérer la température du SoC (System on Chip, littéralement Système sur Puce qui désigne une puce embarquant tout un système : CPU, GPU, RAM... ) :
/opt/vc/bin/vcgencmd measure_temp
cat /sys/class/thermal/thermal_zone0/temp
Le but est d'avoir un affichage de la température qui s'actualise automatiquement. J'ai donc utilisé jQuery, parce que je suis en merde en JavaScript, pour actualiser automatiquement un div.
Notez que la coloration syntaxique a été faite avec amour à la main, l'éditeur de texte de Blogger étant ce qu'il est : de la merde. Et il m'a pété l'indentation du code.
On commence par temp.php ou seront placé la fonction pi_temp() et l'affichage :
<?php
//On exécute la commande de récupérage (si si) de température
$temp = exec('cat /sys/class/thermal/thermal_zone0/temp');
//On divise par 1000 pour convertir
$tempconv = $temp / 1000;
//Un chiffre après la virgule ça suffit
$temppi = round($tempconv,1);
//On définit les variables d'affichage dans la condition suivante en y affichant la température
$ok = '<span class="temp_ok">'. $temppi .'</span>°C';
$wrong = '<span class="temp_wrong">'. $temppi .'</span>°C';
//Si la température < 65°C alors on affiche en vert, sinon en rouge
if ($temppi < 65.0)
echo $ok;
else
echo $wrong;
?>
Ensuite la page ou sera affiché la température actualisée toutes les 5 secondes :
<!DOCTYPE html>
<html lang="fr-fr">
<head>
<meta charset="UTF-8" />
<title>Raspberry Pi</title>
<style type="text/css">
/* Couleurs des tempratures */
.temp_ok {
color: green;
}
.temp_wrong {
color: red;
}
</style>
<!-- On appelle jQuery -->
<script src="jquery.js" type="text/javascript"></script>
<script>
//On va actualiser le div #temp_pi avec le contenu de la page temp.php et on répête le script toute les 5 secondes. Je cache pas que j'ai pompé et adapté le code. Merci. Au revoir.
$(document).ready(function() {
$("#temp_pi").load("temp.php"); var refreshId = setInterval(function() {
$("#temp_pi").load("temp.php");
}, 5000);
$.ajaxSetup({ cache: false })
});
</script>
</head>
<body>
<p>
Température du CPU :
<!-- Div qui sera actualisée par le JavaScript --> <div id="temp_pi"></div>
</p>
</body>
</html>
Je pense que les explications données dans les commentaires du code suffisent. Ça ne doit pas être la façon la plus simple de faire ça mais l'essentiel c'est que ça fonctionne et que ça suffit à mon usage. En élaguant un peu on doit pouvoir faire plus léger. Ce script permet aussi d'afficher l'uptime ou ce genre de petites frivolités.
Psa mal, mais j'attends des versions plus pêchues pour m'en prendre un.
RépondreSupprimerEn tout cas je te piquerai sûrement ça :P
Ça doit être faisable sur n'importe quoi qui tourne sous Linux, y'a forcément une commande pour choper la température.
Supprimeret bein , un tutoriel ici pour raspcontrol http://nobru54.blogspot.fr/2013/05/tutoriel-raspberry-pi-parametres.html
RépondreSupprimerCe commentaire a été supprimé par l'auteur.
RépondreSupprimerDu code, de la simplicité, de l'humour un peu crade et une poignée d'amour. Témoignage de passage sur cet article qui m'inspire dans les stats (in)utiles et donc (in)dispensables !
RépondreSupprimerMerci ;-)
PS : chez moi, c'est mon système d'import de stats Piwik qui a complètement claqué depuis la dernière mise à jour... en plus ça ressemble à un bug. Aaah bravo !