OctoPrint sur debian/ubuntu

J’aime beaucoup OctoPrint pour gérer mon imprimante 3D. Il existe beaucoup de plugins pour enrichir les fonctionnalités et il est bien intégré dans Cura. L’ensemble fait un duo parfait pour gérer les impressions 3D. il existe même un plugin OctoFusion pour l’intégrer directement dans Fusion360 (non testé encore). Seul problème, l’installation recommandée est sur raspberry pi. Je dispose du premier modèle, qui est peu puissant par rapport aux récents, et déconseillé pour OctoPi, une distribution OctoPrint prête à l’emploi. Je l’ai utilisé avec succès pendant presque deux ans, mais depuis la mise à jour vers la dernière version, il est devenu vraiment lent, au point de multiplier par deux le temps d’impression, et causer des problèmes car l’imprimante se retrouve à attendre les commandes et laisse couler du filament en attendant. Cela crée alors des boursouflures problématiques sur les impressions… Comme j’ai mon serveur sous Debian qui tourne à coté de l’imprimante, c’était dommage d’acheter un raspberry rien que pour ça, d’autant que même les anciens modèles ne sont pas bradés, j’ai donc opté pour installer OctoPrint directement sur mon serveur.

Installation d’OctoPrint

L’installation est super bien décrite sur la page setting up octoprint on a raspberry pi running raspbian , il suffit de quelques adaptations pour s’adapter à un non raspberry :

Le mode d’emploi installe OctoPrint sous l’utilisateur pi ; plutôt que de créer un utilisateur pi qui ne correspondrait à rien sur mon serveur, j’ai :

  • créé un utilisateur octoprint qui va exécuter le serveur pour qu’il ne tourne pas en root : sudo useradd octoprint
  • installé dans /opt/OctoPrint  plutôt que dans le home de l’utilisateur

Les séquences ci-dessous sont les scripts de la page octoprint adaptés avec les choix ci-dessus.

Puis pour le lancement automatique :

En ajustant dans le fichier /etc/defaults/octoprint les lignes :

 

Customisation d’OctoPrint

Lors de la première connexion à OctoPrint, l’installation se déroule sans problème. OctoPrint répond à la vitesse de l’éclair sur un PC 🙂

Pour qu’OctoPrint sache se redémarrer tout seul il est nécessaire de lui donner les droits correspondant pour éviter d’avoir à le faire à la main, ce qui devient vite pénible. Comme il tourne sous l’utilisateur octoprint, il est nécessaire de donner à cet utilisateur des droits supplémentaires. Plutôt que de donner les droits sudoers sur n’importe quelle commande comme décrit sur la page (autant faire tourner le serveur en root !), j’ai préféré limiter aux commandes nécessaires.

Créer un fichier /etc/sudoers.d/octoprint  avec le contenu :

Puis dans la configuration d’OctoPrint, dans l’entrée “Server”, indiquer comme commande “Restart OctoPrint” sudo /etc/init.d/octoprint restart

 

Comme j’allume l’imprimante seulement lorsque j’en ai besoin, j’ai rencontré un petit souci :

  • d’une part si je laisse Cura ouvert, celui-ci va se connecter automatiquement à l’imprimante dès que je l’allume, et je ne pourrais pas connecter OctoPrint ; pour résoudre cela, il suffit de désactiver le plugin “USB Printing”

  • d’autre part  OctoPrint ne se reconnecte pas automatiquement ; pour ce faire il suffit d’ajouter le plugin PortLister !

 

J’utilise par ailleurs les plugins suivants :

  • MultiCam pour le support de plusieurs prises de vues dans l’interface  et Fullscreen pour en profiter en plein écran
  • ABL Expert Plugin et Bed Visualizer pour l’autolevel du plateau
  • Change Filament pour faciliter le changement de filament
  • Detailled Progress  pour afficher la progression de l’impression
  • DisplayZ  pour afficher la hauteur actuelle de l’impression
  • EEPROM Marlin Editor  pour éditer les paramètres du firmware enregistrés dans l’EEPROM

 

Installation de la webcam

J’utilisais beaucoup la caméra raspberry, très pratique car très fine et que j’avais fixée à l’axe des Z avec cette petite impression 3D, pour pouvoir surveiller que l’impression se passe bien. Comme je n’ai pas réussi à installer une webcam plus grosse de la même façon, je vais conserver le raspberry seulement pour streamer la camera raspberry et ajouter le flux via le plugin multicam en attendant de trouver un autre moyen, sans doute en fixant une mini caméra endoscope directement sur la tête d’impression (moins de 3€ sur AliExpress).

Mais je voulais aussi une webcam fixe pour avoir une vue d’ensemble, et potentiellement ensuite utiliser octolapse pour des jolis timelapse. Après avoir testé et positionné la webcam avec es outils classique cheese ou webcamoid, il faut installer sur la debian un outil pour streamer le flux. Dans la distribution est intégré motion, qui fonctionne très bien, mais consomme inutilement du CPU pour de la détection de mouvement. Je me suis donc résolu à ajouter mjpg-streamer manuellement comme indiqué sur le site :

 

Il faut ensuite copier les deux scripts webcam et webcamDaemon sur la page octoprint dans /opt/OctoPrint, et adapter légèrement :

  • Dans le script webcam : adapter le répertoire /opt/OctoPrint/webcamDaemon dans le script webcam
  • Dans webcamDaemon :
    • rechercher le fichier de configuration /opt/OctoPrint/webcam.txt plutôt que /boot/octopi.txt
    • pour permettre de customiser le port de mjpg-streamer, ajouter un paramètre http_opts :
      • dans les paramètres (ou webcam.txt)
      • dans la fonction runMjpgStreamer
Il y aura quelques erreurs liées à l’absence de vcgencmd qui est un outil qui permet d’interroger le raspberry, mais ce n’est pas grave puisque justement ce n’est pas un raspberry 🙂

 

La camera est alors fonctionnelle lorsqu’on lance le script webcam start, et il suffit de configurer l’url http://localhost:5110/?action=stream  dans MultiCam.

Cependant c’est dommage de streamer tout le temps alors que ce n’est utile que lorsque l’imprimante est allumée. On va pouvoir mettre en place le démarrage et l’arrêt automatique à la connexion / déconnexion de l’imprimante via les events OctoPrint. Bizarrement je n’ai pas trouvé de possibilité de régler ça par l’interface, il faut donc modifier à la main le fichier config.yaml qui est dans le répertoire .octoprint (/opt/OctoPrint/.octoprint pour mon installation), puis redémarrer OctoPrint pour qu’il soit pris en compte

Vous retrouverez ici la seconde commande que nous avions ajoutée dans le fichier /etc/sudoers.d/octoprint.

L’installation est désormais complètement fonctionnelle, vous pouvez laisser octoprint et cura fonctionner en permanence. Lorsque vous allumerez l’imprimante (via une prise commandée par Domoticz pour mon cas), alors OctoPrint se connectera automatiquement, démarrera la webcam et vous pourrez imprimer directement depuis Cura.

A vos impressions 3D !

 

 

 

Article suivantRead more articles

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.