Accéder de l’extérieur au flux http d’un Raspberry Pi

Accéder de l’extérieur au flux http d’un Raspberry Pi

Dans cette série d’articles, , nous avons vu comment diffuser le flux vidéo d’une caméra de surveillance sur une page web générée par un Raspberry Pi. Mais cette page ne peut être vue que de l’intérieur du réseau local puisque l’adresse IP du Pi, 192.168.10.134, est locale et n’existe pas à l’extérieur. Il en va de même pour le flux vidéo créé par ce Pi.

Attention : sécurité !

Avant de faire ce qui suit, il faut :

  • changer le mot de passe du routeur ou de la box pour qu’il soit aussi compliqué que possible : on peut utiliser le générateur de mot de passe de LastPass pour en générer un.
  • Dans la caméra de surveillance, supprimer l’utilisateur généré automatiquement par l’appareil et créer deux comptes utilisateurs, avec des identifiants et mots de passe complexes. L’un des comptes a les privilèges d’administrateur, l’autre de visiteur. Le mot de passe ne devrait pas contenir de caractères spéciaux.
  • Dans motion.conf, s’assurer que l’url d’accès à la caméra est bien celle d’un simple visiteur, pas d’un administrateur.

Accès : adresse IP fixe ou dynamique

Pour accéder de l’extérieur à un appareil du réseau local, il faut remplir deux conditions :

  1. connaître l’IP publique du réseau local. Les fournisseurs d’accès à internet, tels que Orange ou Free, fournissent en général des adresses IP variables, mises à jour quotidiennement. Dans ce cas, on ne sait jamais quelle est l’adresse IP publique. Il faut donc un système pour mettre à jour l’IP publique à chaque changement. Quelques fournisseurs d’accès, comme OVH, attribuent une adresse publique fixe et c’est alors plus simple.
  2. Connaître le port de diffusion HTTP de l’équipement auquel on veut se connecter et indiquer à la box ou au routeur du réseau local qu’il est possible de s’y connecter de l’extérieur.

Connaître l’IP publique du réseau local

Lorsqu’on a un fournisseur d’accès qui n’attribue pas une adresse IP fixe, il faut utiliser des systèmes tels que décrits dans les trois article suivants :

Je n’ai pas vraiment essayé ces solutions puisque mon fournisseur d’ADSL est OVH, qui attribue des adresses IP fixes. Pour savoir quelle est cette IP, on peut soit aller dans son tableau de bord client (OVH pour moi), soit utiliser l’un ou l’autre de ces sites : http://www.portchecktool.com/ ou http://www.canyouseeme.org/

Dans mon cas, l’IP fixe est du genre 109.197.17.66, mais fort heureusement, si un internaute tape http://109.197.17.66  dans son navigateur, il arrive à une page lui demandant un identifiant et un mot de passe (celui de la box ou du routeur)

autoriser l’accès au port de diffusion à partir de l’extérieur

Le pi ‘Nautilus’ émet sur le port 80 son flux HTTP mais le flux vidéo qu’il récupère avec Motion émet sur le port 65535. Ce port est défini dans motion.conf  (ou threadx.conf  s’il y a plusieurs caméras), paramètre stream_port .

Normalement, même sur IP fixe, il est impossible pour un appareil externe d’accéder au contenu d’un appareil à l’intérieur du réseau local. Notre routeur (ou notre box) interdit qu’une requête HTTP entrante accède à un appareil qui lui est connecté. Si quelqu’un tape http://109.197.17.66:65635 , il arrive à une page d’erreur.

Il faut donc dire au routeur, ou à la box internet, d’ouvrir le port 65535 de l’appareil que l’on veut pouvoir atteindre de l’extérieur.

Pour celà, sur un routeur Netgear DGN2200v4, on va dans le menu ‘paramètres avancés’ du routeur, on choisit “configuration avancée” puis “ouverture de port/déclenchement de port”. On clique sur “ajouter un service” et on crée un service TCP et UDP comme suit :

ouverture de port sur routeur Netgear DGN2200v4

Maintenant, si je tape http://109.197.17.66:65635  dans un navigateur internet, même à l’extérieur de chez moi, j’accède au flux vidéo généré par le nautilus, dont l’adresse IP interne est 192.168.10.134.

