Hallo,
vielleicht interessiert es jemand, wie man seinen Drucker über FHEM
erst von dem Druck einschaltet und nach einer Zeit wieder aus.
Meine Konfiguration ist ein Mac OS X Server, geht aber mit allen cups
Installationen und mit mehreren Druckern.
Der Drucker hängt an einem ST20-ST Schalter und wird über lpd
angesprochen. Geht aber auch mit USB o.ä.
Das Prinzip ist, dass man ein Pseudo-Backend erstellt, welches sich in
den Datenstrom hängt und den Schalter aktiviert. Danach wird das
Original-Backend aufgerufen.
Zuerst in der /etc/cups/printers.conf das Backend ändern.
Da steht z.B. "DeviceURI lpd://
fs3800.domain.com/"
Hier kann man sich etwas einfallen lassen, bei mir:
"DeviceURI fs3800://
fs3800.domain.com/"
In /usr/libexec/cups/backend stehen die Backends und hier wird sich
mit ein Pseudo-Backend erstellt.
Nach dem obigen Beispiel muss die Datei dann "fs3800" heissen.
Also sieht /usr/libexec/cups/backend/fs3800 so aus:
#! /bin/bash
PATH=/usr/sbin:/sbin:$PATH
n=1
ret=1
while [ "$n" -le 3 -a "$ret" -ne 0 ]
do
echo "set FS3800 on-for-timer 960" | \
/usr/bin/nc 127.0.0.1 7072 > /dev/null 2>&1
n=`expr "$n" + 1`
ping -t 15 -o
fs3800.domain.com > /dev/null 2>&1
ret=$?
done
exec -a lpd /usr/libexec/cups/backend/lpd "$@"
Damit in FHEM die Plots schön aussehen habe ich folgendes in /etc/
fhem.cfg:
define FS3800 FS20 1234 07
attr FS3800 model fs20st
attr FS3800 room Buero
define FS3800_fl FileLog /var/log/fhem/FS3800-%Y-%m.log FS3800
attr FS3800_fl logtype fs20:On/Off,text
attr FS3800_fl room Buero
define FS3800_wl weblink fileplot FS3800_fl:my_fs20:CURRENT
attr FS3800_wl label "Laserdrucker FS-3800"
attr FS3800_wl room Plot_Energie,Buero
define FS3800_check notify (FS3800:on-for-timer.*) { \
my $fhem_cmd;; \
my @@args= split(" ", "%");; \
if($defs{"FS3800_off"}) { \
$fhem_cmd= sprintf("modify FS3800_off +%%02d:%%02d:%
%02d", \
$args[1] / 3600, ($args[1] / 60) %% 60, \
$args[1] %% 60);; \
} else { \
$fhem_cmd= sprintf("define FS3800_off at " . \
"+%%02d:%%02d:%%02d set FS3800 off", \
$args[1] / 3600, ($args[1] / 60) %% 60, \
$args[1] %% 60);; \
} \
fhem("$fhem_cmd");; \
}