Aller au contenu

GO Print

[TUTO] Installer Octoprint sur une Raspbian


dusters

Messages recommandés

Update 13/03/2017 : Mise à jour du Tutoriel pour corriger les problèmes à l'installation des dernières version de Raspbian et d'Octoprint.

 

### Modération ###

Si votre objectif est simplement d'avoir Octoprint, le tuto de Gisclace est plus simple à mettre en oeuvre.

Si votre objectif est d'installer Octoprint sur votre distribution actuelle, vous êtes sur la bonne page.

###/Modération ###

 

Ce sujet explique en détail (Noob compliant ;)) comment installer Octoprint sur une Raspbian vierge sur un Rasberry 3 avec Wifi et une Camera de la même marque.

Télécharger Raspbian : https://downloads.raspberrypi.org/raspbian_lite_latest

Télécharger Win32DiskImager : https://sourceforge.net/projects/win32diskimager/

Procédure pour copier l'image sur la SD :

Décompresser le fichier : 201y-xx-yy-raspbian-jessie-lite.zip
Vous devez obtenir un fichier : 201y-xx-yy-raspbian-jessie-lite.img

Lancer Win32DiskImager :
a- Sélectionner votre fichier *.img et le lecteur de votre carte SD.

tuto1.png

b- Cliquer sur 'Write'.

c- Dire "Yes" pour le message d'avertissement. Votre carte SD va être effacé.

tuto2.png

d- Deux minutes plus tard, vous avez un message qui vous dit que c'est OK.

tuto3.png

Pour finir insérer votre carte SD dans votre Raspberry

Dans les dernières release de Raspbian pour des raisons de sécurité le SSH n'est pas activé.
Connecter le Pi à un écran/Clavier.

Les informations de connections par défaut : 

login : pi
password : raspberry

Attention vous êtes en clavier UK, pour la lettre A taper sur la touche Q. Le reste est identique.

Vous aurez ce jolie prompt :

Last login: Fri May 27 11:50:56 2016
pi@raspberrypi:~$

Nous allons passer le clavier en AZERTY :

pi@raspberrypi:~ $ sudo raspi-config

Choisir l'option 4 :

tuto1.PNG.5232538b4107c8fee29bb7b9e2a10bd8.PNG

Choisir I3 :

tuto002.PNG.86a6d3c0b700071c61dc8d28ce170510.PNG

Laisser par défaut et faire "Enter"

tuto003.PNG.6ea50bd6f907df17985e2d04e80f1572.PNG

Sélectionner "Other" et valider

tuto004.PNG.ee0d6f5466082bbe8d6f252f2d9646c5.PNG

Dans la liste choisir "French" et valider

tuto005.PNG.63c11f5c6e286b7e5cd07adc91905f68.PNG

Sélectionner juste "French" et valider

tuto006.PNG.d4ad8794a572ac8f815894529e4c5bfc.PNG

Laisser le choix par défaut et valider

tuto007.PNG.05faea441f909a7d419817af1e044442.PNG

Laisser le choix par défaut et valider

tuto008.PNG.f8fa6f348a7e481773a848f54cfb98c7.PNG

Laisser le choix par défaut et valider

tuto009.PNG.84c60446bf8bae9d83e6ded56810fab1.PNG

Sélectionner "Finish"

tuto010.PNG.c51385968c42a3f91815e055762b97ca.PNG

Maintenant il faut reboot votre Pi pour prise en compte :

pi@raspberrypi:~ $ sudo reboot

Il est plus simple de se connecter depuis votre PC à votre Pi. Cela permet de faire du copier/coller. ;)

Il va falloir faire deux choses, activer le SSH sur le Pi et télécharger un client SSH pour vous connecter dessus.

Télécharger Putty : http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Si vous ne savez pas utiliser putty : https://www.it-connect.fr/chapitres/apprendre-a-manier-putty-les-options-de-connexion/

Pour activer le SSH, taper les commandes suivantes :

pi@raspberrypi:~ $ sudo service ssh start
pi@raspberrypi:~ $ sudo update-rc.d ssh defaults

Pour récupérer votre IP pour vous connecter avec Putty :

pi@raspberrypi:~ $ sudo ifconfig | grep "inet addr"
          inet addr:192.168.1.14  Bcast:192.168.1.255  Mask:255.255.255.0

Une fois connecté avec Putty ou autre poursuivons :)

1- Se connecter à votre wifi :

pi@raspberrypi:~$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Vous allez à la fin du fichier et vous rajoutez ceci :

