La webcam

La webcam utilisée est une axis 207W. C'est une camera IP. Ce type de caméra se connecte directement sur un routeur (***box..), elle est donc allumée 24h/24 autonome et ne nécessite pas le fonctionnement d'un PC. Ce choix était impératif pour moi car si j'aurais utilisé une webcam USB classique, celle-ci serait connecté au PC et il n'y aurait pas de prise de vue entre 22h et 8h (PC éteint). Cette caméra IP est wifi, autres choix impératif afin d'avoir une liberté dans le choix de l'emplacement (même si celui-ci est compliqué) et surtout de ne pas avoir de fils qui trainent.
Le seul inconvénient que je lui trouve est de passer en noir et blanc à la tombée de la nuit.

Voici quelques caractéristique de cette caméra:

  • Processeur ARTPEC-A
  • Puce de compression JPEG
  • Connexion filaire RJ-45
  • 8 Mo de RAM
  • Objectif : 4 mm, F2.0, iris fixe
  • Systèmes d’exploitation : Windows (Win98, Win2000 et XP), Linux*, UNIX*, Mac OS*, Mac OS X*
  • Couleur et Noir/Blanc
  • Luminosité : de 1 à 10 000 lux
  • Jusqu’à 30 images par seconde quelle que soit la résolution
  • Compression d’image : Motion JPEG et MPEG-4
  • Microphone intégré
  • Compression audio AAC LC 8-32 kbit/s, G.711 PCM 64 kbit/s, G.726 ADPCM 24 kbit/s
  • Protection d’accès à la caméra par mot de passe pour différents niveaux d’utilisateur
  • Sécurité WiFi par contrôle d’accès WPA2
  • Protocoles supportés : IPv4, IPv6, HTTP, HTTPS, TCP, ICMP, RTSP, RTP, UDP, IGMP, RTCP, SMTP, FTP, DHCP, UPnP, Bonjour, ARP, DNS, DynDNS, SOCKS, NTP,...
  • Livrée avec le logiciel AXIS Camera Explorer pour la visualisation de flux vidéo multiples (quad et cycle) et l’enregistrement de courtes séquences vidéo
  • Livrée avec logiciels AXIS Camera Explorer, license MPEG-4 (1 encodeur, 1 décodeur), décodeur Windows MPEG-4
  • Dimensions (LxPxH) : 85 x 55 x 40 mm (hors antenne)

L'emplacement

La seule direction qui ne pose aucun problème, c'est le NORD. Dans cette direction la caméra ne reçoit pas les rayons du soleil, on obtient donc une image net toute la journée. Malheuresement, on a pas tous la possibilité de la mettre face au Nord. J'avais commencé par la mettre plein SUD, ça fonctionnait bien vu que le soleil était haut dans le ciel à ce moment là. Mais en hiver, elle aurait pris le soleil en pleine face, et le capteur CCD n'aurait sûrement pas apprécié malgré la superbe vu qui était offerte. Je l'ai ensuite placé au Nord, sous un Velux. Aucun problème niveau exposition mais la vu était nettement moins jolie. Suite à de nombreux mails de gens regrettant le première emplacement, j'ai décidé de remettre la caméra au SUD. En hiver, j'inclinerais la caméra vers le bas afin qu'elle ne soit pas exposée au soleil.

Première installation (exposition Nord)

Deuxième installation (définitive, exposition SUD). La webcam est fixée à un support coulissant le long d'un tube pour changer sa position durant l'hiver.

 

L'envoie d'image

Cette caméra à pour but de montrer l'état du ciel, bref le temps qu'il fait. Pour cela j'envoi à intervals régulier (toutes les 5 min) une image sur le site.
L'envoie ce fait par FTP. A la base cette caméra n'est pas prévu pour envoyer des images par FTP à intervals régulier, il faut bidouiller. En effet cette webcam possède un serveur intégré. Il est ainsi possible de créer nos propre script afin de lui faire faire ce que l'on veut. J'ai donc fais un script qui envoie une image sur le site et j'ai paramètrer une tâche pour que le script s'exécute toutes les 5 min.
Comment réaliser le script ?
Il suffit de faire un fichier txt, d'y mette le code, de le renommer en "upload.script" par exemple et de l'envoyer sur la webcam.
Voici le script qui me permet d'envoyer une image sur le site:

En remplaçant bien sûr password, ftp.serveur.fr, user et password par les login appropriés et dossier_dest par le dossier de destination. Une fois ce script mis dans un fichier (ex: upload.script), il faut l'envoyer sur le serveur. Pour cela, on peut utiliser tout simplement un client FTP puisque la caméra est un serveur. L'adresse de ce serveur est l'adresse IP de la caméra (celle que votre box donnera). Les identifiants seront à rentrer aussi.
Le fichier test.script doit être placé dans le dossier etc/ .
ATTENTION: Il faut impérativement définir les droits du fichier en 755 sinon le fichier ne s'exécutera pas. Pour cela, clique droit sur le fichier puis affectez les droit. Autre solution, ouvrir ce fichier avec l'éditeur de script intégré à la webcam ("system options"=>"advanced"=>"Open script editor") puis vérifier en haut que la case MODE soit égale à 0100755 puis enregistré le fichier. Il sera réécris avec les bon droits en théorie.