Je peux aussi vérifier la bonne ouverture du port avec les sites  http://www.portchecktool.com/ ou http://www.canyouseeme.org/.

Et maintenant ?

Je peux accéder au flux vidéo de ma maison depuis n’importe où dans le monde. Il me reste maintenant à sécuriser la page web d’accès et à y récupérer d’autres informations de la maison.

Récapitulatif : Raspberry Pi, motion et deux caméras

Récapitulatif : Raspberry Pi, motion et deux caméras

Les 5 précédents articles de cette série explorent différents aspects de la gestion de caméras de surveillance sur Rasberry Pi et la diffusion des flux vidéos sur une page web. Cet article en fait la synthèse.

L’objectif :

A partir d’une Raspberry Pi B+, installer motion réglé correctement pour :

  • gérer deux caméras de surveillance IP ;
  • collecter les vidéos et images générées sur détection de mouvement avec aussi peu de faux positifs que possible ;
  • afficher les flux vidéos en temps réel sur une page web accessible sur le réseau local.

Préparation du Raspberry Pi

  • Installer Raspbian Jessie Lite – voir l’article Mise en service d’un Raspberry Pi
  • Régler le Pi pour fonctionner correctement en wifi sur une adresse fixe 192.168.1.104 (nom nautilus) – voir l’article Raspberry Pi : connexion internet en wifi et/ou IP fixe

Pour moi toutes ces étapes réalisées correspondent à l’image de carte sd “jessie-lite-wifi fixe-103-2016-07-16.img “, dans le répertoire “Downloads\2016-07 Pi Images “. Il me suffit de régler l’adresse wifi et le nom du Pi comme suit :

  • Connecter le Pi en ethernet, sans dongle wifi ;
  • Editer /etc/dhcpcd.conf   et modifier l’adresse IP attribuée ;
  • Taper raspi-config  puis modifier Hostname (advanced options) et changer le nom vers “nautilus”. 
  • Mettre le dongle wifi sur le Pi puis taper “reboot ” pour redémarrer.

Ensuite se reconnecter en wifi et mettre le Pi à jour :

  • apt-get update
  • apt-get upgrade
  • rpi-update

Enlever la connexion ethernet et taper “reboot ” pour redémarrer.

uname -a  nous indique la version du système d’exploitation en fonctionnement.

Le résultat, le 14/08/2016 est 4.4.17+ #901 Fri Aug 12 17:48:40 BST 2016 armv6l GNU/Linux  .

df -h  montre qu’on utilise 17% de la carte SD de 8 Go.

Installer motion

apt-get install -y libjpeg62-turbo libjpeg62-turbo-dev  libavformat-dev  libavcodec-dev  libavutil-dev libc6-dev zlib1g zlib1g-dev
apt-get install motion

Régler motion pour mes deux caméras

Il me faut 3 fichiers de configuration (droits d’accès 664, propriétaires motion / video) puisque j’ai deux caméras (cf l’article une caméra IP avec une vieille tablette android ?) :

  • /etc/motion/motion.conf  pour tous les éléments communs aux deux caméras ;
  • /etc/motion/thread0.conf  pour la caméra ‘Foscam’ ;
  • /etc/motion/thread1.conf  pour la caméra ‘galaxy’ ;

J’exécute donc les commandes suivantes pour créer les fichiers, et donner les bons droits :

chown -R root:root /etc/motion/
touch /etc/motion/thread1.conf
touch /etc/motion/thread0.conf
chown root:motion /etc/motion/thread0.conf
chown root:motion /etc/motion/thread1.conf
chmod -R 664 /etc/motion/
chmod 755 /etc/motion/
Nota : on trouve de nombreux tutoriels dans lesquels les droits de /etc/motion sont en 664 mais ça ne fonctionne pas dans mon cas.
Faire une copie de motion.conf au cas où :
cp /etc/motion/motion.conf /etc/motion/motion.conf.OLD

créer certains fichiers et donner les droits d’accès

Exécuter chaque ligne de commande non commentée :