network={
    ssid="Le nom de votre reseau wifi"
    psk="Le mot de passe de votre wifi"
}

Vous devriez avoir un fichier qui ressemble à ça :

country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="Le nom de votre reseau wifi"
    psk="Le mot de passe de votre wifi"
}

Nota : Les champs entre "blabla wifi" sont à remplacer par votre SSID Wifi et votre mot de passer wifi.

Sauvegarder le fichier avec la combinaison de touche CTRL + X

On reboot et on débranche le câble Ethernet :

pi@raspberrypi:~$ sudo reboot 

Si vous êtes avec un écran/clavier faire également un reboot, et lors de l'affichage du prompt taper la commande suivante pour trouver l'IP :

pi@raspberrypi:~ $ sudo ifconfig wlan0 
wlan0     Link encap:Ethernet  HWaddr b8:27:eb:24:99:8a  
          inet addr:192.168.1.244  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::8ae4:c012:91c4:9f65/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:460 errors:0 dropped:204 overruns:0 frame:0
          TX packets:114 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:89232 (87.1 KiB)  TX bytes:22578 (22.0 KiB)

Sinon, retourner sur votre Box/Routeur/Firewall pour trouver l'IP associé au Baud DHCP. 
Je vous recommande vivement de fixer l'adresse du boitier pour pas qu'il change d'IP à chaque reboot.
Si vous avez un DNS interne chez vous, pensez également à rentrer un FQDN c'est plus simple à retenir.

Vérifier que vous avez bien accès à Internet depuis votre Pi :

pi@raspberrypi:~ $ ping www.google.fr
PING www.google.fr (216.58.208.227) 56(84) bytes of data.
64 bytes from par10s22-in-f227.1e100.net (216.58.208.227): icmp_seq=1 ttl=56 time=5.65 ms
64 bytes from par10s22-in-f227.1e100.net (216.58.208.227): icmp_seq=2 ttl=56 time=7.12 ms
64 bytes from par10s22-in-f227.1e100.net (216.58.208.227): icmp_seq=3 ttl=56 time=8.44 ms

2- Changer le mot de passe

Taper la commande passwd
Indiquer le mot de passe actuel : raspberry
Taper deux fois de suite votre nouveau mot de passe

pi@raspberrypi:~ $ passwd
Changing password for pi.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

3- Mettre à jour le systéme et le firmware

pi@raspberrypi:~ $ sudo apt-get -y update && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo apt-get -y autoclean
pi@raspberrypi:~ $ sudo apt-get -y install rpi-update
pi@raspberrypi:~ $ sudo rpi-update
 [...]
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** We're running for the first time
 *** Backing up files (this will take a few minutes)
 *** Backing up firmware
 *** Backing up modules 4.4.50-v7+
 [...]
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 4.9.13-v7+
 *** depmod 4.9.13+
 *** Updating VideoCore libraries
 *** Using HardFP libraries
 *** Updating SDK
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to d8803bc3b369b087450e636beb0cb30857e3215e
 *** A reboot is needed to activate the new firmware
pi@raspberrypi:~ $ sudo reboot

5- Mettre le Pi à l'heure

pi@raspberrypi:~ $ sudo dpkg-reconfigure tzdata

Choisir votre continent :

tuto4.png

Choisir la Capital de votre Pays :

tuto5.png

Vous devriez obtenir l'output suivant : 

Current default time zone: 'Europe/Paris'
Local time is now:      Mon Aug 15 18:09:00 CEST 2016.
Universal Time is now:  Mon Aug 15 16:09:00 UTC 2016.

Si l'heure est fausse, c'est que votre Pi ne se synchronise pas sur un serveur NTP.
Deux solutions :

  1. Vous n'avez pas accès à l'internet, faite en sorte d'avoir accès à Internet. Reprendre le début du tuto.
  2. http://framboisepi.fr/synchronisation-sur-un-serveur-de-temps/

6- Finir de configurer son Pi

Lancer le raspi-config 

pi@raspberrypi:~ $ sudo raspi-config 

Aller dans les "Advanced Options"

tuto011.PNG.59d09c1cd34cdab887fcaa7265dd048c.PNG

Lancer la première ligne : "Expand Filesystem"

tuto012.PNG.46bdf4f0e177847c704a08acc058a50f.PNG

tuto7.png

Lancer l'option 5 pour activer la camera :

tuto013.PNG.f2d21f44e737da1c07f935962cf7a297.PNG

Et valider l'option "P1 Camera"

