Introduzione

Octoprint è un progetto open source, il codice è ospitato su GitHub, che fornisce un software di controllo per le stampanti 3D.

Octoprint fornisce all'utente un interfaccia web per controllare la stampante 3D collegata via USB , questa permette di sottomettere job, di controllare lo stato di avanzamento del processo di stampa e dei parametri tecnici della stampante collegata; inotlre è integrato il supporto per delle webcam.

Installazione e configurazione

Creazione utente dedicato

Il primo step necessario da seguire è creare l'utente di sistema che eseguirà il servizio:

$ useradd octo
$ cp  /etc/skel /home/octo -rv 
$ chmod 700 /home/octo
$ chown -R octo. /home/octo
$ usermod -aG uucp,tty octo

Installazione dipendenze

Il secondo passo necessario è:

$ pacman -S wget zip unzip python python-virtualenv base-devel nginx motion

Installazione di OctoPrint

Quella che segue è la procedura che io ho scelto di seguire :

$ su - octo
$ mkdir src
$ cd src
$ wget https://github.com/OctoPrint/OctoPrint/archive/1.4.2.zip
$ unzip 1.4.2.zip  -d ../
$ cd ../ 
$ virtualenv env
$ source env/bin/activate
$ cd OctoPrint-1.4.2/
$ pip install -r requirements.txt 

Il metodo riportato dalla documentazione ufficiale è:

$ su - octo
$ virtualenv env
$ source env/bin/activate
$ pip install octoprint 

Configurazione del servizio di systemd

Per far funzionare il servizio ho usato due file :

  • octoprint.sh : script che gestisce variabili d'ambiente e lancia octoprint
  • octoprint.service : file di configurazione di systemd

Lo script di avvio

::::::::::::::
octoprint.sh
::::::::::::::
#!/bin/bash

cd $HOME
source $HOME/env/bin/activate
$HOME/env/bin/octoprint serve --host=127.0.0.1 --port=8080

Il file per systemd service:

::::::::::::::
octoprint.service
::::::::::::::
[Unit]
Description=Octoprint Service
After=network.target

[Service]
Type=simple
User=octo
WorkingDirectory=/home/octo
ExecStart=/home/octo/octoprint.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Abilitare il servizio ( come utente root ):

$ cp /home/octo/octoprint.service /etc/systemd/system/ 
$ systemctl daemon-reload
$ systemctl enable --now octoprint

Per accedere al journal del nuovo servizio:

$ journalctl -u octoprint

Configurazione di NGINX

Prima di procedere recuperare questo articolo.

Il file di configurazione da inserire nella cartella dei siti disponibili:

:::::::::::::::::::::::::::
/etc/nginx/sites-availbles/octo.conf
:::::::::::::::::::::::::::

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream "octoprint" {
    server 127.0.0.1:5000;
}

upstream "mjpg-streamer" {
    server 127.0.0.1:8081;
}

server {
    listen       80;
    server_name  localhost.localdomain;
    
    location / {
        proxy_pass http://octoprint/;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
        proxy_http_version 1.1;

        client_max_body_size 0;    
    }

    location /webcam/ {
        proxy_pass http://mjpg-streamer/;
    }

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

abilitare il sito:

ln -s /etc/nginx/sites-availbles/octo.conf /etc/nginx/sites-enabled/

Configurazione della webcam

Per fornire lo stream di immagini usiamo motion, bisogna abilitare il funzionamento come demone :

############################################################
# System control configuration parameters
############################################################

# Start in daemon (background) mode and release terminal.
daemon on

ed eventualmente aggiustare i parametri di configurazione del device video:

videodevice /dev/video0

ed infine aggiustiamo i parametri di configurazione dell'immagine:

############################################################
# Image Processing configuration parameters
############################################################

# Image width in pixels.
width 640

# Image height in pixels.
height 480

# Maximum number of frames to be captured per second.
framerate 15

# Text to be overlayed in the lower left corner of images
text_left OCTOPRINT

# Text to be overlayed in the lower right corner of images.
text_right %Y-%m-%d\n%T-%q

L'ultimo step è abilitare e avviare il servizio

systemctl enable --now motion

Inizio all'uso

A questo punto ci si può dedicare alla configurazione di octoprint via la pagina web.

Riferimenti