Imprimante 3D

MultiCam Octoprint

Dans le tutoriel sur l’installation d’Octoprint, je vous proposais d’acheter deux webcams :

  • Une logitech c920
  • Une Picamera

Nous allons maintenant voir comment faire en sorte que nous puissions avoir le double flux vidéo. En effet, Octoprint nativement ne met a disposition qu’un seul flux vidéo, qui sera en premier lieu celui d’une webcam branchée en USB.

Pour rappel voici le matériel avec lequel j’ai écris ce tutoriel :

Logitech C920 HD Pro Webcam

Logitech C920 HD Pro Webcam,
Appels Vidéo Full HD 1080p à 30ips, Son Stéréo, Correction d’Éclairage HD, Portable/PC/Mac/Android – Noir
≃ 87.10€

Raspberry Pi v2.1 8 MP 1080p Module Caméra

Raspberry Pi v2.1 8 MP 1080p Module Caméra ≃ 27€

Ainsi qu’un câble plus long pour brancher la picam

AZDelivery Câble de remplacement flex 200 cm pour caméra/écran Raspberry pi et Arduino ≃ 6.3€

Un peu de théorie

Comme vous avez pu le voir, Octoprint gère très bien une webcam, en fait Octoprint met en place un flux vidéo via un programme Linux appelé mjpg-streamer. Le principe est en fait relativement simple. Ce logiciel récupère le flux de votre webcam pour le transformer en un flux HTTP. c’est en gros un serveur de streaming pour faire simple.

Pour le prouver c’est très simple , reprenons un scan de notre Raspberry:

Comme vous pouvez le voir nous avons un port ouvert sur le Raspberry en 8080.

Si à l aide de votre navigateur internet vous décidiez de visiter l’adresse Ip de votre Raspberry en spécifiant le port vous retrouveriez les images de votre caméra.
Pour faire cela tapez : http://192.168.0.10:8080 dans la barre d’adresse. Bien sûr, changez l’adresse ip de cette adresse par celle de votre Raspberry.
Et voila ce que vous devriez obtenir :


Pourtant dans la configuration d’Octoprint on appelle une autre URL pour tester votre flux vidéo, il propose un : /webcam/?action=stream et aussi un http://127.0.0.1:8080/?action=snapshot.

Une petite explication s’impose.

En informatique l’adresse 127.0.0.1 est ce que l on appelle un localhost. En gros ça veut dire appelle toi toi-même. Votre Octoprint s’appelle lui même sur le port 8080, qui est comme on l’a vu le port du streaming vidéo.
Mais alors pourquoi on parle de /webcam/ ?

Et bien tout simplement pour vous faciliter la vie, il est plus simple de se rappeler d’une URL comme ceci : http://192.168.0.10/webcam/ que de se souvenir d’un port ce qui donne http://192.168.0.10:8080.

Pour cela nous utilisons le programme HAPROXY qui va servir de passe plat. Il prend tout ce qui vient sur /webcam/ pour l’envoyer sur le port 8080.

Maintenant que ces notions théoriques sur le fonctionnement ont été vues nous allons voir comment mettre en place un deuxième flux vidéo très simplement.

Activer une deuxième Webcam sur Octoprint

Objectif

Le but est de faire en sorte que nous ayons un nouveau flux vidéo provenant de la Picam :

  • Ce flux sera disponible sur le port 8081
  • Ce flux pourra aussi être appelé avec une Url simplifiée /picam/

Paramétrage de la Picaméra

Nous allons pour cela nous connecter via Putty sur votre Raspberry. Si vous ne l’avez jamais fait je vous invite à lire le tutoriel sur la sécurisation de votre Octoprint .

Le but du jeu est de faire en sorte simplement que le flux se lance à chaque redémarrage de votre Raspberry. Nous allons pour cela utiliser les taches planifiées de linux appelées aussi cron.

Crontab

Copier la ligne de code ci-dessous après être passé en super utilisateur (la commande ‘sudo su -‘)

Attention cette ligne de commande ne marche que pour la Pi cam !!!

 
echo '@reboot /home/pi/mjpg-streamer/mjpg_streamer -i "/home/pi/mjpg-streamer/input_raspicam.so -fps 15 -x 1920 -y 1080" -o "/home/pi/mjpg-streamer/output_http.so -w /home/pi/mjpg-streamer/www -p 8081"' >> /root/crontab && crontab /root/crontab

Grâce à cette simple commande nous allons avoir un flux disponible directement à l’adresse http://192.168.0.10:8081 et cela même si votre Raspberry redémarre.
Pour tester redémarrer votre Raspberry et rendez vous sur le port 8081 de votre Raspberry, vous devriez avoir ceci :


Félicitation, votre flux est disponible !!!

Vous pouvez vous arrêtez là ou alors pousser un peu plus loin la réflexion..

Haproxy

Nous allons faire en sorte que tout ce qui va vers l’URL de votre Octoprint en /picam/ soit dirigé vers le port 8081
Connectez vous à l’aide de Putty à votre Raspberry et passez en mode super utilisateur.
Nous allons copier coller dans le terminal toutes ces lignes, vous pouvez toutes les sélectionner d’un coup puis collez le tout dans le terminal et appuyer sur la touche Entrée de votre clavier.

 
sed -i '25i    use_backend picam if { path_beg  /picam/ }' /etc/haproxy/haproxy.cfg &&
echo "backend picam" >> /etc/haproxy/haproxy.cfg &&
echo "reqrep ^([^\ :]*)\ /picam/(.*)    \1\ /\2" >> /etc/haproxy/haproxy.cfg &&
echo "server webcam2 127.0.0.1:8081" >> /etc/haproxy/haproxy.cfg &&
echo "errorfile 503 /etc/haproxy/errors/503-no-webcam.http" >> /etc/haproxy/haproxy.cfg &&
/etc/init.d/haproxy restart