tuto014.PNG.ad1a3a06e39d9c84a32eb38dff06fe39.PNG

tuto9.png

tuto10.png

Naviguer vers "Finish" avec la touche TAB et lancer le reboot du Pi (encore oui je sais... :P )

7- Installer (enfin) Octoprint

Installer les paquets nécessaire pour Octoprint : 

pi@raspberrypi:~ $ sudo apt-get -y install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential

Aller dans le répertoire /home/pi :

pi@raspberrypi:~ $ cd /home/pi

Vérifier :

pi@raspberrypi:~ $ pwd
/home/pi

Lancer le téléchargement des Binaires d'Octoprint :

pi@raspberrypi:~ $ git clone --depth 1 https://github.com/foosel/OctoPrint.git
Cloning into 'OctoPrint'...
remote: Counting objects: 690, done.
remote: Compressing objects: 100% (638/638), done.
remote: Total 690 (delta 38), reused 328 (delta 9), pack-reused 0
Receiving objects: 100% (690/690), 3.53 MiB | 1.06 MiB/s, done.
Resolving deltas: 100% (38/38), done.
Checking connectivity... done.

Naviguer vers le répertoire nouvellement créé :

pi@raspberrypi:~ $ cd OctoPrint/
pi@raspberrypi:~/OctoPrint $ 

Lancer l'installation :

pi@raspberrypi:~/OctoPrint $ virtualenv venv
Running virtualenv with interpreter /usr/bin/python2
New python executable in venv/bin/python2
Also creating executable in venv/bin/python
Installing setuptools, pip...done.
pi@raspberrypi:~/OctoPrint $ ./venv/bin/pip install pip --upgrade
Downloading/unpacking pip from https://pypi.python.org/packages/b6/ac/7015eb97dc749283ffdec1c3a88ddb8ae03b8fad0f0e611408f196358da3/pip-9.0.1-py2.py3-none-any.whl#md5=297dbd16ef53bcef0447d245815f5144
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB): 1.3MB downloaded
Installing collected packages: pip
  Found existing installation: pip 1.5.6
    Uninstalling pip:
      Successfully uninstalled pip
Successfully installed pip
Cleaning up...
pi@raspberrypi:~/OctoPrint $ ./venv/bin/python setup.py install
[...]
Installed /home/pi/OctoPrint/venv/lib/python2.7/site-packages/pytz-2016.10-py2.7.egg
Finished processing dependencies for OctoPrint==1.3.1

On créé le répertoire de config :

pi@raspberrypi:~/OctoPrint $ mkdir ~/.octoprint

On rajoute le user 'pi' au groupe 'tty' :

pi@raspberrypi:~/OctoPrint $ sudo usermod -a -G tty pi

On rajoute le user 'pi' au groupe 'dialup' :

pi@raspberrypi:~/OctoPrint $ sudo usermod -a -G dialout pi

Maintenant on test si ça marche :

