article

Installer sa caméra sur OctoPi

Par  Benjamin

Publié le 24 mars 2019

Retrouvez-nous sur BlueSky, Facebook et Mastodon.

MISE A JOUR LE 14/04/19

Comme vous le savez maintenant OctoPrint est un système de gestion à distance pour l'impression 3D. Pour clore mes investigations j'ai donc musclé mon Raspberry Pi avec une caméra branchée directement dessus. Cela me permet de suivre une imprimante, pour la deuxième je vais mettre un Raspberry Pi Zéro W et en faire une caméra IP. C'est la bonne excuse pour créer un boîtier imprimé en 3D. Il existe des kits pour mettre plusieurs caméras sur un seul Pi, mais la solution n'est pas idéale. Néanmoins, j'ai tenu mon défi, qui était d'avoir sur le même Raspberry Pi, mon serveur web de travail, et de quoi gérer mes deux Dagoma. De plus la sortie de "The Spaghetti Detective" vient apporter une AI de surveillance pendant l'impression. Si cette dernière échoue, vous êtes prévenu par mail et sms. Pour la gestion du flux vidéo j'utilisé MJPG-Streamer, ce n'est pas le plus facilement paramétrable, mais relativement fiable. Si vous branchez votre caméra pour la première fois n'oubliez pas d'autoriser celle-ci à fonctionner dans les paramètres du Raspberry Pi.
$ sudo raspi-config
Vous irez dans l'option n°3 est vous choisirez la caméra pour l'activer. La première étape est franchie, votre ordi va redémarrer. Maintenant nous allons retourner dans le Terminal pour installer notre logiciel de stream. L'installation a été réalisée à partir d'un version Raspbian Stretch Lite. Fonctionne sur Raspberry B de la première génération à la dernière (PI 3B+)
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install cmake libjpeg8-dev
Au besoin ajouter :
$ sudo apt-get install gcc g++
Retaper "cd" (sans les guillemets) pour revenir à la racine, on ne sait jamais.
$ wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
$ unzip master.zip
$ rm master.zip
$ cd mjpg-streamer-master/mjpg-streamer-experimental
$ make clean all
Normalement vous êtes encore dans le dossier mjpg-streamer-master/mjpg-streamer-experimental. Donc nous allons lancer le flux pour la première fois.
$ export LD_LIBRARY_PATH=.
$ ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"
Normalement à l'adresse de l'ip locale de l'appareil suivie du port par défaut 8080 vous devriez tomber sur une page web. Ou directement à cette adresse :
http://votre_ip:8080/?action=stream
C'est bien tout ça, mais si je coupe mon Raspberry Pi, au redémarrage le service ne se lance pas automatiquement, j'ai donc mis en place une ruse de sioux. L'on va ajouter le service au fichier "rc.local" et apporter une résolution 4/3 et un FPS de 12 images.
$ cd /etc
$ sudo nano rc.local
Voici comment l'éditer, la première partie donne le chemin, puis après les "&&" on lance le service, et on n'oublie pas le "&" à la fin. Surtout ne pas écrire après "exit 0".
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s
" "$_IP"
fi
#mjpg-streamer starter
cd /home/pi/mjpg-streamer-master/mjpg-streamer-experimental && ./mjpg_streamer -i "./input_raspicam.so -x 1280 -y 1080 -fps 12" -o "./output_http.so -w ./www" &
exit 0
Vous penserez à vérifier le chemin cd /home...etc jusque /mjpg-streamer-experimental. Le moindre changement affectera le lancement du service. Pour un stream plus light vous pouvez aussi changer la dernière partie par celle-ci dessous.
./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"
Maintenant vous êtes lancé automatiquement au démarrage, pour la gestion d'une webcam sur IP c'est exactement la même démarche. Alors pourquoi ne pas acheter une autre imprimante 3D et diviser le temps par deux !
Crédit image : kerneldesign.net