# /usr/bin/motion : 755
chmod 755 /usr/bin/motion

#/var/lib/motion/ ne sert pas

#var/run/motion (pour motion.pid)
mkdir /var/run/motion
touch /var/run/motion/motion.pid
chown -R motion:motion /var/run/motion/
chmod 755 /var/run/motion/
chmod 644 /var/run/motion/motion.pid

# thread2.conf (foscam) : /home/jf/motion/log/foscam
# thread1.conf (tablette) : /home/jf/motion/log/galaxy
mkdir /home/jf/motion
mkdir /home/jf/motion/galaxy
mkdir /home/jf/motion/foscam
touch /home/jf/motion/motion-log.log
chown -R root:motion /home/jf/motion/
chown motion:motion /home/jf/motion/motion-log.log
chmod -R 644 /home/jf/motion/
chmod 777 /home/jf/motion/
chmod 775 /home/jf/motion/foscam/
chmod 775 /home/jf/motion/galaxy/
Attention, les fichiers créés avec touch via Cygwin sur mon PC sont en mode sauts de ligne Windows. Il faut les passer en saut de ligne UNIX (/home/jf/motion/log/motion-log.log et /var/run/motion/motion.pid).

éditer les fichiers de configuration

Dans etc/motion/motion.conf  les lignes suivantes sont modifiées ou décommentées :

process_id_file /var/run/motion/motion.pid 
logfile /home/jf/motion/log/motion-log.log
v4l2_palette 8
width 640
height 480

netcam_keepalive on

# Number of motion thread to show in SDL Window (default: 0 = disabled)
sdl_threadnr 0 

text_double on
target_dir /home/jf/log/

# Restrict stream connections to localhost only (default: on)
stream_localhost off

webcontrol_port 8080  #must be in motion.conf, not in a thread.

# Restrict control connections to localhost only (default: on)
webcontrol_localhost off

# Output for http server, select off to choose raw text plain (default: on)
webcontrol_html_output on

thread /etc/motion/thread0.conf
thread /etc/motion/thread1.conf

Attention : il faut bien vérifier que thread0.conf et thread1.conf ont des sauts de ligne UNIX.

etc/thread0.conf  règle la configuration pour la caméra devant la maison (évidemment il faut modifier USER et PWD ainsi que l’adresse IP pour que ça corresponde à la caméra) :

# caméra FOSCAM devant la maison
# thread0.conf

videodevice /dev/video0
netcam_url http://USER:PWD@192.168.X.X:80/videostream.cgi?user=USER&pwd=PWD

############################################################
# Régler sensibilité aux mouvements pour cette caméra extérieure

threshold 3000
threshold_tune off
noise_level 32
noise_tune off
despeckle_filter EedDl
smart_mask_speed 10
lightswitch 25
minimum_motion_frames 3

############################################################

# Target base directory for pictures and films
target_dir /home/jf/motion/log/foscam

snapshot_filename f-%v-%Y%m%d%H%M%S-snapshot
picture_filename f-%v-%Y%m%d%H%M%S-%q
movie_filename f-%v-%Y%m%d%H%M%S
timelapse_filename f-%Y%m%d-timelapse

############################################################

stream_port 8081

etc/thread1.conf  règle la configuration pour la caméra créée sur la vieille tablette samsung selon l’article une caméra IP avec une vieille tablette android ? :

#caméra Galaxy tab dans la maison

videodevice /dev/video1

netcam_url http://192.168.X.X:8090/video

############################################################

threshold 3000
threshold_tune off
noise_level 32
noise_tune off
despeckle_filter EedDl
smart_mask_speed 10
lightswitch 25
minimum_motion_frames 3

############################################################

# Target base directory for pictures and films
target_dir /home/jf/motion/log/galaxy

snapshot_filename g-%v-%Y%m%d%H%M%S-snapshot
picture_filename g-%v-%Y%m%d%H%M%S-%q
movie_filename g-%v-%Y%m%d%H%M%S
timelapse_filename g-%Y%m%d-timelapse

############################################################

stream_port 8082

Démarrer motion comme un service

Dans /etc/default/motion, modifier la ligne suivante (passer à yes) : 

