3D Drucker "Auto OFF" nach Druck

Bohnenhans

Captain
Registriert
Okt. 2022
Beiträge
3.100
Mein 3D Drucker soll im Idealfall nach dem Drucken ausgehen - mein Setup ist OctoPI an einem Ender 5 Pro.

Es gibt meines Wissens die Möglichkeit OctoPI nach dem Druc k herunterzufahren wenn der Druck darüber gelaufen ist? Aber dann läuft ja der Drucker immer noch auch der soll ja ausgehen.

Meine 2 Überlegeungen bisher sind den an eine schaltbare Steckdose zu hängen und dann das OctiPI shutdown so anzupassen dass das an einen ESP ein Signal schickt ..... schalte Steckdose X in z.B. 15 Min aus.

Oder den Verbrauch messen also LOW => HIGH beim Drucken und wenn das wieder auf LOW geht nach X Minuten abzuschalten? Was den Vorteil hat das wäre unabhängig von OctoPI und Co, weiss aber nicht genau wie stark der Verbauch sich so unterscheidet?

MQTT glaub geht bei OctoPI auch fällt mir gerade ein

Wie macht ihr das denn?
 
Bohnenhans schrieb:
weiss aber nicht genau wie stark der Verbauch sich so unterscheidet?
Sollte sich schon stark unterscheiden, da nach Beendigung des Druckvorgangs ja eigentlich Nozzle und auch Heatbed deaktiviert werden, welche den größten Teil des Verbrauchs ausmachen.

Selber will ich etwas ähnliches mit Drucker, welcher auf Klipper umgerüstet wurde, machen. Aber wie genau, habe ich mir noch nicht überlegt...
 
  • Gefällt mir
Reaktionen: Bohnenhans
Der Drucker mit Mellow Fly E3 pro und Duet/RRF firmware verbraucht 5W im IDLE.
Dein Drucker mit Octoprint dürfte vermutlich bei 8-10W liegen.
 
  • Gefällt mir
Reaktionen: Bohnenhans
Drucker hängt an einer schaltbaren Steckdose (früher Tasmota, jetzt Zigbee) auf dem Pi läuft Klipper. Wenn Druck zu Ende wartet der noch 5 Minuten wenn das Macro aktiv ist und macht dann die Steckdose aus. Sollte denke ich was vergleichbares auch für Octoprint geben
 
  • Gefällt mir
Reaktionen: Bohnenhans und eyefinity87
WhiteHelix schrieb:
Wenn Druck zu Ende wartet der noch 5 Minuten wenn das Macro aktiv ist und macht dann die Steckdose aus.
Fährt dein Macro vorher auch den pi runter oder schaltest du stumpf ab? Wobei dann das Macro ja nicht mehr ausgeführt werden könnte...
Über Zigbee-Steckdose wollte ich es auch erst machen, aber dann hat man zusätzlich noch Abhängigkeit zum Smarthome.
 
  • Gefällt mir
Reaktionen: Bohnenhans
Den Pi lass ich tatsächlich durchgehend laufen. Aber die Steckdose wird da Zigbee eh über HomeAssistant geschaltet, also theoretisch lässt sich das auch so umbauen dass der Pi ne Verzögerung in HA startet, runter fährt und HA dann nach 1,2 Minuten erst die Steckdose ausmacht. Mit Tasmota geht das glaub ich sogar direkt das du der Steckdose die Verzögerung mitgibst, hab ich aber nie getestet
 
  • Gefällt mir
Reaktionen: Bohnenhans
Bei mir läuft halt der octopi über das netzteil des 3d druckers daher kann ich den eher nuir schlecht nutzen zum abschalten - auch wenn ich vorher sync mache denke das ext4 ist trotzdem irgendwann dann evtl defekt - läuft zwar von nvme und nicht sd-card aber trotzdem.
Ergänzung ()

madmax2010 schrieb:


Hehe hab halt noch glaub 8 Tasmota Steckdosen "auf Lager" xD die muss ich mal nutzen.


Ich find das halt doof wenn der manchmal stundenlang an ist nach dem Druck, auch wenn der wahrscheinlich nicht soooo viel Strom im idle braucht.
 