pi@raspberrypi:~/OctoPrint $ cd /home/pi
pi@raspberrypi:~/OctoPrint $ ~/OctoPrint/venv/bin/octoprint
Starting the server via "octoprint" is deprecated, please use "octoprint serve" from now on.
2017-03-13 21:31:30,471 - octoprint.server - INFO - Starting OctoPrint 1.3.1 (master branch)
2017-03-13 21:31:30,548 - octoprint.plugin.core - INFO - Loading plugins from /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins, /home/pi/.octoprint/plugins and installed plugin packages...
2017-03-13 21:31:31,954 - octoprint.plugins.discovery - INFO - pybonjour is not installed, Zeroconf Discovery won't be available
2017-03-13 21:31:31,957 - octoprint.plugin.core - INFO - Found 7 plugin(s) providing 7 mixin implementations, 4 hook handlers
2017-03-13 21:31:31,992 - octoprint.plugin.core - INFO - Loading plugins from /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins, /home/pi/.octoprint/plugins and installed plugin packages...
2017-03-13 21:31:32,289 - octoprint.plugin.core - INFO - Found 7 plugin(s) providing 7 mixin implementations, 4 hook handlers
2017-03-13 21:31:32,295 - octoprint.filemanager.storage - INFO - Initializing the file metadata for /home/pi/.octoprint/uploads...
2017-03-13 21:31:32,296 - octoprint.filemanager.storage - INFO - ... file metadata for /home/pi/.octoprint/uploads initialized successfully.
2017-03-13 21:31:34,505 - octoprint.util.pip - INFO - Using "/home/pi/OctoPrint/venv/bin/python -m pip" as command to invoke pip
2017-03-13 21:31:36,668 - octoprint.util.pip - INFO - Version of pip is 9.0.1
2017-03-13 21:31:36,669 - octoprint.util.pip - INFO - pip installs to /home/pi/OctoPrint/venv/lib/python2.7/site-packages, --user flag needed => no, virtual env => yes
2017-03-13 21:31:36,671 - octoprint.plugin.core - INFO - Initialized 7 plugin implementation(s)
2017-03-13 21:31:36,677 - octoprint.plugin.core - INFO - 7 plugin(s) registered with the system:
|  Announcement Plugin (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/announcements
|  Core Wizard (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/corewizard
|  CuraEngine (<= 15.04) (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/cura
|  Discovery (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/discovery
|  Plugin Manager (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/pluginmanager
|  Software Update (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/softwareupdate
|  Virtual Printer (bundled) = /home/pi/OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.1-py2.7.egg/octoprint/plugins/virtual_printer
2017-03-13 21:31:36,683 - octoprint.filemanager - INFO - Adding backlog items from all storage types to analysis queue...
2017-03-13 21:31:36,686 - octoprint.filemanager - INFO - Added 0 items from storage type "local" to analysis queue
2017-03-13 21:31:36,686 - octoprint.server - INFO - Reset webasset folder /home/pi/.octoprint/generated/webassets...
2017-03-13 21:31:36,687 - octoprint.server - INFO - Reset webasset folder /home/pi/.octoprint/generated/.webassets-cache...
2017-03-13 21:31:37,023 - octoprint.plugins.discovery - INFO - Registered OctoPrint instance on raspberrypi for SSDP
2017-03-13 21:31:37,127 - octoprint.plugins.pluginmanager - INFO - Loaded plugin repository data from http://plugins.octoprint.org/plugins.json
2017-03-13 21:31:37,169 - octoprint.server - INFO - Listening on http://0.0.0.0:5000
2017-03-13 21:31:37,415 - octoprint.plugins.announcements - INFO - Loaded channel _important from http://octoprint.org/feeds/important.xml in 0.24s

Si pas de gros message d'erreur ou de gros warning à l'écran vous devriez pouvoir accéder à Octoprint depuis votre PC :

Ouvrez un navigateur et taper l'URL : http://votreip:5000

Vous devriez arriver sur le popup suivant :

tuto015.thumb.PNG.82d2ffdab80969753c9da9c25318ce95.PNG

Bonne nouvelle, votre installation d'Octoprint fonctionne.

Faire CTRL + C dans le terminal putty pour tuer le proccess.
Maintenant nous allons voir pour démarrer automatiquement Octoprint au démarrage du Pi.

8- Démarrer Octoprint automatiquement

Editer le fichier suivant :

pi@raspberrypi:~ $ nano ~/OctoPrint/scripts/octoprint.default

Retirer le # devant la ligne  :

#DAEMON=/home/pi/OctoPrint/venv/bin/octoprint

Ce qui donne :

DAEMON=/home/pi/OctoPrint/venv/bin/octoprint

Copier le fichier init dans le init.d pour un autostart au boot du Pi

pi@raspberrypi:~ $ sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint

Lui donner les droits d'exécution :

pi@raspberrypi:~ $ sudo chmod +x /etc/init.d/octoprint

Copier le fichier Default dans le bon répertoire :

pi@raspberrypi:~ $ sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint

Ajouter Octoprint en démarrage automatique.

pi@raspberrypi:~ $ sudo update-rc.d octoprint defaults

Vérifier que ça fonctionne :

pi@raspberrypi:~/OctoPrint $ sudo service octoprint start
pi@raspberrypi:~/OctoPrint $ sudo service octoprint status
● octoprint.service - LSB: OctoPrint daemon
   Loaded: loaded (/etc/init.d/octoprint)
   Active: active (running) since Mon 2017-03-13 21:39:50 CET; 1s ago
  Process: 9869 ExecStart=/etc/init.d/octoprint start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/octoprint.service
           └─9875 /home/pi/OctoPrint/venv/bin/python /home/pi/OctoPrint/venv/bin/octoprint serve --port=5000

Mar 13 21:39:50 raspberrypi octoprint[9869]: Starting OctoPrint Daemon: OctoPrint.
Mar 13 21:39:50 raspberrypi systemd[1]: Started LSB: OctoPrint daemon.

Le service est "running" tout va bien, on reboot (encore 9_9) pour vérifier :

pi@raspberrypi:~ $ sudo reboot

Une fois qu'il a reboot, normalement vous avez accès depuis votre navigateur.

http://votreip:5000/

9- Configurer Octoprint

Lors de la première connexion, Octoprint vous demande si vous voulez indiquez un mot de passe pour l'interface web.
C'est à votre convenance, si c'est juste en local "why not". Si vous voulez y accéder de l'extérieur "OBLIGATOIRE".

tuto11.png

Vous arrivez maintenant sur l'interface principal :

tuto12.png

Il faut configurer votre imprimante.
Aller dans 'Settings' en haut à droite.
Et vous rendre dans 'Printer profile' pour cliquer sur 'Add Profile'

tuto13.png

Indiquer les paramètres de votre imprimante, dans mon cas une SmartCub3D :

tuto14.png

De retour sur la page des imprimantes, cliquer sur l'étoile à droite de la ligne de votre imprimante. Ceci pour passer en imprimante par défaut.

tuto15.png

Faire "Save" en bas à droite.

De retour sur la page principal, connecter votre imprimante.
Toujours avec vos paramètres, ici encore pour la SmartCub3D :

tuto16.png

Et appuyer sur "Connect"
Une fois connecter, les températures de votre imprimante devrais s'afficher sur l'interface et vous devriez voir un "Machine State: Operational"

tuto17.png

On va maintenant tester que l'imprimante répond au contrôle d'Octoprint.
Vous rendre dans l'onglet "Control" :

tuto18.png

Tester les différents mouvement...

Si c'est ok vous êtes prêt à imprimer, mais installons la Camera avant.

10- Installer la camera

Installer les paquets nécessaires :

pi@raspberrypi:~ $ sudo apt-get -y install subversion libjpeg8-dev imagemagick libav-tools cmake

Revenir dans le répertoire du user pi :

pi@raspberrypi:~ $ cd /home/pi/

Télécharger Mjpg Streamer :

pi@raspberrypi:~ $ git clone https://github.com/jacksonliam/mjpg-streamer.git
Cloning into 'mjpg-streamer'...
remote: Counting objects: 2543, done.
remote: Total 2543 (delta 0), reused 0 (delta 0), pack-reused 2543
Receiving objects: 100% (2543/2543), 3.41 MiB | 2.60 MiB/s, done.
Resolving deltas: 100% (1578/1578), done.
Checking connectivity... done.

Aller dans son répertoire :

pi@raspberrypi:~ $ cd mjpg-streamer/mjpg-streamer-experimental

Paramétrer les 'Path' par défaut :

pi@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ export LD_LIBRARY_PATH=.

On compile :

pi@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ make
[...]
[100%] Built target output_udp
make[2]: Leaving directory '/home/pi/mjpg-streamer/mjpg-streamer-experimental/_build'
make[1]: Leaving directory '/home/pi/mjpg-streamer/mjpg-streamer-experimental/_build'

Si pas d'erreur on passe à la suite.

Test de la camera, lancer la commande suivante :

pi@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ ./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so" 

Vous devriez avoir l'Output suivant :

MJPG Streamer Version.: 2.0
 i: fps.............: 5
 i: resolution........: 640 x 480
 i: camera parameters..............:

Sharpness 0, Contrast 0, Brightness 50
Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0
Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none'
Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128
Rotation 0, hflip No, vflip No
ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000
 o: www-folder-path...: disabled
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled
 i: Starting Camera
Encoder Buffer Size 81920

Vous devriez pouvoir accéder à votre camera depuis un navigateur Web :

http://votreip:8080/?action=stream

tuto22.png

Cool non ? Bon par contre c'est chiant si il faut lancer un terminal et le garder ouvert pour la Camera.

Pour pouvoir allumer ou éteindre la camera depuis l'interface Web d'Octoprint :

Editer le fichier :

pi@raspberrypi:~ $ nano /home/pi/.octoprint/config.yaml

Remplacer : 

webcam: {}

Par : 

webcam:
  stream: http://<your Raspi's IP>:8080/?action=stream
  snapshot: http://127.0.0.1:8080/?action=snapshot
  ffmpeg: /usr/bin/avconv

Créer le répertoire scripts

pi@raspberrypi:~ $ mkdir /home/pi/scripts/

Editer le fichier suivant :

pi@raspberrypi:~ $ nano /home/pi/scripts/webcam

Et copier dedans :

#!/bin/bash
# Start / stop streamer daemon

case "$1" in
    start)
        /home/pi/scripts/webcamDaemon >/dev/null 2>&1 &
        echo "$0: started"
        ;;
    stop)
        pkill -x webcamDaemon
        pkill -x mjpg_streamer
        echo "$0: stopped"
        ;;
    *)
        echo "Usage: $0 {start|stop}" >&2
        ;;
esac

Pour enregister CTRL + X

Editer le fichier suivant :

pi@raspberrypi:~ $ nano /home/pi/scripts/webcamDaemon

Et copier dedans :

#!/bin/bash

MJPGSTREAMER_HOME=/home/pi/mjpg-streamer/mjpg-streamer-experimental
MJPGSTREAMER_INPUT_USB="input_uvc.so"
MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so"

# init configuration
camera="auto"
camera_usb_options="-r 640x480 -f 10"
camera_raspi_options="-fps 10"

if [ -e "/boot/octopi.txt" ]; then
    source "/boot/octopi.txt"
fi

# runs MJPG Streamer, using the provided input plugin + configuration
function runMjpgStreamer {
    input=$1
    pushd $MJPGSTREAMER_HOME
    echo Running 
    ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
    LD_LIBRARY_PATH=. $MJPGSTREAMER_HOME
    popd
}

# starts up the RasPiCam
function startRaspi {
    logger "Starting Raspberry Pi camera"
    runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options"
}

# starts up the USB webcam
function startUsb {
    logger "Starting USB webcam"
    runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options"
}

# we need this to prevent the later calls to vcgencmd from blocking
# I have no idea why, but that's how it is...
vcgencmd version

# echo configuration
echo camera: $camera
echo usb options: $camera_usb_options
echo raspi options: $camera_raspi_options

# keep mjpg streamer running if some camera is attached
while true; do
    if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then
        startUsb
    elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then
        startRaspi
    fi

    sleep 120
done

On rend les deux fichiers exécutable :

pi@raspberrypi:~ $ chmod +x /home/pi/scripts/webcam
pi@raspberrypi:~ $ chmod +x /home/pi/scripts/webcamDaemon

On édite le fichier suivant :

pi@raspberrypi:~ $ nano /home/pi/.octoprint/config.yaml

Et on remplace :

system: {}

Par :

system: 
  actions:      
  - action: streamon 
    command: /home/pi/scripts/webcam start 
    confirm: false 
    name: Start video stream 
  - action: streamoff 
    command: /home/pi/scripts/webcam stop
    confirm: false
    name: Stop video stream

On redémarre OctoPrint :

pi@raspberrypi:~ $ sudo service octoprint restart 

Vous devriez voir apparaître dans l'interface le menu suivant :

tuto23.png

Cliquer sur 'Start' :

tuto24.png

Vous devriez voir votre Webcam dans l'Onglet 'Control' et l'onglet 'Timelapse' devrait apparaître (Si rien ne s'affiche faire F5 pour rafraîchir la page)

tuto25.png

11- Le port 5000 c'est bien...

A partir de maintenant vous devez pouvoir accéder à votre installation Octoprint depuis l'URL : http://votreip:5000/

Perso j'aime pas les :xxxx, on va donc le rediriger vers le port 80.
On est sur un réseau local, le https ne sert à rien.
Par contre si vous souhaitez ouvrir votre Octoprint sur Internet je vous recommande le 443 (https), sauf si vous avez un Reverse Proxy sécurisé en frontal de votre connexion.

On install haproxy :

pi@raspberrypi ~ $ sudo apt-get -y install haproxy

On le configure :

pi@raspberrypi:~ $ sudo nano /etc/haproxy/haproxy.cfg

Effacer tout ce qui se trouve dans le fichier et le remplacer par :

global
        maxconn 4096
        user haproxy
        group haproxy
        daemon
        log 127.0.0.1 local0 debug

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        option http-server-close
        option forwardfor
        maxconn 2000
        timeout connect 5s
        timeout client  15min
        timeout server  15min

frontend public
        bind *:80
        use_backend webcam if { path_beg /webcam/ }
        default_backend octoprint

backend octoprint
        reqrep ^([^\ :]*)\ /(.*)     \1\ /\2
        option forwardfor
        server octoprint1 127.0.0.1:5000

backend webcam
        reqrep ^([^\ :]*)\ /webcam/(.*)     \1\ /\2
        server webcam1  127.0.0.1:8080

On redémarre le service haproxy :

pi@raspberrypi:~ $ sudo service haproxy restart

Vous devriez pouvoir accéder à votre interface web depuis :

http://votreip

Et la webcam depuis :

http://votreip/webcam/?action=stream

----

PS1 : Nano est donné pour exemple pour l'édition de vos fichiers. Vous pouvez utiliser Vim c'est bien aussi ;)

PS2 : Je viens de faire une fresh install en écrivant ce tuto, donc normalement vous devriez pas avoir de problème pour l'installation d'Octoprint. Je suis ouvert à tous commentaires.

tuto6.png

tuto8.png

12- Activer les mises à jour automatique et installer des plugins

13- Régler la caméra et activer les mises à jour système automatique

 

Modifié (le) par Yo'
Update chapter (Créateur) / Ajout d'un préfixe(Yo')
  • J'aime 4
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Hello, deux/trois complément :

  • Pour activer l'update automatique depuis la page Web :

Vous rendre dans Settings > Software Update et faire un clic sur la clef à molette :

tuto26.png

Remplir le champ vide par le chemin du répertoire ou nous avons installé Octoprint précédemment :

/home/pi/OctoPrint

tuto27.png

Quand une mise à jour d'OctoPrint sera dispo, un popup vous indiquera comment faire l'update depuis la page web.

  • Installer un plugins sur Octoprint

Vous rendre dans Settings > Plugin Manager et cliquer sur le Bouton "Get More" en bas de page :

tuto29.png

tuto30.png

La communauté propose un certain nombre de plugins, voici une liste non exhaustive de ce que je trouve utile pour mon utilisation :

  • Active Filters : Permet de sauvegarder les filtres appliqués sur le terminal
  • Autoscroll : Permet de mettre en pause le défilement automatique du terminal, quand vous cherchez un ligne.
  • Print History Plugin : Vous donne un historique de vos impressions, temps, filaments consommés... 
  • TouchUI : Interface Mobile. Permet d'avoir une interface light sur votre mobile ou tablette.
  • EEPROM Marlin Editor Plugin : Permet de modifier certain paramètre de l'EEPROM, sans devoir connecter l'imprimante à un PC.

tuto28.png

 

Modifié (le) par dusters
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
  • Optimisation de la camera Raspberry :

Petit rappel : Penser à faire un rpi-update et les updates système avant de brancher votre caméra.

Les cameras V1 et V2 de Raspberry sont fournis avec un Focus large... Problématique si votre camera est proche du plateau de votre imprimante :

tuto31.png

L'objet est flou... Mais on peut faire le focus sur la Camera en tournant l'objectif en étoile à quatre branches...

Deux méthodes une pince pour tourner l'objectif (meilleur moyen de bousiller la lentille, du vécu :$). Ou bien avoir une imprimante 3D et imprimer des petits outils :D

http://www.thingiverse.com/thing:1941802

http://www.thingiverse.com/thing:1570865

Les outils se prennent dans l'objectif et permet de le faire tourner sans rien abîmer, après quelque talonnements dans un sens puis dans l'autre :

tuto32.png 

C'est beaucoup plus net, pas parfait. Mais avec de la patience on peut arriver à un truc vraiment propre.

Autre point, de base les paramètres de mjpg-streamer sont de 10fps et d'une résolution de 640x480 ¬¬

Si vous avez un V2 en 1080p c'est bien dommage... Mais on peut les modifier B|

Le module utilisé raspicam, permet de jouer sur les paramètres suivants :

 The following parameters can be passed to this plugin:

 [-fps | --framerate]...: set video framerate, default 5 frame/sec 
 [-x | --width ]........: width of frame capture, default 640
 [-y | --height]........: height of frame capture, default 480 
 [-quality].............: set JPEG quality 0-100, default 85 
 [-usestills]...........: uses stills mode instead of video mode 
 [-preview].............: Enable full screen preview
 [-timestamp]...........: Get timestamp for each frame
 
 -sh  : Set image sharpness (-100 to 100)
 -co  : Set image contrast (-100 to 100)
 -br  : Set image brightness (0 to 100)
 -sa  : Set image saturation (-100 to 100)
 -ISO : Set capture ISO
 -vs  : Turn on video stablisation
 -ev  : Set EV compensation
 -ex  : Set exposure mode (see raspistill notes)
 -awb : Set AWB mode (see raspistill notes)
 -ifx : Set image effect (see raspistill notes)
 -cfx : Set colour effect (U:V)
 -mm  : Set metering mode (see raspistill notes)
 -rot : Set image rotation (0-359)
 -stats : Compute image stats for each picture (reduces noise for -usestills)
 -drc : Dynamic range compensation level (see raspistill notes)
 -hf  : Set horizontal flip
 -vf  : Set vertical flip

Le détail des options est disponible ici : https://github.com/foosel/OctoPrint/wiki/MJPG-Streamer-configuration

Pour les tester, désactiver votre camera via l'interface Web : "System > Stop Video Stream"

Et quand vous êtes connecté en SSH taper la commande suivante :

cd ~/mjpg-streamer/mjpg-streamer-experimental
./mjpg_streamer -i "./input_raspicam.so <vos paramètres>" -o "./output_http.so"

Pour exemple : 

./mjpg_streamer -i "./input_raspicam.so -q 75 -x 1296 -y 730 -awb tungsten -fps 30" -o "./output_http.so"

Nous avons mis : 

  • "-q 75" : qualité à 75%
  • "-x 1296 -y 730" : Résolution de 1296px par 730px en 16:9
  • "-awb tungsten" : Type de l'éclairage tungsten (c'est ce qui rend le mieux pour mes led)
  • "-fps 30" : Nombre de frame par seconde à 30, permettant d'avoir une vidéo fluide à l'écran.

Lancer la commande et vérifier le résultat à l'écran. Soit via l'onglet contrôle d'Octoprint soit via l'URL : http://<monip>/webcam/?action=stream

Si ça ne vous convient pas faire CTRL+C dans votre terminal, modifier les paramètres et revérifier sur votre navigateur.

On peut arriver à des trucs sympa ;)

