Idee für den Raspberry Pi (I) - umgesetzt: Netzwerkdruck mit Steckdosensteuerung
Lange ist es her, dass ich hier meine erste Idee für die Nutzung des Raspberry Pi beschrieben hatte.
Mittlerweile hab ich die auch umgesetzt und da ich sie letztes Wochenende erst beim Linux Einsteiger Abend und beim Barcamp Westküste mit ein paar Folien vorgestellt hatte muss ich sie ja auch noch hier beschreiben.
Zur Erinnerung: Mein Ziel war es, den Laserdrucker am Raspberry Pi zu betreiben um ihn im Netzwerk zur Verfügung zu haben und der Drucker sollte nicht ständig eingeschaltet sein und Strom verbrauchen, sondern der Raspberry Pi sollte ihn bei Bedarf einschalten und anschliessend wieder abschalten.
Umgesetzt habe ich es indem der Drucker per USB am Pi hängt und dieser per CUPS angesprochen wird. Das ist trivial, CUPS stellt den Drucker im Netzwerk per ipp zur Verfügung und man kann ihn benutzen.
Interessanter ist die Stromgeschichte. Das geschieht über eine Funksteckdose die der Pi über einen 433MHz Sender den es für knapp 2€ im Internetz gibt ansteuert. Ein kleines Script (quick’n‘dirty) guckt minütlich nach ob etwas zu drucken ist, schaltet den Drucker ggf. ein und eine halbe Stunde nach dem letzten Druckjob wieder aus.
Das Script check_printjob.sh sieht folgendermassen aus:
#! /bin/bashsteckdose=0
printjobs=`lpstat -o | wc -l`if [ “$printjobs” = 0 ] then if test /tmp/druckjobs then if test `find /tmp/druckjobs -cmin +30` then steckdose=0 rm /tmp/druckjobs else steckdose=1 fi fi else if [ “$printjobs” > 0 ] then steckdose=1 touch /tmp/druckjobs fi
fi#steckdose schalten mit $steckdose
/usr/local/bin/raspberry-remote/send 11100 4 $steckdose >> /dev/null
Das Script wird wie gesagt minütlich per cron aufgerufen und tut seinen Dienst. So wie das Script aufgebaut ist, wird der Steckdoese auch jede Minute ein Signal geschickt, das halte ich für verschmerzbar und ich war ehrlich gesagt zu faul es anders umzusetzen. So gleiche ich ausserdem verschluckte Signale aus, es gibt dabei ja keinen Handshake 8).
Das Tool zum verschicken der Schaltsignale stammt von wiringpi.com/, die Ansteuerung habe ich gemäss diesem Tutorial aufgebaut.
Die erwähnte kleine Präsentation die ich letzte Woche verwendet habe, habe ich hier als HTML exportiert (Softmaker Presentations macht da leider Grafiken draus) und alternativ als PDF.
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Steffen am :
Also nach deiner Anleitung schaltet sich meine Funksteckdose nach 1 Minute ein und bleibt eingeschalten… Wo liegt der Fehler?
Ich war gleich begeistert von deiner Idee und hab es direkt nachgebaut – als absolut blutiger Anfänger…
rowi am :
Das ist so pauschal schwer zu sagen, nach einer Minute einschalten ist korrekt wenn ein Druckauftrag ansteht.
Was gibt es “lpstat -o” (ohne Anführungszeichen) denn bei dir aus?
Wenn ein Druckjob anliegt wird die Datei /tmp/druckjobs angelegt bzw. deren Dateidatum aktualisiert. Erst wenn die aktuelle Uhrzeit später ist als das Dateidatum von /tmp/druckjob älter als 30 Minuten ist wird sie wieder gelöscht und die Steckdose abgeschaltet.
Bei mir funktioniert das auch, auch wenn ich es praktisch selten nutze.
rowi schrieb auch: Fertige Warenkörbe für die Flüchtlingshilfe Flensburg
Steffen am :
Nachdem ich stundenlang erfolglos herum probiert habe, bin ich auf TeaCups gekommen. Hat relativ schnell funktioniert und klappt wunderbar.
Danke dir dennoch, für den/die tollen Artikel rund um den RasPi
Steffen am :
Hallo, ich glaube ich muss das hier nochmal aufgreifen…
Zwar habe ich jetzt einen funktionierenden Drucker am rasPi, unmittelbar nach Druckauftrag schaltet die Funksteckdose auch den Drucker ein und der Druckauftrag wird ausgeführt, aber und das ist ein großes ABER…
Schaltet die Steckdosen rigoros im Viertelstundentakt bei meiner Lösung ab. Auch wenn der Drucker mitten im Druck ist. Um detaillierter zu werden : rasPi ist um Uhrzeit 14:00 uhr gestartet worden, so kommt das Ausschaltsignal zu jeder Viertelstunde (14:15, 14:,…) Respektive andere Urzeiten wenn Reboot erfolgte.
AnAnsich ja kein großes Ding, druckt man aber um ekurz vor ganz oder jeweils viertel Stunde später, geht der Drucker immer kurz drauf aus auch wenn man erneut was drucken möchte.
Nun möchte ich gerne deine Lösung umsetzen, eben jene definierte Ausschaltzeit nach dem letzten Druckauftrag, allerdings in meiner bisherigen funktionierenden Lösung.
Nun habe ich schon probiert und getan, leider ohne Erfolg – mir fehlen einfach fundierte Kenntnisse……
rowi am :
Das ist merkwürdig, ich arbeite ja mit einer leeren Datei deren Erstell- (bzw. Aktualisier-) Zeit ausgewertet wird.
Ich vermute du verwendest Raspian, ich habe hier Arch Linux.
Probier mal eine Datei in /tmp anzulegen und kontrollier die Uhrzeit:
touch /tmp/test
ls -l /tmp/test
und dann ein paar Minuten später beides noch einmal, die Uhrzeit sollte sich dann auf den zweiten Zeitpunkt aktualisiert haben. Ich vermute Raspian mountet das /tmp/ so, dass das nicht funktioniert.
Lässt sich dann aber beheben
rowi schrieb auch: Neue PowerBank: noch mehr Strom für Gadgets
Steffen am :
Ja das funktioniert mit dem Zeitstempel. Und ja, ich nutze Raspbian
Bisher habe ich es so gelöst via crontab – e:
/15 0,1,2,3,4,5,6 sudo lpstat -p | grep -EB1 “idle” > /dev/null && sudo /home/pi/raspberry-remote/send 00111 1 0 > /dev/null