Ensuite il ne reste plus qu'a mettre une tâche planifiée. Celle-ci doit être indiquée dans le fichier user.task.list (liste des tâches utilisateur).
2 solutions: soit on télécharge le fichier qui se trouve dans le dossier etc/ via le client FTP puis on le modifie et on le renvoi, soit on utilise l'éditeur de script intégré dans l'interface web (dans "system options"=>"advanced"=>"Open script editor").
Quoi qu'il en soit, la ligne de code à mettre est:
time(h(0-23),m(0,5,10,15,20,25,30,35,40,45,50,55)) once immune % /etc/upload.script;
Une fois le fichier renvoyé ou enregistré, il faut redémarrer la caméra pour que les modifications soient prise en compte. En effet, ce n'est qu'au démarrage que la caméra "lis" les tâches qu'elle doit faire.
C'est ainsi que toutes les 5 min, une image nommé image.jpg est envoyée sur le site, écrasant la précédente.
D'autres moyens existe pour l'envoie ftp, notamment via l'interface web en utilisant cette méthode: www.networkwebcams.co.uk/blog/2007/02/27/howto-set-up-scheduled-ftp-events-in-your-axis-207w-network-camera/
Ou encore en utilisant le buffer, mais ces méthodes ne sont pas stables et sont lourdes d'utilisation.

A noter: pour que votre caméra soit toujours à l'heure, synchronisez la avec un serveur NTP (option présente dans les pages de configuration).
Voici l'adesse que j'utilise: 145.238.203.14

Le diaporama

Afin d'obtenir un diaporama de 24h d'image, il fallait trouver un moyen d'obtenir les 288 images nécessaire (1 images/5 min). Je pouvais paramètrer une autre tâche afin d'uploader une image toutes les 5 min dont le nom de celle-ci contiendrait l'heure ou un numéro mais ca aurait chargé la caméra pour rien. J'utilise donc l'image que j'envoie toutes les 5min sur le site, et c'est le serveur web qui va s'occuper de fabriquer l'historique. Ainsi la caméra n'est pas trop chargée. En même temps que l'image est envoyée sur le site, un requête http est elle aussi envoyée sur le site. La requête c'est quoi ? tout simplement aller à une adresse, comme quand on tape dans le navigateur une adresse en haut. Cette requête me permet d'exécuter un script PHP qui va copier l'image qui vient d'arriver et la mettre dans un dossier tout en la renommant en image_HH_MM_.jpg où HH et MM représente les heures et minutes de la capture de l'image. Le problème rencontrer est que lorsque je renomme les images avec l'heure d'arrivée sur le site, il y avait un léger décalage d'une minute trente environ. Ceci venait du fait que l'heure sur serveur web et l'heure de la caméra ne sont pas synchrone. Mais comme la prise de l'image se fait de façon très précise, l'heure affichée sur l'image sera toujours une heure juste (ex: 23:50:00 ou 13:35:00). Il m'a juste suffit de faire un bout de code qui arrondit l'heure d'arrivée de l'image à une heure multiple de 5. De plus c'est arrondi est nécessaire puisque 24h plus tard, il faut que l'image porte la même heure pour qu'elle soit écrasée et ainsi créer un historique de 24h.

Il n'est pas nécessaire de faire un fichier php comme je l'ai fait pour avoir un historique. En effet, moi j'utilise cette solution car mon fichier php fait plusieurs choses à la fois. Il incorpore à l'image les données météos actuelles, renome l'image reçu en image_HH_MM.jpg et ensuite l'envoie sur un notre serveur (free), là où je stocke mon historique.
Si vous voulez juste conservé un historique des images, la slution suivante est largement suffisante:
Rajoutez les lignes suivantes dans le fichier upload.script :
heure=$(date +'%H')    // à mettre au début après la ligne #!/bin/sh
min=$(date +'%M')      
// à mettre au début après la ligne #!/bin/sh
sftpclient -p ftp.serveur.fr -s -u user -w password -l /tmp/image.jpg -c dossier_dest -d image_${heure}_${min}_.jpg    
// à mettre à la fin. ftp.serveur.fr, user et password sont les identifiants ftp et dossier_dest, le dossier de destination.

Exécution d'un script présent sur le serveur via la requête http:
Sur mon site est donc présent un fichier uploadimage.php qui s'occupe de plusieurs chosez. Il incorpore les données météo dans l'image de la caméra et envoie cette même image sur un serveur free pour l'historique.
Pour éxécuter ce script, on utilise une requête http. Il suffit de placer la ligne suivante à la suite dans le fichier upload.script
shttpclient http://monsite/monfichier.php
monfichier.php
représente le fichier à éxécuter sur le site.
monsite est l'adresse du site. ATTENTION: il faut le chemin absolu du fichier, qui n'est pas forcément l'adresse du site suivie du fichier.
Pour moi par exemple ce n'est pas
shttpclient http://www.plevenon-meteo.info/monfichier.php mais shttpclient http://ns2.freeheberg.com/~chrissdu/monfichier.php

 

Application possible et/ou futur

La caméra offre pas mal de possibilités. Une fonction détection de mouvement est présente. Celle-ci se base sur les variations de couleur d'une image à une autre. il serait ainsi possible de prendre en photo un éclair. Comme celui-ci ne dure que très peu de temps il est possible d'obtenir 20 images représentant les 1s avant l'événement (l'événement étant déclenché à fin de l'éclair à cause de la brièveté de celui-ci). A approfondir...
Des connecteurs sont présent derrière pour y ajouter un dispositif (projecteurs, circuit électronique...) afin de déclencher une action lors d'un événement quelconque.
 ....

Pour developper vos propre scripts et aller encore plus loin, utilisez ces tutorials (en Anglais malheuresement):
Tutorial 1
Tutorial 2 (Comprend l'ensemble des commandes possibles. Très riche en informations mais très difficile à comprendre).

Mise à jour de la page: 31/05/13