start_motion_daemon=yes

Redémarrer le Pi avec reboot.

http://192.168.1.104:8082/ et http://192.168.1.104:8081/ affichent les deux flux vidéos sur un navigateur local.

Si ça ne fonctionne pas, modifier /etc/init.d/motion  comme indiqué dans cet article, en y ajoutant la ligne sleep 30 . Pour moi, ça fonctionne sans.

réglage motion comme un service

Pour déboguer, on peut souhaiter savoir quel est l’utilisateur du service motion :

ps -aef | grep motion

Dans mon cas, ça montre deux utilisateurs (1ère colonne) : motion et root.

motion-user

A ce stade, si on tape 192.168.1.104:8081 ou 192.168.1.104:8082 dans un navigateur du réseau local, on voit les flux vidéos en temps réel. 

Supprimer les anciens fichiers image et vidéo 

 Comme dans l’article Supprimer les fichiers vidéo et image de plus de deux jours sauf que le script bash est modifié pour tenir compte des deux répertoires de stockage d’image :
  • créer le fichier cameradeletecron.sh dans le répertoire /home/jf/motion et lui donner les droits d’acès 764
  • Dans ce fichier, mettre les lignes suivantes :
#!/bin/bash

# /home/jf/motion/camera–delete–cron.sh

# efface les fichiers avi et jpg de plus de deux jours 
find /home/jf/motion/foscam -maxdepth 1 -name '*.avi' -type f -mtime +2 -exec rm {} \;
find /home/jf/motion/foscam -maxdepth 1 -name '*.jpg' -type f -mtime +2 -exec rm {} \;
 
find /home/jf/motion/galaxy -maxdepth 1 -name '*.avi' -type f -mtime +2 -exec rm {} \;
find /home/jf/motion/galaxy -maxdepth 1 -name '*.jpg' -type f -mtime +2 -exec rm {} \;
  •  Dans le cron, via crontab -e, insérer les lignes suivantes :
#env
SHELL=/bin/bash
HOME=/home/jf
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 
* 1 * * * bash /home/jf/motion/camera-delete-cron.sh
  • Redémarrer le Pi avec reboot.

Visualiser les flux vidéos sur une page PHP

  • Installer apache et PHP – voir l’article Un serveur Web sur mon Raspberry Pi.
  • dans le répertoire /var/www/html , créer une page index.php  qui affiche les deux flux vidéos et y ajouter un fichier A-style.css .
  • supprimer index.html

index.php contient :

<!DOCTYPE html>
<html lang="fr">

<head>
	<meta charset="utf-8">
	<title>Nautilus</title>
	<meta name="viewport" content="width=device-width,initial-scale=1" />
	<link href="A-style.css" rel="stylesheet" media="all" type="text/css"> 
</head>

<body class="pi-dashboard">

	<H1>Tableau de bord maison 192.168.1.104 (nautilus)</h1>
	 
	<section class="video-surveillance">

		<img name="Galaxy-Tab" class="stream" src="https://192.168.1.104:8082/?action=stream" width="600" height="450" alt="Live Feed" title="Galaxy Tab GT-P6210" />

		<img name="Foscam-FI8905W" class="stream" src= "http://192.168.1.104:8081/?action=stream" width="600" height="450" title="Foscam FI8905W"/>
		
	</section>
	
	<section class="capteurs">

		<h3>Autres informations</h3>
		<p>A venir...</p>
		
	</section>
 
</body>
</html>

A-style.css contient :

body {
 padding: 0.3%;
 font-family: Georgia, "Times New Roman",
 Times, serif;
 color: purple;
 background-color: #d8da3d ;
 width: 95%;
 text-align: center;
}

section.video-surveillance {
 display: flex; /* or inline-flex */
 justify-content: space-around;
 display: inline-block;
}
 
h1 {
 font-family: Helvetica, Geneva, Arial,
 SunSans-Regular, sans-serif ;
 margin-top: 1em;
}

img.stream {
 padding: 1%;
}


@media only screen and (min-width: 800px){
 
 section.video-surveillance {
 flex-direction: row ;
 }
 
 img.stream {
 max-width: 45% ;
 height: auto;
 }

}

