Table des matières
Octoprint
Octoprint est un logiciel qu'on installe sur un mini pc ARM, un Raspberry, qui va permettre de gérer l'imprimante PC éteint, la gérer a distance, de faire des films, des timelapse et j'en passe via des plugins qui peuvent être rajouter.
Installation d'octoprint
Je ne vais pas refaire le monde, c'est très bien expliqué sur octoprint. Mais dans les grandes lignes…
Brancher la carte SD sur le pc, décompresser le zip d'octoprint, et éxécuter Etcher. Dans le 1er champs, mettre l'image de Etcher, dans le second la carte SD qui doit être reconnu automatiquement.
Et reste a faire Flash! Après quelque minutes, octoprint est installé sur la carte SD.
Configuration du wifi
Si on a pas configuré le wifi avec son éditeur de texte préféré, moi notepad++ sur son Windows, dans chez moi E:/boot/octopi-network.txt, et la flemme de tout démonter, alors ce connecter en SSH sur le raspberry via le câble ethernet ou via VNC ou en local si le l'interface graphique est installer et si un écran et clavier est relier a celui ci.
Editer le fichier script /boot/octopi-network.txt
------------------------------------------------------------------------------ Access OctoPrint from a web browser on your network by navigating to any of: http://octopi.local http://192.168.1.232 http://2a01:e35:8bd8:6ce0:b666:4e0e:1697:30be https is also available, with a self-signed certificate. ------------------------------------------------------------------------------ This image comes without a desktop environment installed because it's not required for running OctoPrint. If you want a desktop environment you can install it via sudo /home/pi/scripts/install-desktop ------------------------------------------------------------------------------ OctoPrint version : 1.3.4 OctoPi version : 0.14.0 ------------------------------------------------------------------------------ pi@octopi:~ $ sudo nano /boot/octopi-network.txt
Repérer la section ##WPA/WPA2, et modifier afin qu'elle ressemble a ci-dessous après avoir renseigner votre SSID et mot de passe.
## WPA/WPA2 secured iface wlan0-octopi inet manual wpa-ssid "Nomdevotrereseauwifi" wpa-psk "Motdepasse"
Pour enregistrer le fichier faite les touches CTRL+X, puis Y pour oui et entrée pour le nom de fichier.
Le plus simple, sans taper 36 commandes lol, rebooter le raspberry via la commande sudo reboot
.
pi@octopi:~ $ sudo reboot
Votre BOX ou encore votre routeur attribuera une ip via le DHCP. Le réseau wifi est censé être opérationnel!
Franciser Octoprint
Pour passer OctoPrint en Français, il faut télécharger le pack de langue FR. Pack FR d'octoprint
Ce rendre sur la partie configuration, donc Settings et l'apparence, en Anglais Appearance suivi de Manage et dans Upload chercher l'archive ZIP précédemment téléchargé.
Revenir dans la page Appearence et dans le menu déroulant il devrait y avoir français dans default language. Si ce n'ai pas le cas rebooter le raspberry, et déconnecté bien de votre session octopi.
octoprint_2webcam.sh
J'ai écrit un petit script shell afin de simplifier et gagner du temps pour installer une seconde webcam sur le raspberry. Pour le moment, il fonctionne uniquement dans le cadre, ou la première webcam est une picam. La seconde, peut importe tant qu'elle est supporté par raspberry.
Il est disponible ici.
A savoir qu'il date du 12 décembre 2017 donc pas encore eu de retour d'expérience d'utilisateur. Le script fonctionne chez moi sous un rpi2 avec l'image d'octoprint, une picam v2 et une logitech C270.
Pour l’exécute faire ceci
pi@octopi:~ $ sudo -s root@octopi:~ $ wget https://www.leduteil.eu/Imprimante_3D/octoprint_2webcam.sh root@octopi:~ $ chmod +x octoprint_2webcam.sh root@octopi:~ $ ./octoprint_2webcam.sh
Vous pouvez faire le choix 2 afin de voir si la cam est identifié.
MAJ: Je vais reprendre la partie identification webcam.
Ouvrir Octoprint a l'extérieur
Chez moi Octoprint est ouvert à l'extérieur et pour tout le monde! Afin de ne pas router un port 8080 venant de l'extérieur par exemple sur le port 80 de octoprint dans mon LAN, j'ai préféré de tout faire transparent avec une popup de login sous Ngnix en reverse proxy. Je ne vais pas détailler l'installation de nginx, mais la conf est simple.
############################ # myoctoprint.mydomain ### ############################ upstream "webcam" { server 192.168.1.x:8080; } server { listen 80; server_name myoctoprint.mydomain; location / { proxy_pass http://192.168.1.x; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 0; auth_basic "Login please"; auth_basic_user_file /path/to/my/.htpasswd; } location /webcam/ { proxy_pass http://192.168.1.x; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
Grace a ce bout de conf, j'ai une popup de demande de m'identifier, et je reste sur le port 80 tout est transparent.
Et avec printoid, vous allez me dire que sa ne fonctionne plus. Et bien si, dans les paramètres de l'application il faut dans les paramètres optionnel des profils des serveurs octoprint, activé l'authentification basique.
On ce retrouve avec un octoprint plus sécurisé en dehors de chez sois :)
Ajouter des entrées de menu
Il est possible d'ajouter des scripts qui peuvent être exécuter via le menu.
Pour celà, il faut modifier le fichier config.yaml.
Une fois connecté avec le compte pi
pi@octopi-cr10:~ $ vi .octoprint/config.yaml
Il suffit d'ajouter ce qu'on souhaite ;)
Ajouter le bloc system, l'action, la commande, la description dans le menu et si besoin une confirmation.
Par exemple la solution que j'utilise pour éteindre ou démarré mes imprimantes.
system: actions: - action: Creality CR10-Mini ON command: sudo /root/bin/CR10_on.sh name: Allumer l'imprimante Creality CR10-Mini - action: Creality CR10-Mini OFF command: sudo /root/bin/CR10_off.sh confirm: ATTENTION, cette commande envoie un OFF a la domotique qui éteindra l'imprimante CR10-Mini. name: Eteindre l'imprimante Creality CR10-Mini
Script que j'utilise :
- CR_off.sh
#!/bin/sh IP_JEEDOM=192.168.1.XX CLEF_API=XXXXXXXXXXXXXXXXXXXXXXXXX ID_CMD=XXX curl -X POST "http://$IP_JEEDOM/core/api/jeeApi.php?api=$CLEF_API&type=cmd&id=$ID_CMD"
- CR_on.sh
#!/bin/sh IP_JEEDOM=192.168.1.XX CLEF_API=XXXXXXXXXXXXXXXXXXXXXXXXX ID_CMD=XXX curl -X POST "http://$IP_JEEDOM/core/api/jeeApi.php?api=$CLEF_API&type=cmd&id=$ID_CMD"
On configure sudo.
pi@octopi:~ $ visudo Defaults:pi !requiretty
pi@octopi:~ $ vi /etc/sudoers.d/CR10_on pi ALL=(ALL) NOPASSWD: /root/bin/CR10_on.sh
pi@octopi:~ $ vi /etc/sudoers.d/CR10_off pi ALL=(ALL) NOPASSWD: /root/bin/CR10_off.sh
Dans mon cas je peux éteindre comme allumer mes imprimantes via jeedom. Jeedom est une solution de domotique. J'utilise des prises ZWAVE perso qui me remonte la conso dans ma console domotique, mais on peu s'y prendre autrement, un esp8266 avec un relay par exemple ou autre.
Latence wifi
J'habite en appartement et je capte grosso modo 33 réseau wifi en 2.4Ghz. Impossible d'avoir le flux de ma picam fluide comme ma Logitech C270. Sur mon PI3, j'ai installé une clef wifi Netgear 5Ghz comme j'ai un routeur 5Ghz en plus de ma freebox revolution 1 1ère génération qui ne fais que 2.4Ghz et non pas le duo 2.4/5Ghz. Je n'accroche pas deux bandes de fréquence donc pour pallier a ce problème passage en 5Ghz ou personne utilise cette fréquence chez moi :)
Pour la clef Netgear A6100-100PES afin qu'elle soit bien reconnu, j'installe un petit module pour le noyau.
pi@octopi:~ $ sudo wget http://downloads.fars-robotics.net/wifi-drivers/install-wifi -O /usr/bin/install-wifi pi@octopi:~ $ sudo chmod +x /usr/bin/install-wifi
Lancer l'installation du module, il téléchagera le module par rapport a la version du noyau utilisé sur le PI
pi@octopi:~ $ sudo /usr/bin/install-wifi *** Raspberry Pi wifi driver installer by MrEngman. *** Performing self-update *** Relaunching after update *** Raspberry Pi wifi driver installer by MrEngman. Your current kernel revision = 4.9.78-v7+ Your current kernel build = #1084 Checking for a wifi module to determine the driver to install. Your wifi module is Bus 001 Device 005: ID 0846:9052 NetGear, Inc. A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU] And it uses the 8812au driver. Checking for a 8812au wifi driver module for your current kernel. There is a driver module available for this kernel revision. Downloading the 8812au driver. Installing the 8812au driver. Installing driver module 8812au.ko. Syncing changes to disk A version of the 8812au driver is already loaded and running. You will need to reboot to load the new driver, 8812au.ko.
La clef est parfaitement reconnu.
pi@octopi:~ $ sudo lsmod|grep 8812au 8812au 1676813 0 cfg80211 544609 1 8812au pi@octopi:~ $ sudo lsusb Bus 001 Device 005: ID 0846:9052 NetGear, Inc. A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU]
Là nous avons deux possibilités. Conserver le wifi interne du PI3, et créer une seconde interface. Ou remplacer le wifi du PI3.
Conservation du wifi du PI3
Editer le fichier /boot/octopi-network.txt
pi@octopi:~ $ sudo vi /boot/octopi-network.txt
## WPA/WPA2 secured iface wlan0-octopi inet manual wpa-ssid "SSID_2.4Ghz" wpa-psk "############" iface wlan1-octopi inet manual wpa-ssid "SSID_5Ghz" wpa-psk "############"
Editer le fichier /boot/octopi-wpa-supplicant.txt
pi@octopi:~ $ sudo vi /boot/octopi-wpa-supplicant.txt
Ajouter les réseau
network={ ssid="SSID_2.4Ghz" psk="#############" } network={ ssid="SSID_5Ghz" psk="##############" }
Rendre le fichier /etc/network/interfaces
comme ceci si vous utilisez le DHCP de votre box/routeur.
# interfaces(5) file used by ifup(8) and ifdown(8) # Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo iface lo inet loopback iface eth0 inet manual allow-hotplug wlan0 iface wlan0-raspbian inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf allow-hotplug wlan1 iface wlan1-raspbian inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf mapping wlan0 script /root/bin/map_iface mapping wlan1 script /root/bin/map_iface source /boot/octopi-network.txt
Relancer le réseau
pi@octopi:~ $ sudo service networking restart
Via la commande ifconfig, si tout est ok, il doit avoir deux interface wlan et une ip attaché via le DHCP.
pi@octopi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:96:d0:b3 adr inet6: fe80::ef77:ec8a:4bb6:88f4/64 Scope:Lien UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:9928733 errors:0 dropped:0 overruns:0 frame:0 TX packets:9928733 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1 RX bytes:284592980223 (265.0 GiB) TX bytes:284592980223 (265.0 GiB) wlan0 Link encap:Ethernet HWaddr 8c:3b:ad:12:48:76 inet adr:192.168.1.** Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::6901:3d59:39a0:1262/64 Scope:Lien adr inet6: 2a01:e35:****:****:****:****:****:****/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:80124295 errors:0 dropped:105981 overruns:0 frame:0 TX packets:193416706 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:4167777557 (3.8 GiB) TX bytes:1455359396 (1.3 GiB) wlan1 Link encap:Ethernet HWaddr b8:27:eb:23:ff:56 inet adr:192.168.1.** Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::6901:3d59:39a0:8746/64 Scope:Lien adr inet6: 2a01:e35:****:****:****:****:****:****/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0 GiB) TX bytes:0 (0 GiB)
Si il n'y a pas d'ip, rebooter le pi, ou faire ceci sur l'interface qui n'a rien.
pi@octopi:~ $ sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -Dwext pi@octopi:~ $ sudo dhclient wlan0
Remplacement du wifi du PI3
Editer le fichier /etc/modprobe.d/fbdev-blacklist.conf
pour blacklister les modules utilisé par le wifi interne
pi@octopi:~ $sudo vi /etc/modprobe.d/fbdev-blacklist.conf
Ajouter
#wifi blacklist brcmfmac blacklist brcmutil
Rebooter le PI, ensuite un ifconfig devrait donne ceci
pi@octopi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:96:d0:b3 adr inet6: fe80::ef77:ec8a:4bb6:88f4/64 Scope:Lien UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:9928733 errors:0 dropped:0 overruns:0 frame:0 TX packets:9928733 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1 RX bytes:284592980223 (265.0 GiB) TX bytes:284592980223 (265.0 GiB) wlan0 Link encap:Ethernet HWaddr 8c:3b:ad:12:48:76 inet adr:192.168.1.** Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::6901:3d59:39a0:1262/64 Scope:Lien adr inet6: 2a01:e35:****:****:****:****:****:****/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:80124295 errors:0 dropped:105981 overruns:0 frame:0 TX packets:193416706 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:4167777557 (3.8 GiB) TX bytes:1455359396 (1.3 GiB)