LED Licht einschalten bei Druckbeginn und abschalten bei Druckende

Hallo zusammen

Ich hab mir heute ein Gehäuse für den Ender 5 Plus gebaut. Ich habe eine RasPi Waveshare Kamera und ein 7" Touchbildschirm am Drucker befestigt.
Jetzt will ich den Druckbereich etwas ausleuchten mit LED Streifen weil die Kamera jetzt im Nightmode die Videos aufnimmt. 
Jedoch will ich es nicht einfach mit einem Schalter ein und ausschalten sondern automatisch beim Druckstart ein und aus bei Druckende. 

Kann ich das irgendwie die Eriegnissabhängigen Gcode Befehle benützen um einen GPIO Pin des RasPi anzusteuern welches mir ein Relais zB Schaltet und dieses dann die LED Streifen?

Oder ist es möglich über die Weboberfläche einen Licht Ein-Aus schalter irgendwo zu Positionieren.  

Alternativ werde ich die Bettheizung anzapfen um das Licht per Relais ein und auszuschalten aber die Idee mit dem Gcode würde mir besser gefallen :D

Gruss Milan 


Comments

  • Gibt viele Lösungen. G-Code wird von der Firmware verarbeitet, dann muss das Relay im Drucker sein.
    Am pi kann man es aber über server befehle steuern. Am einfachsten mit 2 scripten, die du in "/var/lib/Repetier-Server/scripts" ablegst und Rechte auf 777 setzt die den GPIO setzen. Diese in extcommands.xml über @execute aufrufbar machen wie im Manual beschrieben. Dann die Befehle im start/stop/abbruch G-Code Ereignis aufrufen und du hast deine Lösung. Du kannst die Skripte auch noch auf menubefehle legen dann erscheinen die auch im Drucker Kontextmenü.
  • Besten Dank für deine Antwort :)

    ich habe jetzt zwei Scripte auf einem Raspberry: led_ein.sh und led_aus.sh
    Diese kann ich über putty auch ausführen und das Relais schaltet

    Ich übe noch das ganze auf einem Pi mit raspbian weil ich den Server der meinen Drucker betreibt nicht verunstalten will bis ich da sattelfest bin was die befehle angeht :#

    Aber ab dem ablegen mit Rechte auf 777 versteh ich nur noch bahnhof  :|
  • Rechte setzen:
    sudo chmod 777 dateiname
    erlaubt allen lesen, schreiben, ausführen

  • Hey ich wieder.

    Ich wollte diesen Thread nicht ohne Abschluss lassen und Teile euch mit wie ich es gelöst habe.

    Schon mal vorweg, ich habe es nicht wie oben angefragt gelöst.

    Ich habe mich entschieden es mit einem NodeMcu und Blynk zu lösen.

    Licht und Lüftung sollen eingeschaltet werden sobald das Druckbett sich erhitzt. Sobald am Druckbett eine 24V Spannung anliegt steuert es ein Relais an mit welchen ich dann einen "Input" am NodeMCU ansteure. Oder ich kann alles Manuell per Blynk-App ein- und ausschalten (aktuell wird es nur manuell ein und ausgeschaltet da ich erst heute den Drucker ins Gehäuse gestellt hab)

    Falls jemand Interesse an mehr Details oder an der Hard und Software hat kann er sich gerne melden.

    Gruss Corr
  • edited September 17
    Hallo,
    auch ich möchte die Druckerbeleuchtung bei Druckbeginn einschalten und am Ende wieder aus,
    sowie manuell über den Schalter in der Webansicht ("Steuerung" => Licht).
    Das Relais selbst soll über einen GPIO vom Raspi angesteuert werden.

    Nach welcher Doku, Anleitung oder Beispiel sollte ich vorgehen?

    Habe hier was gefunden (https://www.repetier-server.com/manuals/0.50/index.html => Calling ext. commands), aber unsicher ob dies das richtige ist.

    Die Scripte um das Relais über GPIO zu steuern bekomme ich hin,
    mir geht es "nur" darum, wo und wie ich die 2 Scripte (lighton.sh; lightoff.sh) autom. bzw. manuell über die "Licht-Steuerung" im Repetier-Server zum laufen bekomme.

    Denke das so was doch schon einige gemacht haben (Raspi, GPIO, LED-ein/aus, ...)

    Danke für Hilfe,
    Martin
  • Auch wenn das eine sehr alte Anleitung ist - gibt da doch neuer mit 0.93.x ist das prinzipiell der richtige weg. In der Druckerkonfiguration gibt es gcode Schnipsel die beim start, stop oder abbruch ausgeführt werden. Da kann man dann den
    @execute lichtAn
    etc einfügen was dein skript aufruft. Bedenke aber das es als user repetierserver ausgeführt wird.
    Der Lichtbutton wird nicht klappen da er für Lichsteuerung über die Firmware ist. Aber in extcommands.xml kannst du auch Befehl für das Drucker Kontextmenü einsetzen so dass es darüber klappt. Dazu aber eine neuer doc nehmen da der Teil erst später eingefügt wurde.
  • Evtl hat ja noch jemand eine Anleitung oder im www was geschrieben, wie er das gelöst hat.

    Wo ist denn diese "Druckerkonfiguration", ich habe was mit dem Pfad /var/lib/Repetier-Server/scripts i einem anderen Thread gefunden, da soll eine xml rein ...
  • Druckerkonfiguration ist im Druckermenü der Punkt mit dem Zahnrad "Druckereinstellungen". Da gibt es einen Tab G-Codes und dann Ereignisabhängig wählen,

    /var/lib/Repetier-Server/scripts 
    ist der von uns vorgeschlagene Speicherort für deine eigenen scripte also licht an/aus etc. So können sie definitiv vom server erreicht werden und wenn sie x flag gesetzt haben auch ausgeführt werden.
  • edited September 21
    Hallo,
    unabhängig von der Ereignissteuerung (unsicher ob ich das umsetze), habe ich nun im Einstellungs-Menu meine zwei "Rubriken" in der /var/lib/Repetier-Server/database/extcommands.xml  für Licht-an und Licht-aus hinzugefügt.
    Ich sehe zwar diese zwei neuen Punkte, aber es passiert nichts :-(

    Die Skripte liegen unter /mama, der Ordner hat die Rechte 777, die Dateien 775
    Ich habe auch ein: echo `date` >>/tmp/date.txt  zum debuggen eingefügt, aber auch dieser Befehl wird nicht aktuallisiert. Und den Repetier-Server starte ich auch neu nach jeder Änderung ....

    Die extcommands.xml (nur Licht aus; Licht-an analog) sieht so aus:
    ...
            <command>
                    <name>Licht aus (...)</name>
                    <execute>sudo /mama/lightoff.sh</execute>
                    <local>true</local>
                    <remote>true</remote>
                    <print-permission>true</print-permission>
                    <add-permission>true</add-permission>
                    <del-permission>true</del-permission>
                    <config-permission>true</config-permission>
            </command>
            <execute name="shutdown" allowParams="false" sync="false">sudo /sbin/shutdown -h now</execute>
            <execute name="reboot" allowParams="false" sync="false">sudo /sbin/shutdown -r now</execute>
            <execute name="lighton.sh" allowParams="false" sync="false">sudo /mama/lighton.sh</execute>
            <execute name="lightoff.sh" allowParams="false" sync="false">sudo /mama/lightoff.sh</execute>
    </config>


    Die lightoff.sh sieht aktuell testweise so aus:
    cat /mama/lightoff.sh
    #!/bin/bash
    /bin/echo "`/bin/date`" >> /tmp/mm
  • Hast du /mama/lightoff.sh in die liste der sudoer für user repetierserver eingetragen? Z.b. in /etc/sudoers.d/repetierserver-perms

    repetierserver ALL=NOPASSWD: /mama/lightoff.sh


    sonst scheiterst du am sudo.


  • edited September 21
    Ach so, ich dachte die Einträge in der xml würde das in die sudoers "reinschreiben" ...
    Jetzt scheint es zu funktionieren, danke!

    Muss wohl nur in "command" stehen, nicht unter "execute".

    Gibt es auch eine Option, solche eigenen Befehle (Scripte) hier auf den Bildschirm zu legen als Icon?
    https://abload.de/img/screenn7jl5.png
  • Die stehen unter Serverbefehle. Icons kann man auch setzen. Dazu <command icon=""> mit icon als url zu einem Icon Bild. Geht ab 0.94.x denke ich.
  • edited September 29
    Repetier said:
    Auch wenn das eine sehr alte Anleitung ist - gibt da doch neuer mit 0.93.x ist das prinzipiell der richtige weg. In der Druckerkonfiguration gibt es gcode Schnipsel die beim start, stop oder abbruch ausgeführt werden. Da kann man dann den
    @execute lichtAn

    Hi;
    im Menu (über extcommands.xml) klappen die Befehle ja, danke für die Hilfe!
    Jetzt wollte ich es in den Pre-Teil vom gcode einfügen (innerhalb Cura), aber die Aktion (Shell-Script) wird dort nicht ausgeführt.

    In der Konsole vom Rep-Server sehe ich, das der gcode wie eingetragen auch beim Drucker "ankommen", aber die Aktion wird nicht gestartet (aus dem Menu heraus funktioniert selbiges Script !?)

    ...
    Send:10:34:50.154: N56 G0 Y20 F100
    Send:10:34:50.155: @execute /mama/send-message.sh
    Send:10:34:50.156: M117 Printing...

    In der extcommands.xml sieht es so (genauso) aus, da funktioniert es aber ja:
    ...
    <execute> sudo /mama/send-message.sh</execute>
    ...

    Wo liegt mein Fehler?
  • edited September 29
    Kommentar entfernt, löschen geht leider nicht (oder ich stell mich zu doof an :-) )
  • OK,
    habe gefunden,
    man muss es auch noch in den "execute" Teil der extcommands.xml eintragen (und in die sudoers).

    Man muss das Prinzip verstehen, die gewünschten Befehle und Aktionen werden nicht direkt angesprochen und benannt, sondern es geht über den "Umweg" der xml Datei. Diese schaut nach, was der gewünschte Befehl tatsächlich ("führe auf der Shell das und das aus ...") ausführen soll.
  • Ja genau. Leider notwendig sonst kann jeder mit webzugang alles mit dem Rechner machen und das wollen wir ja nicht:-) Muss schon vorher einer explizit so vorgesehen haben.
Sign In or Register to comment.