Octo Print

Aus brainelectronics Wiki
Wechseln zu: Navigation, Suche

Installation im virtualenv

   $ cd ~
   $ sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential
   $ git clone https://github.com/foosel/OctoPrint.git
   $ cd OctoPrint
   $ virtualenv venv
   $ ./venv/bin/pip install pip --upgrade
   $ ./venv/bin/python setup.py install
   $ mkdir ~/.octoprint

Installation im Verzeichnis

   $ cd ~/Gewunschtes-Verzeichnis
   $ sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential
   $ git clone https://github.com/foosel/OctoPrint.git
   $ cd OctoPrint
   $ sudo python setup.py install
   $ mkdir ~/.octoprint

Update

Octo Print

Am besten Octoprint manuell mittels

   $ /home/pi/OctoPrint/run

starten und über Einstellungen -> Software Update nach neuer Software suchen und installieren klicken.
Anschließen kann eine Fehlermeldung erscheinen, dass das Octo Print Update fehlgeschlagen ist. Nun einfach Octo Print im Terminal mit CTRL+C abbrechen und nochmals starten. Dann sollte unten links die neue Version angezeigt werden.

Plug Ins

Das automatische Software Update kann gerade bei z.B. Telegram fehlschlagen. Hierfür unter Einstellungen -> Pluginmanager -> Mehr... ein "neues" Plug In installieren. (Eigentlich das alte PlugIn überschreiben. Die Einstellungen werden aber beibehalten!)
Am besten die Github URL https://github.com/brainelectronics/Some-OctoPrint-PlugIn/archive/stable.zip bei ... von URL einfügen und unten bei erweiterte Optionen --process-dependency-link mit pip install verwenden aktivieren. Damit sollte das Update erfolgreich ausgeführt werden.
Sollte kein Repository angezeigt werden können bzw. installierbar sein, weil pip nicht gefunden wurde, so muss beim Schraubenschlüssel das pip directory angegeben werden. Dieses ist - auch wenn OctoPrint einen Fehler anzeigt oder schimpft -

   sudo /usr/local/bin/pip

Damit lässt sich jedes PlugIn updaten.

Autostart

Simpel

Nach der Installation in '/home/pi/OctoPrint/' - also dem clonen in die Homedirectory - kann Octoprint mit folgendem Befehl über das Terminal (ganz ohne sudo) gestartet werden:

   $ /home/pi/OctoPrint/run

Diesen Befehlt trägt man danach für den Autostart nach dem Booten in die /etc/rc.local Datei VOR dem exit 0 ein:

# starts OctoPrint after booting
su pi -c '/home/pi/OctoPrint/run'

# always ad nothing after here!
exit 0
 

Als Daemon

Hierbei muss im Verzeichnis ~/OctoPrint/scripts/octoprint.init der Pfad des Daemon an die richtige Stelle verweisen!

virtualenv

Wurde OctoPrint in ein Virtual Env installiert, so lautet der Daemon:
DAEMON=/home/pi/OctoPrint/venv/bin/octoprint

Einem Verzeichnis

DAEMON=/usr/local/bin/octoprint falls das Git nach ~ herunter geladen wurde.

Autostart einrichten

   $ sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint
   $ sudo chmod +x /etc/init.d/octoprint
   $ sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint

Then add the script to autostart using:

   $ sudo update-rc.d octoprint defaults

This will also allow you to start/stop/restart the OctoPrint daemon via

   $ sudo service octoprint {start|stop|restart}

You may need to add the pi user to the dialout group and tty so that the user can access the serial ports:

   $sudo usermod -a -G tty pi
   $sudo usermod -a -G dialout pi

You should then be able to start the OctoPrint server:

pi@raspberrypi ~ $ ~/OctoPrint/venv/bin/octoprint

* Running on http://0.0.0.0:5000/

Als Bash

Diese Methode hat den Vorteil, dass es dabei nicht mehr zu Problemen mit der USB Verbindung zum Drucker kommt.

   $cd ~
   $mkdir bin
   $cd bin
   $touch myOctoprintStarter
   $sudo nano myOctoprintStarter
#!/bin/sh
OCTOPRINT_HOME=/home/pi/OctoPrint
MJPEG_STREAMER_HOME=/home/pi/mjpg-streamer/mjpg-streamer-experimental

# start mjpeg streamer
# using the raspberry camera at 2fps
$MJPEG_STREAMER_HOME/mjpg_streamer -i "$MJPEG_STREAMER_HOME/input_raspicam.so -fps 2" -o "$MJPEG_STREAMER_HOME/output_http.so" &
# uncomment this line above if you use the daemon script via the web ui

# start the web UI
$OCTOPRINT_HOME/run
 

Danach die Datei ausführbar machen

   $ sudo chmod +x /home/pi/bin/myOctoprintStarter

Damit wird die Datei jedes mal beim Start ausgeführt.

   $ sudo nano /etc/rc.local

Diese im local File unbedingt VOR dem exit 0 eintragen!

   $ sudo -u pi /home/pi/bin/myOctoprintStarter

Modifikationen

Anderer Benutzer

Wichtig ist, dass die Installation unter dem Benutzer pi ausgeführt werden, da diese ansosnten nicht funktionieren.
Ist der Benutzer nicht pi, so muss dies im File /etc/default/octoprint bei OCTOPRINT_USER=pi angegeben werden. Dort kann auch ein anderer Port für den Browser vergeben werden.

PlugIn Manager

Diese Einstellungen sind nötig falls OctoPrint nicht in ein Virtual Env installiert wurde, weil nicht gewünscht oder weil aufgrund eines PlugIns wie z.B. Telegram-Notifier dies nicht möglich ist.

   $ nano .octoprint/config.yaml
plugins:
  pluginmanager:
    # The URL of the repository index to use
    repository: http://plugins.octoprint.org/plugins.json

    # Path to pip for installing and uninstalling plugins, if not set (default)
    # this will be set based on the python process OctoPrint is running under.
    # If OctoPrint is not installed under an environment where it can install
    # packages via pip (e.g. it was initially installed with ``sudo``), this setting
    # can be used to change the command used for running pip 
    # (e.g. to ``sudo /usr/bin/pip`` if the necessary rights are set for this to work)
    # pip: /path/to/pip
    pip: sudo /usr/local/bin/pip
 

Diese Einstellung ist auch über den PlugIn Manager und dort mittels des "Schraubenschlüssels" möglich.

Events

Es ist möglich OctoPrint bestimmte Komandos für gewisse Zustände ausführen zu lassen. Etwa den Start des Video Streams beim Start eines Drucks oder dem Ausschalten des Druckers oder Beleuchtung beim Beenden des Drucks.

events:
  enabled: true
  subscriptions:
  - command:
    - /home/pi/OctoPrint/scripts/printer_on.sh
    - /home/pi/OctoPrint/scripts/light_off.sh
    event: Startup
    type: system
  - command:
    - /home/pi/OctoPrint/scripts/light_on.sh
    - /home/pi/OctoPrint/scripts/webcam start
    event: PrintStarted
    type: system
  - command:
    - /home/pi/OctoPrint/scripts/light_off.sh
    - /home/pi/OctoPrint/scripts/webcam stop
    event: PrintFailed
    type: system
  - command:
    - /home/pi/OctoPrint/scripts/light_off.sh
    - /home/pi/OctoPrint/scripts/webcam stop
    event: PrintCancelled
    type: system
  - command:
    - /home/pi/OctoPrint/scripts/light_off.sh
    - /home/pi/OctoPrint/scripts/webcam stop
    event: PrintDone
    type: system
 

Webcam

Installation

Das Streaming Packet ist standardmäßig in OctoPrint nicht enthalten - im Gegensatz zu OctoPi. Hierfür müssen zunächst einige Packete installiert und im Anschluss der MJPG Streamer aus dem Git geladen werden.

   $ cd ~
   $ sudo apt-get install subversion libjpeg8-dev imagemagick libav-tools cmake
   $ git clone https://github.com/jacksonliam/mjpg-streamer.git

Nach einem Wechsel ins entsprechende Verzeichnis wird das ganze kompiliert, was je nach System ein paar Minuten dauern kann.

   $ cd mjpg-streamer/mjpg-streamer-experimental
   $ export LD_LIBRARY_PATH=.
   $ make

Test

Zum Test kann danach folgendes verwendet werden. Sofern kein Fehler bei der Ausführung auftritt, kann das Ergebnis/Bild unter http://<your Raspi's IP>:8080/?action=stream live betrachtet werden.

   $ ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"

Soll die Raspberry Kamera mit 5 FPS Bilder liefern, so muss folgender Befehl ausgeführt werden:

   $ ./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so"

Scripts

Daemon Script

Dieses wird im OctoPrint Ordner unter Scripts abgelegt, dieser kann hier sein:

   $ cd /home/pi/OctoPrint/scripts/
   $ sudo nano webcamDaemon

Das nachfolgend angegebene Verzeichnis in Zeile 3 muss mit dem Pfad zum Streamer übereinstimmen!

#!/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 5"
camera_raspi_options="-fps 5"

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" # default
    $MJPGSTREAMER_HOME/mjpg_streamer -i "$input" -o "output_http.so" # self
    LD_LIBRARY_PATH=. #$MJPGSTREAMER_HOME # default with MJPG...
    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" $
        startUsb
    elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera$
        startRaspi
    fi

    sleep 120
done
 

Starter Script

Dient der Web UI zum Starten und Stoppen des Streams.
Dieses wird im OctoPrint Ordner unter Scripts abgelegt, dieser kann hier sein:

   $ cd /home/pi/OctoPrint/scripts/
   $ sudo nano webcam

Das nachfolgend angegebene Verzeichnis in Zeile 6 muss mit dem Pfad zum Daemon Script übereinstimmen!

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

case "$1" in
    start)
        /home/pi/OctoPrint/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
 

OctoPrint Settings

Abschließend muss das Ganze noch für OctoPrint "aktiviert" werden, was in der Default Settings Datei stattfindet. Dort wird (meist ganz am Ende) die entsprechenden Settings hinzugefügt.

   $ nano ~/.octoprint/config.yaml
webcam:
  stream: http://<your Raspi's IP>:8080/?action=stream
  snapshot: http://127.0.0.1:8080/?action=snapshot
  ffmpeg: /usr/bin/avconv
 

Manuell starten/Beim Start

Im letzten Schritt sollte der MJPG Streamer so gesetzt werden, dass dieser (im Hintergrund) läuft sobald OctoPrint läuft. Siehe Als Bash

Über Web UI starten

Über den Eintrag im Config File von Octoprint kann der Streamer über das Web Interface gestartet werden. Dies ist nach jedem Neustart von Octoprint nötig.

   $ nano ~/.octoprint/config.yaml

Das nachfolgend angegebene Verzeichnis in Zeile 4 und 8 muss mit dem Pfad zum Starter Script übereinstimmen!

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

Weiterleitung

Um die Adressse http://raspberry-ip-adresse:5000 zu umgehen kann eine Weiterleitung eingerichtet werden.
Dazu wird ins Verzeichnis gewechselt und die default.conf dupliziert und anschließend editiert:

   $ a2enmod proxy proxy_http
   $ cd /etc/apache2/sites-available/
   $ cp 000-default.conf printer.conf
   $ nano printer.conf
<VirtualHost *:80>
        # ...
        ServerName  subdomain.your-domain.de

        ServerAdmin webmaster@localhost
        #DocumentRoot /var/www/html

        # ... 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # ...
        ProxyPass / http://127.0.0.1:5000/
        ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>
 

Weiter muss nun die Weiterleitung aktiviert und abschließend wie gefordert Apache neu geladen werden:

   $ a2ensite print.conf
   $ service apache2 reload

Damit ist die OctoPrint Website anstelle von http://raspberry-ip-adresse:5000 unter subdomain.your-domain.de verfügbar sein.

Cura Engine

Installation

Wurde OctoPrint nicht mittels des OctoPi Images für den Raspberry installiert, so fehlt die Cura Engine im Web Interface.
1. Download über wget oder SSH

   $ wget http://octoprint.org/files/octopi/cura_engine_14.12/cura_engine

2. Ausführbar machen

   $ chmod +x /path/to/cura_engine

3. Testen

   $ /path/to/cura_engine --help

4. Einstellen in den Settings vom OctoPrint Webinterface im Abschnitt Cura. Dort den '/path/to/cura_engine' einstellen OctoPrint Plugin Cura. Hier wurde Cura nach '/usr/local/bin/cura_engine' installiert.

Profile

Die Profile, welche für das Slicing ausgewählt werden können, befinden sich unter '/home/pi/.octoprint/slicingProfiles/cura/'

Upload Dateien

Alle hochgeladenen Dateien, welche am linken Rand einsehbar sind, werden unter '/home/pi/.octoprint/uploads/' gespeichert.

Outdated

Octo Print ist eine Software um 3D Drucker anzusteuern. Mit dieser ist es zudem Möglich die Stuerung einem Raspberry Pi zu überlassen.

Um die Software zu installieren wird folgendermaßen vorgegangen bzw. müssen folgende Pakete installiert sein/werden:
Python 2.7 und pip

Dies kann mittels sudo apt-get install python-pip erfolgen

Danach wird mit cd ~ in die Homedirectory gewechselt und das git heruntergeladen

git clone https://github.com/foosel/OctoPrint.git

Der so entstandene Ordner OctoPrint wird mit cd OctoPrint geöffnet und durch python setup.py install wird Octo Print installiert. Mittels ./run kann das Programm gestartet werden. Im Terminal sind nun eine Vorgänge zu sehen und zum Schluss die Adresse unter welcher die Software erreichbar ist.
Hier ist dies 0.0.0.0:5000 oder http://IP-des-Raspberry:5000.

Manuelle Adresse

In den Einstellungen Netzwerk Thunderbold wählen und auf DHCP mit manueller Adresse stellen. Dort bei der IP Adresse die Basis Adresse einstellen. Hat der Raspberry z.B. 192.168.1.2 wird auf dem Mac 192.168.1.1 eingestellt


Credits

Setup unter Raspbian
3deee Setup Guide
3drucken CH Setup Guide
Setup unter Jessy und BeagleBone
M3D unter OctoPrint
Event Handling OctoPrint
M3D Fio Plugin donovan6000