@media only screen and (max-width: 800px){
 
 section.video-surveillance {
 flex-direction: column ;
 }
 
 img.stream {
 max-width: 95%;
 height: auto;
 }
 
}

A ce stade, la page php s’affiche lorsqu’on tape “nautilus” dans un navigateur local (192.168.1.104 dans une tablette)et les deux flux vidéos s’affichent en streaming.

df -h  montre qu’on utilise maintenant 19% de la carte SD de 8 Go.

Motion : Régler la sensibilité de détection

Motion : Régler la sensibilité de détection

Dans l’article précédent de cette série , j’indiquais que motion crée beaucoup d’images et vidéos qui ne correspondent pas à de véritables mouvements devant la caméra.

motion permet de nombreux réglages. Je l’ai choisi pour ça. En particulier, il semble efficace pour éliminer les mouvements liés au vent.

Pour comprendre les différents réglages, il faut lire attentivement cette aide (en anglais) sur les réglages de la détection de mouvement avec motion.

La situation initiale

Dans /etc/motion/motion.conf , j’ai entre autres les réglages suivants :

# Je ne comprends pas comment ça fonctionne. Valeur par défaut = EedDl 
despeckle_filter EedDl

# Ignore les changements soudains de lumière - de 0 (arrêt) à 100%.
lightswitch 0

# Smartmask est un masque auto-apprenant qui va bloquer la détection dans les endroits de l'image où il y a des mouvements fréquents, comme des branches qui bougent à cause du vent. 0 (off) à 10 rapide. 
smart_mask_speed 0

# nombre minimum de photos avec du mouvement avant détection : defaut 1 : tous mouvements détectés.
minimum_motion_frames 1

# base pour déclarer un mouvement. C'est le nombre de pixels changés après le filtrage du bruit, le masque et le "despeckle". 
threshold 1500

# réglage automatique du threshold - ne fonctionne pas 
threshold_tune off

# niveau de "bruit" pour distinguer le bruit de la caméra d'un mouvement
noise_level 32

# si on, ajustement automatique du bruit
noise_tune off

Avec ce réglage, j’obtiens (sur une journée avec du vent) beaucoup trop de faux positifs.

Les faux positifs contiennent du “bruit” la nuit, l’éclairage de la lampe à côté de la caméra, et des mouvements liés au vent :

"bruit" la nuit

“bruit” la nuit

Réglages du 1er juillet – soir

J’ai modifié le niveau de lumière qui déclenche un mouvement, le nombre d’images modifiées avant la détection de mouvement, le ‘theshold’ et le niveau de bruit.

despeckle_filter EedDl 
lightswitch 25
smart_mask_speed 5
minimum_motion_frames 3
threshold 3000
noise_level 100
noise_tune off

Nota : après chaque réglage de motion.conf, il faut redémarrer le service motion avec :

service motion restart

