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
[toc]
- Raspberry Pi* mit Repetier-Server
- Funksteckdosen* mit „Systemcode“ und „Unitcode“, die sich per DIP-Schalter konfigurieren lassen.
- 433Mhz Sende Modul* inklusive Antennen*
- passende Kabel*
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.

Anschlussplan des Sendemoduls an den Raspberry Pi

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

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.

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
Hallo,
wie müssten die Befehle aussehen, wenn ich anstatt der Funksteckdosen, Relais schalten möchte? Hatte bislang Octopi und bin nun auf RS umgestiegen
Hi,
aus irgendeinem Grund bekomme ich die Steckdose nur an, warum geht sie mit sudo ~/raspberry-remote/send 00011 4 0 nicht aus?
Gibt es dafür Gründe?
Hallo Peter,
wie schaltest Du denn an? Den Befehl würde ich gerne sehen um Fehler auszuschließen.
Gruß Klaus
Hallo Peter,
versuch es bitte so : sudo ./home/pi/raspberry-remote/send 00011 4 0 – Der Punkt ist wichtig!!
Gruß Klaus
Hi,
ist es möglich die 5V Boardlüfter auch zu deaktiveren?
Die Laufen ja über die USB-Spannung und ich würde die gerne im idle deaktivieren.
Habe MKS Gen l 1.0
Hallo Peter,
ich denke das Du Dir eine entsprechende Schaltung dafür überlegen musst. Ich gebe aber zu bedenken, wenn das Board auch nur die USB-Spannung bekommt, kann es trotzdem warm werden.
Gruß Klaus
Hallo nochmal,
Bevor ich das Tutorial nachher testen werde habe ich noch eine Frage.
Ist es möglich den Drucker auch schon irgendwie anders zu starten?
Ziel ist es den Drucker zu starten und vorheizen zu lassen, damit ich dann direkt beim First Layer dabei sein kann.
Bei octoprint kann man den Drucker ja mittels Plugin über die weboberfläche starten.
Gruß
Lukas
Hallo Lukas,
Du musst Dir natürlich überlegen was Du möchtest! Was soll mit der Steckdose denn geschaltet werden? Ich habe meinen Drucker so aufgebaut, das die Netzteile für die komplette Spannungsversorgung über die Dose geschaltet werden. Das Ramps wird mit der Grundspannung vom Pi gespeist, so dass auf Pi und Ramps immer Spannung drauf ist. Nach dem Start eines Druckes wird die Steckdose geschaltet und alle Treiber (bei mir auch extern) angeschaltet werden. Danach wird natürlich alles vorgeheizt und der Druck startet erst nach erreichen der Temperatur und dem darauf folgenen ABL. Soll länger gewartet werden bis der Druck nach alle dem gestartet wurde, muss Du das mit einer Warteschleife machen.
Gruß Klaus
Hallo,
Da ich vier Drucker ansteuern will scheint mir die Variante alle Boards über das Pi zu speisen recht unpraktisch.
Die Drucker sollten also von ihrem Netzteil gespeist werden.
Es wäre ja auch Schwachsinn, dass wenn nur 2 von 4 Druckern laufen die beiden ungenutzten trotzdem permanten Strom vom Pi ziehen.
Ziel ist es:
Pi läuft immer 24/7
Drucker können manuell über den Pi und die Funksteckdosen gestartet werden.
Druck kann dann über die weboberfläche von repetier Server gestartet werden, da Drucker dann ja an ist.
Drucker werden automatisch nach beenden des Druckes ausgeschaltet.
Ginge das?
Was fehlt ist ja eigentlich nur die Möglichkeit die Steckdosen manuell über das Pi an zu schalten.
Gruß
Lukas
Hallo Lukas,
die Steckdosen lassen sich auch manuell über den Pi schalten.
Gruß Klaus
Hallo,
ich habe folgendes Tutorial gefunden: https://alexbloggt.com/funksteckdosen-raspberry-pi-teil1/
Wäre es damit möglich oder kommen sich dann beide Programme in die Quere?
Gruß
Lukas
Hallo,
das ist das gleiche Prinzip und verwendet auch wieder die gleiche SOftware. Zusätzlich ist noch ein Webserver installiert der die Dosen über eine Webseite schaltet.
M.E. überhaupt kein Problem und sollte gehen. Bitte teste es aus und berichte dann von Deinen Erfahrungen.
Gruß Klaus
Wo hast du denn noch eine Funksteckdose mit Dip-Schaltern aufgetan? Die gibts doch fast gar nicht mehr.
Die habe ich bei Amazon problemlos bekommen.
https://www.amazon.de/HEITECH-Funksteckdosen-Set-LED-Funktionsanzeige-Kindersicherung-Funkreichweite/dp/B00KM83Q1U/ref=sr_1_5?ie=UTF8&qid=1526182386&sr=8-5&keywords=Funksteckdose+Codierung
Hallo,
Vielen Dank für das ausführliche Tutorial!
Wäre es möglich das ganze mit mehreren Druckern zu realisieren?
Repetier bietet ja den Support von mehreren Druckern an, da wäre es schön eine Möglichkeit zu haben auch mehrere Steckdosen zu schalten.
Gruß
Lukas
Vielen Dank für Dein Interesse an meinem Tutorial und ich beantworte Deine Frage dazu gerne.
Selbstverständliche lassen sich auch Funksteckdosen an mehreren Druckern ansteuern, was durch die Verwendung einer anderen Kodierung der Dosen gemacht werden kann. Es müssen auch zusätzliche Befehlsdateien für die einzelnen Drucker eingerichtet werden, damit Repetier Server auch weiß welcher Drucker geschaltet werden muss. Dazu empfehle ich Dir wie folgt vorzugehen. Zuerst Kodierst Du die Dosen entsprechend mit den DIP-Schaltern, die von 1 bis 5 für einen SystemCode (im Beispiel ist der 10101) zu nummerieren gehen. Es gehen mit anderen SystemCodes auch noch mehr Dosen.
Dann nimmst Di die Dateien autopoweron.sh und autopoweroff.sh und kopierst die auf die Namen autopoweron_1.sh und autopoweroff_1.sh und änderst den Inhalt für den zweiten Drucker so das die neue Dose über autopoweron_1.sh angeschaltet werden kann
#!/bin/bash
sudo ./home/pi/raspberry-remote/send 10101 1 1
und über autopoweroff_1.sh ausgeschaltet werden kann #!/bin/bash sudo ./home/pi/raspberry-remote/send 10101 1 0
ich denke das Du das verstanden hast. Damit das auf dem Pi auch wirkt, müssen entsprechende Benutzerrechte vergeben werden.
Im Bereich Repetier Server Anpassungen müssen in der Datei sudoer Einträge ergänzt werden, die nach der dort beschriebenen Vorgehensweise gemacht werden müssen.
repetierserver ALL=NOPASSWD: /home/pi/autopoweron_1.sh repetierserver ALL=NOPASSWD: /home/pi/autopoweroff_1.sh
Im Kommandobereich für den Repetier Server müssen auch Ergänzungen bzw. Änderungen gemacht werden, damit die Gcodes für zusätzliche Drucker vorhanden sind.
Ich mache das hier jetzt nur beispielhaft für einen zusätzlichen Drucker_1. Ich kann auch nicht testen, da ich im Urlaub bin.
Ich hoffe das Du im Moment damit klarkommst und verstehst was alles zu tun ist. Wie geschrieben, es müssen alle Rechte auf dem Richtig gemacht werden und die Dateien auch am richtigen Ort stehen.
Die vorhandenen Bereiche ergänzen und dann wird das.
Anfänglich hat es bei mir auch nicht sofort alles funktioniert, erst nach genauer Kontrolle aller Rechte funktionierte es. Sobald ich wieder zuhause bin werde ich einen Zusatz zum Tutorial schreiben und den veröffentlichen.
Gruß