Benutzer-Werkzeuge

Webseiten-Werkzeuge


p-rr:octopi_verzoegert_abschalten

OctoPi verzögert abschalten mit Tasmota

  • mindestens Tasmota 9.2.0 nutzen

Um den 3D Drucker (und OctoPi) automatisch abzuschalten beim Shutdown kann man unter „Einstellungen → Server → System herunterfahren“ ein Script angeben das zum Shutdown ausgeführt wird.

Wir nutzten dies um eine Tasmota-geflashte WLAN Steckdose verzögert abschalten zu lassen.

Der Trick besteht darin, dass auf dem Tasmota Device eine RULE erstellt wird, die Zeitverzögert die Steckdose ausschaltet.
Dieses Script richtet die RULE automatisch als RULE2 ein und löst im Anschluss den Trigger aus.
dieses Script überschreibt eine bestehende RULE (Regel).

Script

Das Script legen wir in /home/pi ab und rufen es dann so auf (Angabe unter genannter Einstellung):

sudo /home/pi/shutdown_steckdose_off.sh 180

  • Der RPI wird kontrolliert beendet und nach 180 Sekunden schaltet die Steckdose aus.

Natürlich muss das Script ausführbar sein:

Linux Konsole:
chmod a+x /home/pi/shutdown_steckdose_off.sh
#!/bin/sh
#set -x #debug aktivieren
# Script um beim Shutdown von OctoPi auch den Drucker (incl. Octopi) abzuschalten
# Da ein RaspberryPi sich ja nicht selbst ausschalten kann macht das hier
# eine Steckdose mit Tasmota
# Benutzung:
# /home/pi/shutdown_steckdose_off.sh 90
# Schaltet die Steckdose mit 90 Sekunden verzögerung ab.
 
# IP der Tasmota Steckdose
ip=192.168.178.210
 
off=$1
 
#Verwendeter 1. RuleTimer
timer=1
#Verwendete 2. RULE (Regel)
rulenum=2
 
#Rule Power OFF erste Steckdose falls es mehrer gibt.
rule="ON Rules#Timer=$timer DO Power1 off ENDON"
 
 
if [ -n "$off" ]
then
  # Erstmal prüfen ob die notwendige Rule schon existiert und OK ist
  result=`wget -q -O - http://$ip/cm?cmnd=rule$rulenum | sed 's/.*"Rules":"//' | sed 's/".*//'`
  # Wenn nicht passt dann wird die rule neu erstellt/überschrieben.
  if [ "$rule" != "$result" ]
  then
    setrule=`echo $rule | sed 's/ /%20/g' | sed 's/#/%23/g'`
    result=`wget -q -O - http://$ip/cm?cmnd=rule$rulenum%20$setrule`
    result=`wget -q -O - http://$ip/cm?cmnd=rule$rulenum%20ON`
  fi
  if [ $off -gt 0 ]
  then
    #Timer setzen - nach Ablauf der Zeit schaltet die Steckdose aus.
    wget -q -O /dev/null http://$ip/cm?cmnd=Backlog%20ruletimer$timer%20$off
  else
    #Direkt ausschalten - weniger tolle Idee...
    wget -q -O /dev/null http://$ip/cm?cmnd=Backlog%20Power1%20off
  fi
fi
 
echo "OctopPi Shutdown"
sleep 1
/sbin/shutdown -h +1
exit 0

sudoers

das Script muss noch in sudoers eingetragen werden, damit es ohne eingabe eines Passwortes funktioniert

pi@octopi:~ $ sudo editor /etc/sudoers.d/010_pi-nopasswd

pi ALL=(ALL) NOPASSWD: /home/pi/shutdown_steckdose_off.sh
unter vi oder vim (apt install vim) kann das schreiben mit :w! erzwingen werden
p-rr/octopi_verzoegert_abschalten.txt · Zuletzt geändert: 2021/01/26 08:16 von lsd