Zuletzt bearbeitet:
Bohnenhans schrieb:
Meine 2 Überlegeungen bisher sind den an eine schaltbare Steckdose zu hängen und dann das OctiPI shutdown so anzupassen dass das an einen ESP ein Signal schickt ..... schalte Steckdose X in z.B. 15 Min aus.
Ich habs bei mir so gelöst, dass ich der smarten Steckdose gesagt hab, sie soll sich abschalten wenn die Leistungsaufnahme 8,5W unterschreitet. Das ist nämlich die Leistungsaufnahme meines Druckers und die liegt nur dann so niedrig, wenn der Raspi heruntergefahren wurde. Zusammen mit dem PrintScheduler Plugin und geplanten Einschaltzeiten der Steckdose für Drucker und Raspi lassen sich sich auch sehr schön automatisch startende Drucke realisieren, nach deren Ende sich der Drucker dann auch wieder abschaltet, weil ich dem Raspi über den PrintScheduler den Befehl zum Shutdown übermitteln lassen kann.
 
  • Gefällt mir
Reaktionen: Bohnenhans
Jo hab das jetzt auch erst mal so gemacht über das Auslesen des Stromverbrauchs,

Das Autoshutdown von Octoprint funktioniert bei mir leider nicht zuverlässig, egal ob Zeitraffer an/aus - ich fahre den halt jetzt per API herunter


- altes Script gelöscht ohne Render-Check -
 
Zuletzt bearbeitet:
Och, der eingebaute Zeitraffer sorgt bei mir dafür, dass der Drucker sicher weit genug runtergekühlt ist, um gefahrlos ausgeschaltet werden zu können. Abgesehen davon holt der Zeitraffer das rendern auch nach, wenn er das nicht direkt durchführen konnte, bzw. er bringt das rendern erst zuende, wenn es schon läuft und man den Shutdown initiiert.

Allerdings spreche ich hier von der integrierten Timelapse Funktion, nicht vom zusätzlich installierbaren Plugin.
 
  • Gefällt mir
Reaktionen: Bohnenhans
Naja ich lasse den jetzt 5 Minuten die Lüfter nachlaufen nachdem der Druck aufgehört hat, denke das reicht ja auch oder sollte man das länger nachlaufen lassen?

Ah ok wenn man über die API den shutdown schickt rendert der zuerst zu Ende? Hmmm dann muss ich mir wohl noch merken ob ich den shutdown command bereits geschickt habe :D


Oder weisst Du zufällig ob ich über die Rest API abfragen kann ob der gerade rendert?

In der timelapse API sehe ich gerade nichts ob der aktuell rendert.
https://docs.octoprint.org/en/master/api/timelapse.html


--------------------------

Ah habs gefunden

https://docs.octoprint.org/en/master/api/timelapse.html#unrendered-timelapse

rendering1boolWhether the timelapse is still being rendered (true) or not (false)


Hehe das macht das Abschaltscript aber doch dann wieder etwas komplexer :D
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: areiland
Bohnenhans schrieb:
Naja ich lasse den jetzt 5 Minuten die Lüfter nachlaufen nachdem der Druck aufgehört hat, denke das reicht ja auch oder sollte man das länger nachlaufen lassen?
Eigentlich sollte der Hotendlüfter ohnehin so lange laufen, bis das Hotend weniger als 50° hat. Die Firmwares schalten ihn üblicherweise ab diesem Schwellwert zu und ab. Und den Hotendlüfter kann man deshalb auch nicht selbst schalten.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Bohnenhans
Oh dann muss man das wohl auch noch auslesen

Hmmm ich habe meinen Drucker ja in einem "Thermogehäuse" das dauert sicher eine gute Weile bis das abgekühlt ist aber naja denke die Hotend Temp kann man - hoffentlich - auch einfach auslesen

Das mit dem Rendering ist dann echt einfach gewesen und das mit der Temperatur eigentlich auch



- hab mal das fertige Script hier eingefügt, das tut bei mir bisher so wie ich das will.

Ich bin von der Steckdosenmessung weg, mein Drucker ist in so einem Thermogehäuse beim Aufheizen überheizt der Drucker etwas aber dadurch dass wenig Wärme verloren geht schaltet er dann ein ganze Weile die Heizung komplett ab bevor er loslegt - so dass der Stromverbauch wieder auf Ruhestrom geht.... etc....