Vous pouvez directement tester en vous rendant sur votre URL http://192.168.0.10/picam/ , n’oubliez pas le / à la fin de l URL et de changer avec l’adresse Ip de votre Raspberry.

Bonus : et si ma deuxième caméra est USB?

Et bien vous pouvez reprendre toutes les étapes de la picamera en changeant juste le crontab comme ci-desoous :

 
echo '@reboot /home/pi/mjpg-streamer/mjpg_streamer -i "/home/pi/mjpg-streamer/input_uvc.so -d /dev/video0 -n -f 15 -r 1920x1080" -o "/home/pi/mjpg-streamer/output_http.so -w /home/pi/mjpg-streamer/www -p 8081"' >> /root/crontab && crontab /root/crontab

Ce que vous avez a change suivant votre configuration :

  • -d /dev/video0 : ceci est le point de montage dans linux de votre webcam , utilise la commande dmesg dans le terminal en SSH,pour le trouver
  • – r 1920×1080 : la résolution de ta webcam
  • -p 8081 pour un autre port si déjà utilisé comme le 8082 par exemple

Il ne te reste plus bien sur qu a faire ta configuration haproxy en changeant le terme picam par celui que tu veux.

Conclusion

Voila en quelques instant vous avez maintenant un deuxième flux vidéo pour surveiller sous un autre angle vos prints. Mais pas que cela !!! Grace à des plugins comme Octolapse vous allez aussi pouvoir faire des Timelaps sous deux angles différents !!! Cela nous l’explorerons dans un autre tutoriel sur Octoprint

A noter aussi que rien ne vous empêche à rajouter un troisième, ou un quatrième flux vidéo, il suffit juste de changer le port de sortie !! Mais attention de pas trop en mettre car votre Raspberry n ‘est pas très puissant et la gestion d’un flux vidéo est relativement gourmand en ressource.
10 commentaires
  • Christian
    Répondre

    Bonjour Ivan,

    Ce que je regrette dans tes tutos, c’est l’emploi de termes anglicisé, comme « Timelaps » et d’autres du genre. Je pratique l’anglais sous la tortue et même si j’ai des bases il y a des gens qui s’intéressent à ce genre de technologie, mais qui ne sont pas forcément doués en Anglais. Une traduction vers le réel sens du mot en français serait, il me semble, très intéressante. Je continue à lire tes Tutos, c’est super ce que tu as fait.

    1. TM
      Répondre

      Merci christian, pour ça que j ai aussi fait le tutos de traduction d’octoprint en français. Le souci pour le terme Timelapse, c est que j ai pas trouvé de traduction vraiment parlante pour remplacer ce terme. Je suis ouvert à la suggestion

  • Joël
    Répondre

    Bonjour,
    Je bloque dès la première instruction:
    echo ‘@reboot /home/pi/mjpg-streamer/mjpg_streamer -i « /home/pi/mjpg-streamer/input_raspicam.so -fps 15 -x 1920 -y 1080 » -o « /home/pi/mjpg-streamer/output_http.so -w /home/pi/mjpg-streamer/www -p 8081″‘ >> /root/crontab && crontab /root/crontab
    y’a bien un fichier crontab créé, avec en contenu cette phrase.
    mais l’instruction http://192.168.1.30:8081 m’indique « site inaccessibledonc pas de flux.
    La différence au niveau du Pi et de la caméra pi est que j’i utilisé deux adaptateurs( « nappe de connexion »/ »hdmi « ), permettant d’utiliser un câble hdmi plus long, plus solide, etc que la nappe de fils habituelle.

  • Joël
    Répondre

    toujours en attente de modération depuis le 5 septembre ?

  • Denovan
    Répondre

    Bonjour
    J’ai suivi ton tuto a la lettre>>> ET je n’ai meme plus l’affichage d’octoprint>. Si tu avais une solution pour que je retrouve ma config originale, ca m’eviterait de tout re-installer> Pourtant, a t’ecouter, ca avait l’air simple

  • Sébastien
    Répondre

    Bonjour, je viens d’essayer votre tuto, et c’est la galère 😐
    j’ai bien un flux sur le port 8081, mais je n’ai plus d’accès au port 8080 (même si je débranche la seconde cam usb, le flux 8081 est reporté sur la cam 1) mais surtout, je n’ai plus accès à octoprint (Ce site est inaccessible)
    comment puis-je me dépanner ?
    merci

  • Sébastien
    Répondre

    Hello,
    bon ben j’ai tout réinstallé, mais bon j’aimerais bien gérer mes deux flux USB, je ne sais pas où j’ai merdé

  • bernard
    Répondre

    Bonjour j’ai eu le même problème, j’ai recommencé 3 fois mais la 3eme fois avant de faire le tuto j’ai ouvert putty pour faire : sudo apt -get update puis, sudo apt-get upgrade, puis sudo apt- get install vim, puis sudo reboot
    ensuite j’ai suivi pas à pas le tuto et ça fonctionne
    avant de faire le tuto j’avais fait une sauvegarde d’octoprint au cas ou…
    voilà si ça peut aider

  • Jraf56
    Répondre

    Bonjour. PI4B avec 4go ram, picam V2 + endoscope usb, ça a fonctionné, merci beaucoup !!! mais, ma picam était devenue horriblement lente, delai de 2 à 3 secondes, 2 à 3 images par seconde. j’ai bypassé le haproxy et dans multicam plugin, j’ai indiqué l’adresse en dur avec le port 8081/?action=stream. elle est un peu moins nerveuse qu’avant (je crois…) mais c’est très supportable. quoi qu’il en soit, merci encore et bonne journée

    1. TM
      Répondre

      avec plaisir et bon print

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *