Tutorial: Repetier Server V 0.90.1 mit SSD-Speicher

Repetier-Server ist eines meiner Lieblingsthemen beim 3D Druck.
Nachdem mich die SD-Karten ziemlich annervten, wollte ich den Server auf einer SSD unterbringen.
Versuche, das zu dem Zeitpunkt verfügbare Image, auf so ein Teil zu flashen scheiterten leider.

Die übliche Vorgehensweise die config.txt so einzurichten, dass die richtige Laufwerksbezeichnung eingesetzt wurde funktionierte auch nicht.
Dann fand ich ein Tutorial (https://www.randombrick.de/raspberry-pi-3-von-usb-sticks-und-ssd-festplatten-booten/), dass eine andere Möglichkeit bot die SSD ans Laufen zu bekommen.
Das hat sogar funktioniert und die Geschwindigkeit mit der der Raspberry und Repetier-Server dann unterwegs sind, ist klasse.

Ja, aber einen Haken hatte die Geschichte und ich habe wie ein Blöder gesucht, warum der Druck mittendrin einfror.
Das passierte recht häufig und nervt natürlich, denn nur die Mechanik blieb stehen und die Heizungen machten fleißig weiter.
Gegencheck mit einer SD-Karte und identischem Image lief sauber.

Dann kam das neue Update vom Repetier-Server auf 0.90.1 und ich war gespannt, ob meine SSD direkt zu Flashen geht.
Es geht und die SSD startete sofort ohne Änderungen von Laufwerksbezeichnungen. Nur das Display musste wieder eingestellt werden, was aber immer gemacht werden muss.
Meine persönlichen Anpassungen für die Funksteckdose liefen einwandfrei nach dem schönen Tutorial auf https://selbstgedruckt.de/funksteckdosen-repetier
Die Funksteckdose schaltete sofort über die Weboberfläche. Die zusätzlichen Gcode-Befehle arbeiten auch.

Was überraschender Weise nicht funktionierte, war der manuelle Aufruf der Skripte mit dem User „pi“, der aber als Benutzer für die Anpassungen verwendet wird. Im Verzeichnis raspberry-remote konnte der Befehl „send“ genutzt werden, aber über eine Ansteuerung aus einem anderen, übergeordneten Pfad wollte das Teil einfach nicht.
Da ich nun nicht der Linuxprofi bin, konnte ich mir das nicht erklären. Die Funktion im Server ist zwar da, aber das hat genervt.

Durch Zufall habe ich dann herausgefunden, dass es nur funktioniert, wenn die den sonst nötigen „.“ (Punkt) vor dem Befehl weggelassen habe.
Damit ich auch zufrieden bin, habe ich die Skripte angepasst und für den Benutzer „pi“ im Bashskript eine Abfrage eingebaut, die abfragt welcher Benutzer aufgerufen hat und dann über eine IF-Anweisung zwei verschieden Befehle steuert.

Ich habe mir inzwischen erklären lassen, dass es mit einer Vorsichtsmaßnahme für den Superuser zusammenhängen soll und das von diesem nicht zufällig ausgeführt wird und eventuelle Schadsoftware das System beschädigen kann. Verifizieren kann ich das im Moment nicht.

Alles lief und dann der Blick auf den Speicher des Pi. Der Befehl „free“ im Terminalfenster zeigte dann den beruhigenden Wert unter „available“ an.

Nicht mehr ca. 40.000 sondern >700.000 wurde beim Druck angezeigt und auch die Vorschau des Werkzeugweges im Steuerungsfenster lief wieder flüssig.

Zusätzlich noch eine Webcam dran und trotzdem kein Leistungseinbruch.

Fazit: Ich bin begeistert und sehr zufrieden. Das neue Update kam also zum richtigen Zeitpunkt. Die verwendete SSD ist im Foto zu sehen. Der Adapter nennt sich „mSATA SSD Erweiterungs-Platine für den Raspberry Pi“ und die benötigte SSD „Mini mSATA 3 1,8 Zoll SSD Solid State Drive

Tutorial: Funksteckdosen mit Repetier-Server schalten

 

Vorwort

Zuerst möchte ich anmerken, dass ich mich an die Anleitung von Philipp Seidel gehalten habe.
Diese Anleitung ist für den OctoPrint Printserver gedacht und funktioniert auf dem Repetier-Server aber auch so, benötigt aber einige zusätzliche Einstellungen.
https://blog.seidel-philipp.de/anleitung-3d-drucker-mit-octoprint-einschalten-und-ausschalten

Herzlichen Dank an Philipp Seidel für die wichtige Vorarbeit!

Das wird benötigt

Als besonderen Bonus haben wir einen Gutscheincode über 15% Rabatt für den Kauf des Repetier-Servers Pro erhalten.
Der Gutscheincode lautet „selbstgedruckt“ und ist bis zum 31.08.2018 gültig.
https://www.repetier-server.com/

Codierung der Funksteckdose

  • Den SystemCode (hausinterner Code) der Funksteckdose* stellen wir auf 10101.
  • Den Unitcode, die eindeutige Adressierung der Steckdose, wird mit den DIP-Schaltern auf 10000 (A) eigestellt. Damit wird die Adresse Steckdose als „D“ oder „4“ definiert.
Codierschalter der Funksteckdose

Anschlussplan des Sendemoduls an den Raspberry Pi

Anschlussbelegung an den Raspberry PI – Quelle http://www.raspberrypi-spy.co.uk

Die Anschlüsse werden wie folgt verbunden:

GND vom Sendemodul an -> GND des Raspberry
DATA vom Sendemodul an -> GPIO-PIN 17 des Raspberry
5V (VCC) vom Sendemodul an -> 5V des Raspberry

Raspberry Pi mit angeschlossenem Sendemodul

Software

Die benötigten Komponenten auf dem Raspberry werden wie folgt installiert:
Software für die Installation ist Putty und WinSCP

Installation.

Als Benutzer ‚pi‘ auf dem Raspberry Pi per Putty anmelden. (Das Passwort ist meistens: ‚raspberry‘)

Git installieren und WiringPi, mit dem die GPIO-Pins des Raspberry Pi gesteuert werden

Da für die Installation noch einige elementare Module im Repetier-Server Image fehlen, müssen diese vorher mit den folgenden Befehlen installiert werden:

sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install make
sudo apt-get update
sudo apt-get install git
sudo git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build
Raspberry-Remote installieren
cd
sudo git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
sudo make send

Anpassungen für Repetier-Server

Nun kommen wir hier zu den benötigten Anpassungen, damit der Benutzer „repetierserver“ auch die Funktionen benutzen kann.
Der User „repetierserver“ muss als sogenannter „sudoer“ deklariert werden und Rechte auf verschiedene Verzeichnisse und den „send“-Befehl bekommen.
Das ist einiges an manueller Tipperei. Hier die Befehle und bitte darauf achten, dass beim ersten „echo“ nur ein „>“-Zeichen verwendet wird und ab dem zweiten „echo“ dann bitte so „>>“ :

sudo -s
echo "repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote" > /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote/send" >> /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi/autopoweroff.sh" >> /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi/autopoweron.sh" >> /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi" >> /etc/sudoers.d/repetierserver-remote

Im Nachhinein habe ich festgestellt, das mit sudo visudo -f /etc/sudoers.d/repetierserver-remote die Datei auch erstellt werden kann.
Üblicherweise öffnet sich dazu der „nano“ Editor. Innerhalb des Editors gibt es einige rudimentäre Befehle einer Textverarbeitung.
Die aktulle Zeile kann mit Ctrl-K ausgeschnitten und mit Ctrl-U wieder eingefügt werden. Damit sind dann nur noch einige Angaben zu ändern.
Mit Ctrl-O wird gespeichert und anschließend mit Ctrl-X der Editor verlassen.

repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote/send
repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote
repetierserver ALL=NOPASSWD: /home/pi/autopoweron
repetierserver ALL=NOPASSWD: /home/pi/autopoweron.sh
repetierserver ALL=NOPASSWD: /home/pi/autopoweroff
repetierserver ALL=NOPASSWD: /home/pi/autopoweroff.sh
repetierserver ALL=NOPASSWD: /home/pi
repetierserver ALL=NOPASSWD: /usr/bin/python

Befehle für Repetier-Server einrichten

Auch das Schalten aus dem Gcode funktioniert mit selbstdefinierten Befehlen.
Wichtige Grundlage ist die Anpassung der extcommands.xml, die wie folgt aussehen sollte:

<config>
<!-- If you want to run external commands, enter them in this configuration with
full path. You will see them in the main menu. Copy this file into the
<storage>/database directory.
Security consideration: The reason there is no online editor for this is simply
security. The commands you enter here are executed with the privileges of the
daemon running the server. If you would allow online configuration, a hacker could
simply add any command he needs to hack your system. -->
<command>
<name>Shutdown Server</name>
<execute>sudo /sbin/shutdown -h now</execute>
<confirm>Really shut down the server?</confirm>
<!-- Define if command should show up in local printer interface, default true.-->
<local>true</local>
<!-- Define if command should show up in remote printer interface, default true.-->
<remote>true</remote>
<!-- Define if command should show up only for users with print permission, default true.-->
<print-permission>true</print-permission>
<!-- Define if command should show up only for users with add files permission, default false.-->
<add-permission>true</add-permission>
<!-- Define if command should show up only for users with del files permission, default false.-->
<del-permission>true</del-permission>
<!-- Define if command should show up only for users with configuration permission, default false.-->
<config-permission>true</config-permission>
</command>
<command>
<name>Reboot Server</name>
<execute>sudo /sbin/shutdown -r now</execute>
<confirm>Really reboot the server?</confirm>
<!-- Define if command should show up in local printer interface, default true.-->
<local>true</local>
<!-- Define if command should show up in remote printer interface, default true.-->
<remote>true</remote>
<!-- Define if command should show up only for users with print permission, default true.-->
<print-permission>true</print-permission>
<!-- Define if command should show up only for users with add files permission, default false.-->
<add-permission>true</add-permission>
<!-- Define if command should show up only for users with del files permission, default false.-->
<del-permission>true</del-permission>
<!-- Define if command should show up only for users with configuration permission, default false.-->
<config-permission>true</config-permission>
</command>
<command>
<name>Drucker_Strom_an</name>
<execute>./home/pi/autopoweron.sh</execute>
</command>
<command>
<name>Drucker_Strom_aus</name>
<execute>./home/pi/autopoweroff.sh</execute>
</command>
<command>
<name>Testmail</name>
<execute>python /home/pi/Druckerfertig.py</execute>
</command>
<execute name="poweron" allowParams="true">./home/pi/autopoweron.sh</execute>
<execute name="poweroff" allowParams="true">./home/pi/autopoweroff.sh</execute>
</config>

Weitere Dateien

Im Verzeichnis /home/pi müssen die Skriptdateien autopoweron.sh und autopoweroff.sh stehen. Diese müssen mit dem Befehl ‚chmod +X autopoweron.sh‚ bzw. ‚chmod +X autopoweroff.sh‚ ausführbar gemacht werden.

Die Datei autopoweron.sh hat folgenden Inhalt:

#!/bin/bash
sudo ./home/pi/raspberry-remote/send 10101 4 1

Die Datei autopoweroff.sh hat folgenden Inhalt:

#!/bin/bash
 sudo ./home/pi/raspberry-remote/send 10101 4 0

Nutzung der zusätzlichen Funktionen im Gcode

Nutzung der zusätzlichen Funktionen im Gcode

@execute poweron
@execute poweroff

Diese Befehle veranlassen den Repetierserver dann entsprechend die Funksteckdose an oder auszuschalten.
Um die Befehle automatisch direkt von einem Slicer im Gcode einzubauen, werden diese Befehle im Scriptteil vom Slicer z. B. Simplify3D eingetragen.

Das Anschalten „poweron“ muss am Anfang des Scripts eingefügt werden
{PREPEND „@execute poweron \n“} und wird durch den Postprozessor Befehle {PREPEND „xxxx“} gesteuert.

{APPEND „@execute poweroff\n“} für das Ausschalten muss dann am Ende stehen und wird über den Befehle {APPEND „xxx \n“}. Mit der Zeichenkombination „\n“ wird eine Zeilenschaltung gemacht.

Einbinden der Befehle in Simplify3D
Hinweis

Damit das Abschalten des Druckers nicht zu schnell stattfindet und das Druckbett vom Extruder weggefahren ist, muss auf die vollständige Abarbeitung des Gcodes geachtet werden.
Damit dies gewährleistet werden kann, ist z.B. nach dem Fahrbefehl ein M400 notwendig.
Damit wird der Controller angewiesen mit der Abarbeitung des Gcodes zu warten, bis der vorige Befehl abgearbeitet ist.
Die Stelle im Endscript ist gelb markiert.

Tutorial als PDF

Anleitung als PDF: Tutorial-Funksteckdosen-für-den-Repetierserver

Funksteckdose Repetier