Bonjour,
Retour d'expérience;
Comme René (confer post ci-dessus) j'ai une caméra Foscam.
Cette caméra permet, entre autres, la production d'images fixes à intervalles réguliers.
Malheureusement il n'est pas possible de leur donner un nom fixe du style image.jpg. Les noms des images sont du style: 00606E908BFB(cameraext)_0_20110207075217_5.jpg avec dans le nom, la date de prise de vue et un n° s'incrémentant.
De fait il est impossible à GraphWeather de récupérer ces images.
Toutefois à partir du site lorsque le visiteur ouvre la page de vision de l'image, la fonction snapshot.cgi peut être appelée automatiquement. Malheureusement la caméra demande une identification et un mot de passe. Ce qui, vous l'avouerez, n'est pas très convivial.
Confronter à ce problème j'ai demandé à mon Beau-Frère (informaticien) s'il pouvait trouver un petit programme pour afficher les images sur mon site.
Voici le résultat:
Code :
<?php
function RecupDerImage($Repertoire, $Extension){
// Rend le fichier le plus recent avec l'extension demandee dans le repertoire fourni en argument
// ATTENTION:
// Pas de traitement des erreurs ..... (repertoire inexistant ou vide)
// Recuperation Identifiant Repertoire pour pouvoir faire "readdir()" qui permet de recuperer
// successivement les fichiers presents dans ce repertoire
$Repertoire_ID = opendir($Repertoire) or die('Erreur Repertoire');
$Der_Date = 0;
while($Fichier_Image = readdir($Repertoire_ID)) { // Balayage des fichiers du repertoire
if( $Fichier_Image != '.' && $Fichier_Image != '..') { //On ignore . et ..
$Fichier = $Repertoire.'/'.$Fichier_Image; // Chemin relatif a la racine
$Infos = pathinfo($Fichier); // Pour recuperer infos concernant le fichier
$Fic_Extension = $Infos['extension']; // Notamment l'extension ....
if( $Fic_Extension == $Extension) { // On ne considere que les fichiers avec la bonne extension
$Date_Fichier = filemtime($Fichier);
// echo $Fichier_Image." -- ".$Date_Fichier."<br/>";
if( $Date_Fichier > $Der_Date){ // Si plus recent que meilleur deja vu
$Der_Date = $Date_Fichier; // memorisation date plus recente
$Der_Fichier = $Fichier; // memorisation fichier correspondant
}
}
}
}
closedir($Repertoire_ID);
return $Der_Fichier;
}
function EffaceVieillesImages( $Repertoire, $Extension, $AgeMax, $SaufCelleLa){
// Effacement des fichiers ayant l'extension "Ext" dans le repertoire fourni en argument
// $Repertoire: Repertoire contenant les images.
// $Extension: Extension des fichiers a effacer. Exemple: "jpg" ou "gif" ou ....
// $AgeMax: Age maximum tolere pour les fichiers (en secondes), sinon, on efface.
// $SaufCelleLa: image a ne pas effacer qq soit son age.
$Repertoire_ID = opendir($Repertoire) or die('Erreur');
while($Fichier_Image = readdir($Repertoire_ID)) { // Balayage des fichiers du repertoire
if( $Fichier_Image != '.' && $Fichier_Image != '..') { //On ignore . et ..
$Fichier = $Repertoire.'/'.$Fichier_Image; // Chemin relatif a la racine => $Fichier
$Infos = pathinfo($Fichier); // Pour recuperer infos concernant le fichier
$Fic_Extension = $Infos['extension']; // Notamment l'extension ....
$AgeFichier = time() - filemtime($Fichier);
if( ( $Fic_Extension == $Extension) && ($AgeFichier > $AgeMax) ){
if ($SaufCelleLa != $Fichier) {
//echo "Effacement prevu de: ".$Fichier."<br/>"; // Pour tester avant d'effacer .....
unlink($Fichier);
}
}
}
}
closedir($Repertoire_ID);
}
$Fic = RecupDerImage('Images', 'jpg'); // Recuperation du nom du fichier .jpg le plus recent du repertoire "Images"
$Date_Fic = date ("d/m/Y H:i", filemtime($Fic)); // Formatage de la date
// Generation du code html
echo '<div style="text-align: center;">A Quéménéven le:'.$Date_Fic."</div>";
echo '<div style="text-align: center;"><IMG border=0 src="'.$Fic.'"'."></div>";
// Effacement des images .jpg trop vieilles
$Minute = 60; // temps en secondes
$Heure = $Minute * 60;
$Jour = $Heure * 24;
EffaceVieillesImages( 'Images', 'jpg', $Heure * 24, $Fic); // On peut mettre une expression comme: 3*$Heure + 15*$Minutes + 10
?>
Dans mon cas les images sont stockées à la racine du site dans le dossier "Images".
Si tel n'est pas le cas il faut intervenir sur cette ligne:
$Fic = RecupDerImage(
'Images', 'jpg'); // Recuperation du nom du fichier .jpg le plus recent du repertoire "Images"
Le script affiche la dernière image envoyée par la caméra . Dans mon cas, la caméra émet en FTP toutes les 15 minutes.
Ce petit programme permet aussi de supprimer automatiquement sur le site les images les plus vieilles.
Un autre endroit dans le programme offre deux options:
//echo "Effacement prevu de: ".$Fichier."<br/>"; // Pour tester avant d'effacer .....
unlink($Fichier);
la première ligne: si les // ne sont pas présentes (dans ce cas elles sont devant unlink) permet de voir les fichiers qui vont être supprimés;
dans le cas contraire (comme dans ce script) les fichiers de plus de 24 heures sont automatiquement supprimés.
Dernière précaution: le nom de votre feuille par exemple index.html doit passer en index.php.
Vous ne pouvez pas exécuter cette page PHP à partir de Notapad++ par exemple.
Lorsque vous faites un clic droit => "code source de la page" seul le résultat apparait dans le code avec le nom de la photo sélectionnée.
Le code fonctionne sur mon site et sur le site de René.
Merci à ERIC de m'avoir autorisé à diffuser son travail.
_________________
Station OREGON WMR200 (anémomètre sur mât de 10m, Hydro et thermo à 1.50m)
logiciel XNET_météo et GRAPHWEATHER
Site:
http://meteo-quemeneven.fr