Le 2 juillet, de 0h à 14h (heure du réglage suivant, il n’y a eu que 24 fichiers créés ( 1 Mo) et 24 fichiers correspondent à un mouvement effectif (ma voiture qui part puis qui revient).

Mais la caméra ne détecte pas une personne qui se déplace à pied.

Réglages du 2 juillet – 11h45

Je n’ai corrigé que le “threshold”.

despeckle_filter EedDl  
lightswitch 25
smart_mask_speed 5
minimum_motion_frames 3
threshold 1500
noise_level 100
noise_tune off

Pendant la journée tout va bien : pas de fausse détection (mais le système ne détecte toujours pas une personne à pied) mais la nuit, il y a eu plein de faux positifs. Dès que le jour s’est levé, il n’y a plus de souci.

Réglages du 3 juillet – détecter une personne à pied

Pour détecter une personne à pied, j’ai modifié les paramètres suivants successivement jusqu’à ce que je déclenche une détection de mouvement :

minimum_motion_frames 1
noise_level 32
smart_mask_speed 10
motion : détection d'une personne

motion : détection d’une personne

Ce n’est qu’au dernier changement que j’ai détecté le mouvement d’une personne.

Ces paramètres détectent aussi bien une voiture qu’une personne (12h20 = OK) :

despeckle_filter EedDl  
lightswitch 25
smart_mask_speed 10
minimum_motion_frames 3
threshold 1500
noise_level 32
noise_tune off

Je laisse les paramètres suivants en l’état :

despeckle_filter EedDl  
lightswitch 25
smart_mask_speed 10
minimum_motion_frames 3
noise_tune off

et j’étudie l’impact de changements sur threshold ou noise_level :

Threshold Noise_level Détecte ?
1500 100 12h42 ne me détecte pas et fait un faux positif
3000 32 12h26 ME détecte = OK
3000 100 12h34  NON, ne me détecte pas

Les réglages suivants sont donc satisfaisants :

despeckle_filter EedDl  
lightswitch 25
smart_mask_speed 10
minimum_motion_frames 3
threshold 3000
noise_level 32
noise_tune off

Maintenant reste à faire un bilan sur environ 24h (depuis 13h le 3 juillet) :

  • détection d’une personne : Oui
  • détection d’une voiture : oui
  • faux positifs : 2 en une nuit.

Je considère donc que ces réglages sont corrects.

Autres notes :

On peut mettre motion en mode deboguage pour voir comment se passe la détection : voir cette page sur le wiki de motion.

 

une caméra IP avec une vieille tablette android ?

une caméra IP avec une vieille tablette android ?

Dans cet article de la série , nous allons transformer une vieille tablette android en caméra IP dont le flux sera suivi par un Raspberry Pi, avec motion. Nous verrons aussi comment configurer motion pour qu’il suive deux caméras.

transformer une tablette android en caméra IP

Ma tablette est une Samsung Galaxy tab 7.7 (GT-P6210) équipée d’android 4.0.4. Elle n’est plus utilisable comme tablette car sa batterie ne tient plus. Je l’ai changé mais la nouvelle batterie n’a pas duré longtemps. Je vais donc alimenter en permanence cette tablette, l’accrocher à un mur d’où elle filmera le couloir. La détection de présence sera assurée par motion, sur le Raspberry Pi qui gère déjà le flux d’une caméra IP extérieure.

J’ai essayé de mettre une version plus récente d’android sur la tablette mais je n’ai pas réussi. Je reste donc en version 4.0.4.

Pour transformer la tablette en caméra IP, c’est très simple :

  • installer (via google play) l’application gratuite IP Webcam
  • Régler l’application :
    • Main camera : front camera
    • motion and sound detection : “disable” pour tout
    • connection settings : port 8090, login/password not set
    • cloud streaming : off

Application android IP webcam : réglages

Quand les réglages sont faits, tout en bas : Service Control / start server : lance le serveur de la caméra IP.

Et voilà, maintenant si je tape “http://192.168.1.17:8090/video ” dans un navigateur, j’ai accès au flux vidéo de la tablette. Et avec “http://192.168.1.17:8090 “, je vois un écran de réglage.

Donner une adresse IP fixe à la tablette

J’ai trouvé la solution ici (en anglais).

Appuyer sur le réseau wifi auquel on est connecté puis choisir “avancé”. Si l’on règle sur IP statique au lieu de DHCP, on peut entrer l’adresse fixe (pour moi 192.168.1.202).

Selon cette page (en anglais), “Network Prefix length” correspond au “Masque de sous-réseau IP” de notre routeur. “255.255.255.0” est entré comme “24”. “255.255.0.0” comme “16”. Pour moi c’est bien 24 qui doit figurer dans cette case.

Tablette android : mettre en IP fixe

On vérifie : “http://192.168.1.202:8090/video ” permet bien de visualiser le flux vidéo de notre tablette.

NOTA : pour que le flux vidéo ait la bonne adresse, il faut redémarrer la tablette une fois.

Réglage de motion sur le Raspberry Pi pour gérer deux caméras

La configuration de motion est faite avec etc/motion/motion.conf lorsqu’il y a une seule caméra. Mais lorsqu’il y en a plusieurs, il faut créer plusieurs configurations. Le principe général (cf wiki de motion) est de laisser motion.conf avec les réglages communs à toutes les caméras et créer des fichiers distincts, nommés threadX.conf , pour chaque caméra (X est le numéro de caméra).

  • Créer les fichiers thread0.conf  et thread1.conf , avec droits 664.
  • A la fin de motion.conf, décommenter les lignes qui y font référence.
thread /etc/motion/thread0.conf
thread /etc/motion/thread1.conf
; thread /etc/motion/thread2.conf
  • dans motion.conf, identifier les lignes qui sont spécifiques à chaque caméra et les copier dans un éditeur de texte. On peut les laisser telles quelles puisqu’elles seront moins prioritaires que les instructions spécifiques des fichiers threadX.conf.
  • Dans chaque fichier threadX.conf, insérer les lignes spécifiques et faire les réglages.

Mon fichier thread1.conf  contient :

# caméra galaxy tab 7.7 GT-P6210
# thread1.conf

videodevice /dev/video1

netcam_url http://192.168.1.202:8090/video

############################################################

threshold 3000
threshold_tune off
noise_level 32
noise_tune off
despeckle_filter EedDl
smart_mask_speed 10
lightswitch 25
minimum_motion_frames 3

############################################################

# Target base directory for pictures and films
target_dir /home/jf/motion/galaxy

snapshot_filename g-%v-%Y%m%d%H%M%S-snapshot
picture_filename g-%v-%Y%m%d%H%M%S-%q
movie_filename g-%v-%Y%m%d%H%M%S
timelapse_filename g-%Y%m%d-timelapse

############################################################

stream_port 8082
webcontrol_port 8086

Le fichier thread0.conf  contient les mêmes lignes avec les paramètres que j’avais réglé dans les articles précédents de cette série . Evidemment stream_port  et webcontrol_port  sont différents (respectivement 8081 et 8085).

Redémarrer le service motion avec

service motion restart

Et maintenant les deux adresses http://nautilus:8082/?action=stream  et http://nautilus:8081/?action=stream  affichent le flux capturé de chacune des deux caméras par le Pi nautilus.

La caméra de la vieille tablette détecte bien les mouvements et stocke les fichiers générés dans le répertoire /home/jf/motion/galaxy . Idem pour la caméra 0 (foscam extérieure).

Modifier le cron de suppression de vieux fichiers

Maintenant au lieux de supprimer les vieux fichiers de /home/jf/motion, il faut supprimer dans /home/jf/motion/foscam et /home/jf/motion/galaxy.

Je modifie donc /home/jf/exec/cameradeletecron.sh qui contient maintenant : 

#!/bin/bash

# efface les fichiers avi et jpg de plus de deux jours 
find /home/jf/motion/foscam -maxdepth 1 -name '*.avi' -type f -mtime +2 -exec rm {} \;
find /home/jf/motion/foscam -maxdepth 1 -name '*.jpg' -type f -mtime +2 -exec rm {} \;

find /home/jf/motion/galaxy -maxdepth 1 -name '*.avi' -type f -mtime +2 -exec rm {} \;
find /home/jf/motion/galaxy -maxdepth 1 -name '*.jpg' -type f -mtime +2 -exec rm {} \;

Mise en veille de la tablette

La tablette se met en veille (l’écran est noir). Mais si les réglages de gestion d’énergie de l’application IP Webcam sont comme sur la copie d’écran ci-dessous (aucune option n’est cochée), la caméra va continuer à travailler même si l’écran est noir.

Réglage gestion d'énergie IP Webcam

Et maintenant ?

Il faudra que je règle la détection de mouvement de la tablette lorsque je l’aurai mise à sa place définitive. En attendant, elle a les mêmes réglages que ceux de la caméra extérieure. D’autres articles de la série sont également disponibles.

Enfin, si vous souhaitez visualiser le flux de la caméra de cette tablette, il suffit de taper http://nautilus:8082/?action=stream  dans n’importe quel navigateur d’un appareil connecté au réseau local.

Moi, j’ai décidé de voir les deux caméras et d’autres informations sur une page “dashboard” et j’ai créé une application android qui permet de la visualiser et d’interdire l’extinction de l’écran de la tablette sur laquelle elle est utilisée. Si ça vous intéresse, c’est ici : Une application android pour afficher une page web d’un Raspberry Pi.