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

Klaus Korte

Klaus Korte

3D-Druck Enthusiast bei Elchschmiede
Hallo,
ich bin Klaus und leidenschaftlicher Maker mit einem umgebauten Shapercube.
Neben dem 3D-Druck besitze ich noch eine CNC-Fräse und einen 60W CO2 -Laser.
Ich freue mich, Euch mit Rat und Tat zur Seite zu stehen.
Klaus Korte

Klaus Korte

Hallo, ich bin Klaus und leidenschaftlicher Maker mit einem umgebauten Shapercube. Neben dem 3D-Druck besitze ich noch eine CNC-Fräse und einen 60W CO2 -Laser. Ich freue mich, Euch mit Rat und Tat zur Seite zu stehen.

Klaus Korte has 2 posts and counting. See all posts by Klaus Korte

17 Gedanken zu „Tutorial: Funksteckdosen mit Repetier-Server schalten

  • 4. November 2018 um 9:31
    Permalink

    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

    Antwort
  • 16. Juli 2018 um 19:05
    Permalink

    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?

    Antwort
    • 16. Juli 2018 um 20:25
      Permalink

      Hallo Peter,

      wie schaltest Du denn an? Den Befehl würde ich gerne sehen um Fehler auszuschließen.

      Gruß Klaus

      Antwort
    • 16. Juli 2018 um 20:30
      Permalink

      Hallo Peter,

      versuch es bitte so : sudo ./home/pi/raspberry-remote/send 00011 4 0 – Der Punkt ist wichtig!!

      Gruß Klaus

      Antwort
  • 14. Mai 2018 um 9:59
    Permalink

    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

    Antwort
    • 14. Mai 2018 um 14:45
      Permalink

      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

      Antwort
  • 13. Mai 2018 um 14:17
    Permalink

    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

    Antwort
    • 13. Mai 2018 um 16:45
      Permalink

      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

      Antwort
      • 14. Mai 2018 um 10:49
        Permalink

        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

        Antwort
        • 14. Mai 2018 um 14:42
          Permalink

          Hallo Lukas,

          die Steckdosen lassen sich auch manuell über den Pi schalten.

          Gruß Klaus

          Antwort
          • 14. Mai 2018 um 20:10
            Permalink

            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

  • 12. Mai 2018 um 22:59
    Permalink

    Wo hast du denn noch eine Funksteckdose mit Dip-Schaltern aufgetan? Die gibts doch fast gar nicht mehr.

    Antwort
  • 9. Mai 2018 um 17:34
    Permalink

    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

    Antwort
    • 9. Mai 2018 um 21:30
      Permalink

      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.


      Drucker_1_Strom_an
      ./home/pi/autopoweron_1.sh


      Drucker_1_Strom_aus
      ./home/pi/autopoweroff_1.sh


      Testmail_Drucker_1
      python /home/pi/Druckerfertig_1.py

      ./home/pi/autopoweron_1.sh
      ./home/pi/autopoweroff_1.sh

      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ß

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.