tuto33.png

 

  • Garder son système à jour

Il est important de toujours garder son système à jour, surtout si il est ouvert sur internet.

Pour cela : 

cd /
sudo mkdir /scripts
sudo vim /scripts/update

Copier dans le fichier éditer les lignes suivantes :

#/bin/bash
DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get -y --force-yes dist-upgrade && apt-get -y autoremove && apt-get -y autoclean

Sauvegarder avec la touche ECHAP et taper :

:wq!

Rendre exécutable le script :

sudo chmod +x /scripts/update

Maintenant lui dire de se lancer toutes les nuits :

sudo crontab -e

Et copier la ligne suivante : 

0 3  *   *   *     /scripts/update

A partir de maintenant, votre système se mettra tout seul à jour toutes les nuits à 3h.

Attention 1 : Certaine mise à jour demande un reboot, il faut penser à faire un reboot de temps en temps pour la prise en compte des updates.

Attention 2 : Si vous lancez des impressions de nuit (c'est pas bien, faut pas laisser sans surveillance une imprimante). Certain update peuvent avoir un impact sur Octoprint ou la communication USB.

Modifié (le) par dusters
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Bonjour à tous,

tout d'abord merci pour ce tuto...

Donc j'ai essayer de le suivre à la lettre et ça ne fonctionne pas chez moi ???

Donc jusqu’à la phase "  Configurer Octoprint " tout vas bien je vois bien l'image de ma caméra qui s'affiche...

Mais une fois que je m'occupe de " 8- Démarrer Octoprint automatiquement " la plus rien ne fonctionne impossible de me reconnecter à "Mon adresse ip :5000"

je précise que je passe par un routeur au quelle j'ai attribuer une adresse ip fixe à mon RASPBERRY PI 30.

Si quelqu’un a une idée je suis preneur.

Merci par avance.

pascal

Lien vers le commentaire
Partager sur d’autres sites

oui j'ai bien l'onglet systéme " start video stream      ;;;;    stop video stream".

je vois bien l'image lorsque je tape la commande " ./mjpg_streamer -i "./input_raspicam.so -q 75 -x 1296 -y 730 -awb tungsten -fps 30" -o "./output_http.so"

mais après je fais ctrl + X et la plus d'image..

Lien vers le commentaire
Partager sur d’autres sites

Petite parenthèse, tu peux lancer le daemon de mjpg-streamer avec un nohup pour le lancer en tache de fond et le détacher du terminal :

nohup ./mjpg_streamer -i "./input_raspicam.so -q 75 -x 1296 -y 730 -awb tungsten -fps 30" -o "./output_http.so
Lien vers le commentaire
Partager sur d’autres sites

il y a 4 minutes, gisclace a dit :

Petite parenthèse, tu peux lancer le daemon de mjpg-streamer avec un nohup pour le lancer en tache de fond et le détacher du terminal :


nohup ./mjpg_streamer -i "./input_raspicam.so -q 75 -x 1296 -y 730 -awb tungsten -fps 30" -o "./output_http.so

C'est le principe des boutons "Systems" dans l'interface web :)

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...