Cet article a été créé le 4 juillet 2016 et mis à jour périodiquement. La dernière version date du 22 avril 2020.
Les distributions Jessie (ou Jessie Lite) du Raspberry Pi sont réglées par défaut en DHCP avec connexion par cable ethernet. Il peut être utile de créer une connexion wifi ou d’imposer une adresse IP fixe. Voyons comment faire ces réglages.
Note du 22/04/2020 : Document mis à jour pour la version Buster de Raspbian et un Pi 3 (équipé de wifi directement sur le Pi, sans dongle)
ifconfig m’indique que seule la connexion eth0 dispose d’une adresse IP. Dans mon cas la connexion wifi (wlan0) n’est pas activée.
Editer /etc/dhcpcd.conf .
Copier les lignes suivantes tout à la fin du fichier :
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
Ensuite modifier ce qui a été collé comme suit :
# IP statique AL :
interface eth0
static ip_address=192.168.1.102/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
Ou static routers et static domain name servers contient l’adresse du routeur local (ou de la box) et static ip address contient l’adresse IP que l’on souhaite attribuer à notre Pi.
Redémarrer le Pi.
Sur mon routeur, je vois que le Pi a maintenant l’adresse 198.168.1.102.
Il faut indiquer un mot de passe crypté. Par exemple si notre réseau a les caractéristiques suivantes (visibles en éditant wpa_supplicant.conf) dans le répertoire /etc/wpa_supplicant/ :
Il nous suffit de copier le mot de passe encodé à la place du mot de passe en clair.
Archives (pour mémoire)
Tout ce qui suit était valable en novembre 2016. Je le conserve pour mémoire.
Connecter un dongle wifi
A ce stade, le Pi est connecté à notre réseau local par un cable ethernet. il dispose aussi d’un dongle Wifi de bonne qualité (genre Edimax EW-7811Un ou le dongle « officiel » vendu depuis peu pour le Raspberry Pi). C’est important d’avoir déjà le dongle wifi pour que wicd-curses l’identifie dès son installation.
Attention aux versions de Raspbian ...
Pour connaître votre version de Linux, taper uname -a en ligne de commande.
J’ai eu beaucoup de difficultés car j’ai installé le wifi en IP fixe sur un premier Raspberry B+ en utilisant la méthode avec wicd-curses décrite plus bas.
Quelques semaines plus tard, j’ai voulu réitérer sur un deuxième Raspberry Pi B+, avec le même dongle wifi. Et ça n’a pas fonctionné. J’y ai passé des heures sans jamais trouver avant de me résoudre à utiliser une autre méthode, sans wicd-curses.
Cet article présente donc deux méthodes :
méthode 1, sans wicd-curses : elle fonctionne avec une version plus récente de Jessie (Linux 4.4.14+ #896 Sat Jul 2 14:16:46 BST 2016 armv6l GNU/Linux .
méthode 2, avec wicd-curses : elle fonctionne avec Linux 4.4.13+ #893 Wed Jun 8 14:34:50 BST 2016 armv6l GNU/Linux, un peu plus ancienne.
Méthode 1 : sans wicd-curses
Le wifi ne fonctionne pas au départ sur le Pi. J’ai fini par me rendre compte qu’il fonctionnait, mais avec une adresse IPv6… La solution a été d’identifier le problème puis d’obliger le wifi à prendre une adresse IPv4.
La commande ifconfig wlan0 produit entre autres la ligne inet6 addr: fe80::52c6:c538:7c8:640c/64 . C’est une adresse IPv6…
Pour comparer, on peut taper ifconfig eth0 , qui nous donne les mêmes informations pour la liaison ethernet. La même ligne devient inet addr:192.168.1.8 Bcast:192.168.1.255 Mask:255.255.255.0 , qui est bien une adresse en IPv4…
Faire fonctionner le wifi en IPv4
La solution (qui m’a paru être un miracle après plusieurs heures de recherches et d’essais infructueux) vient de cette page.
Il suffit de créer le fichier local.conf (droits 644) dans le répertoire /etc/sysctl.d , de l’éditer et d’y placer la ligne net.ipv6.conf.all.disable_ipv6=1 (sans ; à la fin).
On redémarre le Pi et voilà, wlan0 a une adresse en IPv4 si je lui donne les coordonnées de mon réseau wifi.
Pour donner les coordonnées du réseau wifi, il suffit de suivre les instructions de cette page, sur le site officiel du Raspberry Pi : éditer /etc/wpa_supplicant/wpa_supplicant.conf et y ajouter les informations du réseau
network={
ssid="monReseau"
psk="MonMotdePasse"
}
Mon Pi est maintenant accessible en wifi (lorsque j’enlève le cable ethernet).
Attribuer une IP fixe sans Wicd-curses
Fonctionne correctement avec Jessie #896 auquel j’ai fait la manip qui précède.
Editer /etc/dhcpcd.conf et ajouter tout à la fin :
Noter que j’ai placé 8.8.8.8 dans domain_name_servers, au côté de l’adresse de mon routeur. Ca permet de connecter le Pi à des sites externes sans connaître leur adresse ip. Ainsi ping google.com se connecte bien à google.
Dernière chose à faire : vérifier que le dongle wifi ne va pas s’éteindre pour économiser l’énergie ! Pour celà, utiliser la commande iwconfig . On voit ainsi tous les paramètres du wifi :
Power Management:off signifie que la clé wifi ne s’éteindra pas lorsqu’elle n’est pas utilisée. Ouf, pas besoin de régler autrement !
interdire au wifi de s’éteindre
Bien que Power Management ait semblé correctement réglé, le wifi se déconnectait et ne se remettait en service qu’en redémarrant le Pi ou en y connectant un cable ethernet.
J’ai trouvé la solution ici. Il faut configurer le driver de la clé (un dongle Edimax EW-7811Un 802.11b/g/n, mais ça semble être une méthode utilisable pour d’autres dongles).
Créer un fichier /etc/modprobe.d/8192cu.conf et y placer les deux lignes suivantes :
# Disable power management
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
Cette ligne interdit toute gestion de l’énergie par le dongle et interdit aussi la suspension automatique du wifi.
Redémarrer le Pi. Le problème disparaît.
Méthode 2 : avec wicd-curses
Ne fonctionne pas avec les versions de Jessie postérieures à #893 (pour savoir quelle version on a, taper uname -a en ligne de commande)
Pourquoi wicd-curses ?
C’est une solution reconnue pour éviter les déconnexions du wifi. En effet, avec wicd-curses il est simple de régler le wifi pour qu’il se reconnecte automatiquement si nécessaire, y compris après un redémarrage.
Installer wicd-curses
La bonne façon de faire pour régler une connexion wifi, c’est d’installer wicd-curses (la source en anglais est ici) ET enlever dhcpcd5 (source, en anglais). On ne doit pas éditer de fichier tels que /etc/network/network ou /etc/wpa_supplicant/wpa_supplicant.conf . Tout peut être réalisé en ssh, sans avoir besoin de se connecter à un écran et un clavier – si on dispose d’une connexion ethernet.
Durant l’installation le programme nous demande si l’on veut ajouter un utilisateur au groupe ‘netdev’. On peut ajouter notre utilisateur local (par exemple ‘pi’). Après l’installation on recharge dbus :
Décocher network manager (si il existe), wicd devrait être déjà coché.
Régler le wifi
lsusb permet de vérifier que le dongle wifi est bien détecté.
On démarre le service wicd puis on lance wicd-curses pour configurer le réseau :
service wicd start
wicd-curses start
Pour configurer le réseau wifi, mettre en surbrillance le réseau auquel on veut se connecter et appuyer sur la touche →. Si aucun réseau wifi n’est listé, appuyer sur [SHIFT] R pour scanner le réseau wifi.
wicd-curses configuration réseau
Use DHCP hostname doit être coché pour que le Pi conserve son nom ;
descendre vers le bas et cocher ‘Automatically connect to this network‘
descendre vers le bas et taper la clé de sécurité du réseau wifi
Appuyer sur[F10] pour sauvegarder. On retourne à la liste des réseaux wifi, avec notre réseau surligné.
Appuyer sur [shift] + c (C) pour se connecter au réseau.
Une fois connecté (vérifier le statut en bas à gauche), appuyer sur q pour quitter.
En cas de problème lors de la connexion, aller voir le contenu de /var/log/syslog . Parfois, il suffit de faire les étapes suivantes, redémarrer le Pi et le wifi fonctionne.
On supprime dhcpcd5 :
apt-get remove dhcpcd5
On redémarre le pi (toujours connecté en ethernet, avec le dongle wifi présent) avec reboot .
Eteindre le Pi avec init 0 . Enlever le cable ethernet. Lorsqu’on redémarre le Pi, il fonctionne en wifi.
Il est possible qu’un ping au « hostname » ne fonctionne pas tout de suite car windows ne met pas à jour la carte du réseau. il faut alors faire un ping sur l’adresse ip du Pi.
Régler une adresse IP fixe (en wifi ou ethernet)
Pour un réseau wifi (c’est semblable en ethernet), on met en surbrillance sur le réseau que l’on veut paramétrer puis on appuie sur touche →.
Cocher ‘use static IPs ‘
entrer l’adresse IP fixe (vérifier qu’elle n’est pas déjà prise dans votre routeur ou votre box) – pour moi 192.168.1.30. On peut utiliser <SHIFT> Inser pour coller ce qu’on aura copié ailleurs.
Entrer le Masque de sous-réseau (vérifier en tapant ipconfig dans l’invite de commande windows) – pour moi, 255.255.255.0
Entrer la passerelle (vérifier en tapant ipconfig dans l’invite de commande windows) – pour moi, 192.168.1.1
Entrer google.com dans search domain et 8.8.8.8 pour DNS1 , 8.8.4.4 dans DNS2 .
J’ai laissé coché « use DHCP hostname «
Appuyer sur[F10] pour sauvegarder. On retourne à la liste des réseaux wifi, avec notre réseau surligné.
vérifier que le réseau est connecté (statut en bas à gauche), appuyer sur q pour quitter.
On peut vérifier que tout va bien en tapant ping google.com dans la ligne de commande (<CTRL> C pour en sortir).
Redémarrer le Pi avec init 0 .
Ca fonctionne. Le nautilus a une adresse IP fixe.
Et maintenant ?
J’ai appris que les tutoriels ne sont pas universels… Parfois ce qui fonctionne pour un Pi à une date donnée ne fonctionne pas quelques semaines plus tard, après quelques mises à jour du système d’exploitation.
Dans l’article précédent de cette série Caméra de surveillance et Raspberry Pi, 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.
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
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.
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.
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 :
Mon objectif est maintenant de transformer le Raspberry Pi qui gère les caméras avec motion en un serveur web qui publie une page web contenant les flux vidéos. (suite…)
Dans cet article de la série Caméra de surveillance et Raspberry Pi, 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
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.
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.
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.
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 Caméra de surveillance et Raspberry Pi. 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/camera–delete–cron.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.
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 Caméra de surveillance et Raspberry Pi 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.
Dans le premier article de cette série, Caméra de surveillance et Raspberry Pi, nous avons lu le flux d’une caméra IP dans un Raspberry Pi. Dans cet article, nous allons voir comment supprimer automatiquement les fichiers, vidéos ou images, sauvegardés au fil du temps.
Il y a urgence !
J’ai installé motion sur mon Raspberry Pi le 22 juin. On est le 1er juillet et le répertoire de stockage des images et vidéos représente déjà plus de 1 Go et 40 000 fichiers.
Il faut donc que j’automatise la suppression d’images de plus de deux jours (cet article) et aussi que je règle mieux motion pour qu’il ne stocke que les images et vidéos de véritables mouvements détectés (le prochain article de cette série, Caméra de surveillance et Raspberry Pi.
Supprimer des fichiers manuellement
Dans les FAQ de motion, ici, on voit comment déclencher la suppression de fichiers en fonction de leur localisation, leur extension et leur date. Ainsi, la commande suivante trouve et supprime tous les fichiers en jpg vieux de plus de 1 jour :
Mais on ne veut pas aller taper cette commande tous les jours dans notre Pi. Il faut donc planifier la commande.
Crontab pour planifier des actions
Comme indiqué dans Wikipedia, « cron est un programme qui permet aux utilisateurs des systèmes Unix d’exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l’avance, ou selon un cycle défini à l’avance. […] crontab est le nom du programme qui permet d’éditer des tables de configuration du programme cron. Ces tables spécifient les tâches à exécuter et leur horaire d’exécution avec éventuellement une périodicité. »
Ce qui suit provient aussi des FAQ de motion, ici :
créer un script bash (/home/jf/exec/camera-delete-cron.sh) comme celui-ci (note du 25/01/2018, j’ai corrigé et ça fonctionne correctement maintenant) :
#!/bin/bash
# /home/jf/motion/camera–delete–cron.sh
# connaître les variables d'environnement du cron, pour deboguer
# printenv ;
# me dit que HOME et PWD = /home/jf
# efface les fichiers avi et jpg de plus de 14 jours
find /home/jf/motion/foscam/ -name '*.avi' -type f -mtime +14 -exec rm {} \;
find /home/jf/motion/foscam/ -name '*.jpg' -type f -mtime +14 -exec rm {} \;
l’ajouter au cron (voir les instructions pour le Raspberry Pi sur le site officiel du Pi).
la ligne de commande dans crontab
Le schéma ci-dessous traduit les instructions du site officiel du Pi.
# * * * * * commande à exécuter
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── jour de la semaine (0 - 7) (dimanche est 0 ou 7, lundi est 1)
# │ │ │ └────────── mois (1 - 12)
# │ │ └─────────────── jour du mois (1 - 31)
# │ └──────────────────── heure (0 - 23)
# └───────────────────────── minute (0 - 59)
# └───────────────────────── /xx = toutes les xx minutes
J’ai créé le script bash ci-dessus et l’ai appelé camera-delete-cron.sh . Je lui ai donné les droits 764. Evidemment, ses fins de ligne doivent être au format unix.
Je vérifie qu’il fonctionne avec les commandes suivantes :
cd /home/jf/exec
./camera-delete-cron.sh
Je veux l’exécuter tous les jours à 1h00. J’ai utilisé le générateur de commande cron de ce site pour définir ma commande cron. En principe j’écrirai donc :
Avant j’ai indiqué l’environnement d’exécution des commandes. Voir ci-dessous si vous devez adapter. Attention, il doit y avoir une ligne vide à la fin du crontab…
On édite crontab en tapant crontab -e dans la console. On y ajoute la ligne suivante (SHIFT + INSER pour coller). Attention, il doit obligatoirement y avoir une ligne vide à la fin du contenu de crontab.
Noter le « bash » devant le fichier à exécuter.
Le cron ne s’exécutera automatiquement qu’après un redémarrage du Pi. Donc
Déboguer le cron si nécessaire
Ce n’est pas simple de déboguer si un cron ne s’éxécute pas correctement. Le plus probable est que l’environnement d’éxécution du cron n’est pas le même que celui de la ligne de commande.
Un cron job se déclenche dans un environnement différent de celui d’un lancement manuel !
Dans le script on peut ajouter printenv, qui affiche toutes les variables d’environnement. Un fichier log recueillerales données issues du cron job si la ligne est (ici exécution toutes les 10 minutes d’un script camera-test.sh et envoi des résultats dans un répertoire cron.log) :
Août 2022 : L'article ci-dessous est mis à jour sur la façon de sélectionner ce que l'on veut installer. J'ai également ajouté deux liens vers des articles qui exposent d'autres manière de faire fonctionner un raspberry Pi de manière "headless", sans y connecter de clavier, souris et ecran.
Pour pouvoir communiquer avec un Raspberry Pi sans avoir à le connecter à un clavier, une souris et un écran, le plus simple est d’utiliser une interface pour communiquer en « SSH » (Secure Shell – voir sur Wikipedia) depuis un ordinateur. Voici la méthode pour installer Cygwin sur un ordinateur Windows (7 à 10) et faire sa première connexion au Pi.
Exécuter setup.exe (en tant qu’administrateur) et suivre les instructions.
Pendant l’installation, on pourra s’aider de « setting up cygwin« . Voici les principaux choix que j’ai fait :
il vaut mieux installer pour « tous les utilisateurs » afin d’éviter d’éventuels problèmes, même si on est seul à utiliser cygwin.
install directory : c:/cygwin64
Local Package Directory : un répertoire distinct du répertoire d’installation. J’ai utilisé un sous-répertoire de « téléchargement ».
C’est au moment de choisir les paquets à installer que c’est assez difficile. Il ne faut choisir que ce dont on a besoin, dans chaque catégorie de paquets. Pour moi, c’est :
Admin cygrunsrv
Admin shutdown
Net openSSH
X11 tout
J’avoue que je ne suis pas certaine du rôle des deux premiers paquets. Le troisième permet d’utiliser des commandes SSH dans notre console Cygwin. Le quatrième permet d’afficher l’écran du Pi en mode graphique (voir détails ci-dessous).
MAJ d’août 2022 : Pour choisir il faut cliquer sur la flèche à droite des items à installer comme dans la copie d’écran dessous (ici pour l’ensemble des paquets relatifs à X11). Pour les éléments isolés, il faut choisir une version et pas « passe ».
Ensuite on clique sur « installer » et nous disposons d’une console pour commander le Pi directement dans notre ordinateur habituel.
Se connecter en ssh au Pi
Il suffit de taper la commande ssh pi@nautilus , puis le mot de passe correspondant pour se connecter :
Que faire en cas d’erreur @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ?
La solution vient d’ici. Il suffit de taper ssh-keygen -R 192.168.1.8 dans l’invite de commande Cygwin. Ensuite, on peut de nouveau se connecter en ssh à l’adresse 192.168.1.8 avec ssh pi@192.168.1.8 et ça fonctionne de nouveau.
cygstart xwin # will open another window for the graphic display
# cygstart xwin -screen 0 1440x900@1 -wgl would open
# a 1440x900 window wirh OpenGL accelerated graphics
export DISPLAY=:0.0 # Cygwin is aware of the new remote display
ssh -Y pi@address # SSH to your PI
lxsession # start the windows manager.
# it takes a few seconds, then you have the Pi GUI
On peut maintenant interagir avec le Pi en mode graphique :
Dans la copie d’écran ci-dessus, j’ai cliqué sur le bouton en bas à gauche pour pouvoir voir la liste des menus.
Pour une formation en ligne, j’ai eu besoin de créer une présentation powerpoint (2010), d’enregistrer ma voix et de générer un minutage. Ensuite j’ai transformé cette présentation en vidéo. Je l’avais déjà fait voici quelques années mais j’ai mis beaucoup de temps à me rappeler comment faire. Voici donc un tutoriel détaillé.
étape 1 : créer la présentation
On crée la présentation comme on la ferait normalement. On peut aussi mettre des animations qui se déclenchent au clic de la souris.
Une fois la présentation comme on la souhaite, on l’enregistre (format pptx).
étape 2 : enregistrer la narration
Powerpoint permet d’enregistrer simultanément la narration et le minutage du diaporama. Je trouve très difficile de faire les deux à la fois. Je préfère donc enregistrer ma voix PUIS enregistrer le minutage, en fonction de ma voix.
solution 1 : avec les outils de Powerpoint
Dans l’onglet diaporama, cliquer sur « enregistrer le diaporama » puis choisir « commencer l’enregistrement au début »
Enregistrer le texte, éventuellement avec le minutage (on pourra supprimer ou corriger l’un ou l’autre ensuite). Il faut laisser un petit blanc au moment de la transition vers la diapo suivante.
Pour voir le résultat, vérifier (1) que les cases « lire les narrations » et « utiliser le minutage » sont cochées. On peut donc démarrer le diaporama (2) pour voir et entendre le résultat.
Si besoin, on peut corriger la narration ou le minutage, pour chaque diapo ou pour l’ensemble.
solution 2 : avec un logiciel externe (audacity)
Audacity est un logiciel libre d’enregistrement et édition de son. Le gros avantage d’un enregistrement via audacity est qu’on peut laisser des blancs qu’on corrigera ensuite à la souris.
On peut également lire à l’écran (les notes du powerpoint ou un fichier distinct) sans se préoccuper d’un minutage précis.
J’enregistre donc ma voix puis, toujours dans audacity, je choisis Fichier/exporter audio. J’ai d’abord essayé le format ‘flac’ mais il n’est pas accepté par Powerpoint. J’enregistre donc au format ‘wav’.
L’enregistrement est nettement meilleur car je suis moins stressée par l’interface !
Ensuite, il me suffit d’insérer le fichier audio ainsi créé dans la première diapo de la présentation :
Sur cette première diapo, dans l’onglet insertion, cliquer sur audio puis ‘audio à partir du fichier’.
Sélectionner le fichier à insérer. Un symbole « haut-parleur » apparaît sur la diapo.
cliquer une fois sur le symbole « haut-parleur » : dans le menu de powerpoint, deux nouveaux onglets apparaissent à droite : format et lecture.
Cliquer sur l’onglet ‘lecture’ puis régler le démarrage (1) sur ‘automatiquement’ si on a un fichier audio par diapo, ‘exécution sur l’ensemble des diapositives’ si on a un seul fichier (mon cas). Cocher aussi la case ‘masquer pendant la présentation’ pour que le symbole haut parleur ne soit pas visible.
Enfin, il faut que je cale le minutage sur ma voix enregistrée. Je procède comme précédemment (solution 1) mais je décoche « narration et pointeur laser » au moment de démarrer l’enregistrement.
étape 3 : créer une vidéo à partir du diaporama
Dans Fichier / ‘Enregistrer et envoyer’, choisir ‘créer une vidéo’.
Pour une vidéo qui sera ensuite mise en ligne, choisir ‘internet & DVD’ plutôt que ‘qualité HD et ordinateur’. Evidemment, il faut choisir ‘utiliser le minutage et les narrations enregistrés’.
Cliquer sur ‘créer la vidéo’. On ne peut enregistrer qu’au format wmv (windows media video).
étape 4 : mettre la vidéo en ligne
A priori on ne peut pas mettre en ligne une vidéo au format wmv car personne ne pourra la lire dans son navigateur (sauf peut-être avec internet explorer ou edge).
Par ailleurs, il est déconseillé de charger une vidéo directement dans WordPress pour plusieurs raisons :
la vidéo consommera de la bande passante de mon site et ralentira le chargement ;
l’internaute ne pourra pas choisir la qualité vidéo à utiliser selon le débit dont il dispose ;
pour que tous puissent lire la vidéo, quel que soit le navigateur utilisé, il faudra charger au moins deux vidéos au lieu d’une (cf cet article) : une au format mp4 (MPEG H.264 AAC) et l’autre au format WebM (codec vidéo VP8 ou VP9 et le codec audio Vorbis ou Opus).
Il est donc préférable de placer la vidéo sur un site tiers comme Youtube, si on accepte que la vidéo soit publique. On préférera Wistia ou Vimeo si on veut limiter l’accès aux vidéos (solutions payantes). Dans nos pages ou articles WordPress, on incorporera la vidéo à partir de ces sites tiers.
Pour incorporer (embed) la vidéo, il suffit de coller le lien de la vidéo directement dans l’éditeur WordPress.
Je décris ici les premiers pas pour un formateur qui voudrait créer son cours en ligne. Dans les deux premiers articles de cette série cours en ligne avec learndash, j’ai validé que LearnDash est adapté pour ce que je veux faire (heureusement puisque j’ai déjà acheté cette extension…). Maintenant je me concentre sur l’utilisation par le formateur. Dans d’autres articles, je retournerai côté web designer pour faire les ajustements nécessaires (styles au moins).
Je précise que LearnDash est une extension payante. Je l’ai achetée voici au moins deux ans, à une époque où l’on payait une fois et on disposait de l’utilisation à vie. Ma licence expire « December 8, 2114 ». C’est même plus qu’à vie !
Installer l’extension LearnDash pour WordPress
J’ai une licence, j’ai donc un accès au site de support technique. Je peux y télécharger la dernière version de LearnDash (indiqué par la flèche orange dans la copie d’écran ci-dessous).
Dans le site cible, choisir ajouter une extension puis choisir « mettre en ligne une extension au format .zip » (flèche orange ci-dessous) :
Choisir le fichier zip puis installer. Activer l’extension.
Faire quelques réglages
Si learndash n’a jamais été installé, il faut aller dans Réglages (settings) et entrer le numéro de licence et l’adresse mail associée.
Dans réglages, choisir l’onglet « custom labels » et donner un nom
label
Mon texte
Course
Cours
Courses
Cours
Lesson
Module
Lessons
Modules
Topic
Séquence
Topics
Séquences
Quiz
Quiz
Quizzes
Quiz
Take this Course (Button)
Suivez ce cours
Mark Complete (Button)
J’ai fini
Click Here to Continue (Button)
Cliquez ici pour continuer
Maintenant mes cours contiennent des modules, eux-mêmes subdivisés en séquences.
Créer un nouveau cours
Dans le tableau de bord WordPress, cliquer sur « add new » cours.
On donne un titre et un contenu comme avec un article WordPress classique. Voici les spécificités :
Choix du type de cours
Ouvert : le cours est gratuit et en plus il est ouvert à tous, sans inscription préalable.
Fermé : personne ne peut s’inscrire à ce cours.
Gratuit : le cours est gratuit mais il n’est accessible qu’aux personnes qui s’y sont inscrites.
Achat unique : l’accès au cours se paie en une fois.
Récurrent : l’accès au cours se paie en plusieurs fois.
Pour un premier essai de cours gratuit en ligne accessible aux personnes qui se sont inscrites, je choisis « gratuit ».
Le résumé du cours
Il n’y a pas de champs « extrait » pour les cours. Mais on peut placer du contenu entre [[visitor]] et [[/visitor]] pour qu’il soit visible de tous. On peut ainsi mettre un texte de vente à destination des visiteurs, avec une vidéo par exemple. Si le visiteur s’inscrit, il verra le reste du contenu.
Si on veut un texte spécifique aux personnes inscrites, on le met entre [[student]] et [[/student]].
Où voir la liste des cours
Dans n’importe quelle page, on peut insérer un shortcode [[ld_course_list]] qui affichera la liste des cours.
Ajouter des modules
Dans le support LearnDash, ce sont des « lessons ».
Dans l’onglet « module options » définir dans quel ordre seront présentées les leçons : par date de création, par titre (ordre alphabétique) ou par ordre de menu. Dans ce dernier cas, l’ordre est défini dans le champs « attributs » / « ordre » dans la colonne de droite à côté d’un module en cours d’édition. On met 1 à la première leçon, etc…
Les réglages des modules
Cours associé : le cours dans lequel s’inscrit ce module
Sample module : si la case est cochée, ce module est visible de tous, comme un « échantillon » pour des gens qui voudraient essayer avant d’acheter.
Make module visible X days after sign-up : utile si l’on veut imposer un délai entre deux modules.
Make module visible on specific date : intéressant pour des formations mélant du présentiel et de la formation à distance.
Ajouter des séquences
On n’est pas obligé de créer des séquences. C’est cependant une bonne idée pour que l’apprenant ait l’impression d’avancer et pour bien structurer chaque module en « capsule » facile à intégrer dans son planning et dans son cerveau.
Créer des quiz
On peut créer des quiz pour des modules ou des séquences. En principe tant que l’apprenant n’a pas atteint le niveau minimum requis il ne peut pas passer à l’étape suivante.
Liens utiles (en anglais…)
Sur les shortcodes de LearnDash : http://support.learndash.com/articles/course-shortcodes/
Je veux qu’un Raspberry Pi lise et serve un flux vidéo issu d’une caméra IP (en wifi ou ethernet). J’ai choisi d’installer motion car il me permettra de détecter les mouvements puis de déclencher des alertes. Dans cet article, j’explique seulement comment installer motion puis visualiser le flux vidéo sur une page web, en streaming.
Ce qu’il faut
un Raspberry Pi (un B+, avec une carte sd qui contient tout ce qui a été créé dans l’article Mise en service d’un Raspberry Pi – ie pour moi avec l’image radio-pi-2016-06-10-8h.img et Raspbian Jessie)
une caméra web, pour moi connectée par cable ethernet, une Foscam FI8905W, avec une IP fixe).
Changer le nom du Pi et vérifier
regarder l’adresse IP du pi sur le routeur local (pour moi 192.168.1.16)
se connecter au pi en ssh et changer son nom (hostname)
ssh root@192.168.1.16
raspi-config
puis dans 9- advanced options, aller dans A2 hostname et renommer le Pi (pour moi, « nautilus »). Finir et accepter le Reboot
Maintenant je peux me connecter à ce pi avec ssh root@nautilus .
Noter que je me connecte en root, ce qui n’est pas conseillé. Mais ça m’évite de taper « sudo » devant chaque commande !
Installer motion
on installe des utilitaires nécessaires puis motion.
Et maintenant, dans l’explorateur de fichiers, cliquer à droite sur page-test.html et choisir ouvrir avec votre navigateur favori (chrome pour moi).
On voit le flux vidéo de la caméra en direct mais évidemment pas celui qui passe par le pi puisqu’on n’a pas encore fini d’installer et de configurer motion.
page web de test et deboguage de motion sur Raspberry Pi
Evidemment, si la première partie de la page n’affiche pas le flux vidéo de la caméra, chercher comment régler la caméra. Pour moi ça fonctionne avec une caméra Foscam FI8905W réglée comme suit :
adresse IP fixe 192.168.1.201
un administrateur (il faudrait sans doute que ce soit seulement un visiteur pour limiter les risques) nommé USER avec mot de passe PWD
firmware version 11.35.2.63
Device Embeded Web UI Version 2.4.20.11
Il est impératif de vérifier quehttp://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWDpermet bien la visualisation du flux vidéo provenant de la caméra. Sinon la configuration de motion ne fonctionnera pas !
installer motion comme un « service »
Redémarrer le pi avec init 6 ou reboot .
On veut que motion démarre en même temps que le Pi . Pour cela motion doit être installé comme un service.
Dans /etc/default/motion (attention si vous n’utilisez pas Raspbian Jessie, je crois que c’est un autre répertoire), modifier la ligne suivante (no devient yes) :
start_motion_daemon=yes
Pour donner les bons droits d’accès aux fichiers et répertoires nécessaires à motion (les fichiers et répertoires sont ceux qui sont définis dans motion.conf) :
# /etc/motion/motion.conf et thread_.conf en 775 et propriétaire root/motion
chown -R root:motion /etc/motion/
chmod -R 775 /etc/motion/ #664 will not work when motion runs as a service
# /usr/bin/motion : 755
chmod 755 /usr/bin/motion
#var/run/motion (pour motion.pid)
mkdir /var/run/motion
touch /var/run/motion/motion.pid
chmod 755 /var/run/motion/motion.pid
#/home/al/motion/ en niveau 777 et propriétaire root / motion
# dans /home/al/motion/ créer le fichier motion.log en niveau 777
# thread0.conf (foscam) : /home/jf/motion/log/foscam
# thread1.conf (tablette) : /home/jf/motion/log/galaxy
mkdir /home/jf/motion
mkdir /home/jf/motion/log
mkdir /home/jf/motion/log/galaxy
mkdir /home/jf/motion/log/foscam
touch /home/jf/motion/log/motion-log.log
chown -R root:motion /home/jf/motion/
chmod -R 755 /home/jf/motion/
chmod 777 /home/jf/motion/log/motion-log.log
Redémarrer le pi avec init 6 ou reboot .
Maintenant, on doit voir motion parmi tous les services en cours de fonctionnement, avec un « + » devant :
service --status-all
Une liste de services s’affiche, en ordre alphabétique. Lorsqu’il y a [+] devant le service est démarré, sinon il y a [-] devant.
On voit dans cette copie d’écran que motion est démarré.
et si on veut voir le statut de motion
service motion status –l
Logiquement il y a des lignes en rouge, en particulier [ALR] [VID] vid_v4lx_start: Failed to open video device /dev/video0: . C’est normal puisqu’on n’a pas configuré motion.
Dans ce qui suit, on utilisera les commandes suivantes pour arrêter, démarrer ou redémarrer le service motion :
service motion stop
service motion start
service motion restart
Maintenant, il nous reste à configurer motion.
configurer motion
Nous voulons que motion lise le flux vidéo de la caméra à l’adresse IP 192.168.1.201 et qu’il autorise l’accès par un appareil sur le réseau.
Note si on a plus d’une caméra, il faut régler motion.conf et ajouter autant de fichier thread.conf qu’il y a de caméra : voir les précisions (en anglais) de l’auteur de motion ici. Tout à la fin de motion.conf, il y a des instructions aussi.
Avant de modifier /etc/motion/motion.conf, en faire une copie qu’on appellera par exemple motion.conf.OLD. motion.conf doit avoir des droits d’accès en 664.
Editer motion.conf et régler les lignes comme suit, dans l’ordre du contenu du fichier (pour moi This config file was generated by motion 3.2.12+git20140228 , ça m’indique la version de motion pour lesquelles cette configuration fonctionne).
daemon on
logfile /home/jf/motion/log/motion-log.log
log_level 6 # on le laisse à ce niveau par défaut pour l'instant
v4l2_palette 8 # 17 ne marche pas correctement
width 640 #320 # lié à la caméra pour moi 640
height 480 # lié à la caméra
framerate 2 #2 image par seconde
# pour netcam_url, remarquer le ';' devant et le supprimer !
netcam_url http://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD
; netcam_userpass value # laisser en commentaire avec ; devant
netcam_keepalive on
ffmpeg_output_movies on
; si on ne commente pas, erreur [0] [ALR] [ALL] conf_cmdparse: Unknown config option "sdl_threadnr"
; erreur pas grave mais remplit le fichier log
# sdl_threadnr 0
target_dir /home/jf/motion/log # Target base directory for pictures and films
# on utilise la commande http qui fonctionne en direct dans notre page web de déboguage
stream_port 8081
stream_localhost off # permet l'accès en local
webcontrol_port 8085
webcontrol_localhost off # on bloque l'accès
Ensuite on redémarre motion avec service motion restart . Puis Puis service motion status -l nous indique si tout va bien.
Tout va bien mais erreur Unknown config option « sdl_threadnr ». Je n’ai pas trouvé comment la résoudre et ça ne paraît pas géner le fonctionnement de motion.
Tester le bon fonctionnement
Si le flux de la caméra ne s’affiche pas correctement dans la deuxième partie de notre page de test page-test.html , ouvrir /home/al/tmp/motion.log et identifier l’erreur qui bloque motion.
on peut aussi arrêter le service motion (service motion stop ) et taper seulement motion , qui affiche des indications d’erreurs éventuelles.
Et maintenant ?
Dans l’article suivant de cette série Caméra de surveillance et Raspberry Pi, nous verrons comment configurer motion pour qu’il détecte les mouvements et alerte.
Je veux transformer mon Pi en serveur web qui mettra à ma disposition des informations issues de divers capteurs dans ma maison. La première étape (après l’installation du Pi décrite dans Mise en service d’un Raspberry Pi ) est d’installer Apache.
Commentaires récents