ich nutze jetzt hauptsächlich Octoprint als Datenquelle - und das tut gut durch die API ist das ja auch einfach.

Evtl noch laufende Render Jobs werden berücksichtigt und es wird auch erst abgeschaltet wenn die Temperaturen unter 50 Grad sind :D

Echt cool wie einfach man mit so bash Scripten so kleine Sachen automatisieren kann.


Code:
#!/usr/bin/bash


#---[ Config ]------------------------------------------------------
myTasmotaIP="192.168.0.55"
myOctoPrintIP="192.168.0.104"
myOctoPrintGlobalAPIKey="ZZZZ7634276237843267ZZZZZ"
myShutdownTemp=50

myDEBUG=false
#---[ Config Ende ]----------------------------------------------------


myHasPrinted=false
myOctoPrintConnection=false
myIsPrinting=false


debug_print () {
   if [ $myDEBUG = true ]; then
      echo "$1"
   fi
}


while [ true ];
do

   debug_print "Checke Verbindung zu OctoPrint...."

   /usr/bin/curl -s -H "X-Api-Key: $myOctoPrintGlobalAPIKey" http://$myOctoPrintIP/api/printer?exclude=temperature,sd,status
   if [ $? = 0 ]; then
      debug_print "Octoverbindung OK"
      myOctoPrintConnection=true
   else
      debug_print "keine Octo Verbindung"
      myOctoPrintConnection=false
   fi



   if [ $myOctoPrintConnection = true ];
   then
      /usr/bin/curl -s -H "X-Api-Key: $myOctoPrintGlobalAPIKey" http://$myOctoPrintIP/api/printer?exclude=temperature,sd | grep "\"printing\": true"
      if [ $? = 0 ]; then
         debug_print "Druck laeuft gerade"
         myIsPrinting=true
      else
         debug_print "Druck laeuft nicht"
         if [ $myIsPrinting = true ]; then
            myHasPrinted=true
            debug_print ".... es wurde aber gedruckt"
         fi
      fi

      if [ $myHasPrinted = true ]; then

         myIsRendering=true

         debug_print "Checke ob Renderprozesse laufen..."

         while [ $myIsRendering = true ];
         do
            /usr/bin/curl -s -X GET -H "X-Api-Key: $myOctoPrintGlobalAPIKey" http://$myOctoPrintIP/api/timelapse?unrendered=true | grep "\"rendering\": true,"
            if [ $? -eq 0 ]; then
               myIsRendering=true
               debug_print "Mindestens ein Renderprozess laeuft"
               sleep 120
            else
               myIsRendering=false
               debug_print "Rendern beendet - oder Timelapse ist deaktiviert"
            fi
         done


         debug_print "checke Temperaturen...."

         myTempTooHot=true

         while [ $myTempTooHot = true ];
         do
            myTempTooHot=false
            while read -r myLine
            do
               myTemp=$(echo $myLine | sed 's/.*\://g' | sed 's/\..*//g')
               debug_print "Gemessene Temperatur: $myTemp"
               if [ $myTemp -gt $myShutdownTemp ]; then
                  debug_print "Temperatur noch zu hoch"
                  myTempTooHot=true
               fi
            done <<< $(/usr/bin/curl -s -X GET -H "X-Api-Key: $myOctoPrintGlobalAPIKey" http://$myOctoPrintIP/api/printer?exclude=sd,state | grep "actual")
            if [ $myTempTooHot = true ]; then
                sleep 120
            fi
         done

         debug_print "Fahre Octoprint herunter"

         /usr/bin/curl -X POST -H "X-Api-Key: $myOctoPrintGlobalAPIKey" http://$myOctoPrintIP/api/system/commands/core/shutdown
         sleep 180

         debug_print "Schalte Steckdose aus"

         /usr/bin/curl http://$myTasmotaIP/cm?cmnd=POWER+OFF

         myHasPrinted=false
         myIsPrinting=false
      fi
   fi

   sleep 60

done
 
Zuletzt bearbeitet:
Zurück
Oben