Computerprojekte
Startseite -> Computer -> HP4-Uhr

So ein HP LaserJet 4 hat ein Display. Nachdem ich ein bißchen mit dem HP-Konfigurationsprogramm herumgespielt und eine Arbeitskollegin mit der Meldung "TONER WEISS LEER" schwer ins Grübeln gebracht habe, habe ich mich irgendwann später auf die Suche gemacht, wie man die Displaymessage denn nun genau einstellt. Ich wurde ->fündig.

Nun druckt so ein Drucker natürlich nicht ständig, sondern ist meistens am Däumchendrehen. Warum das Display in diesen Zeiten nicht für etwas sinnvolles nutzen, wie z. B. als Uhr:

Und so sieht's aus

Das folgende Shellscript benötigt ttcp oder netcat oder ähnliches, was direkt auf einen TCP Port connecten und Daten dorthin schicken kann. Ich leg' das in den Hintergrund und laß es laufen.

#!/bin/sh

HOST=hp4

function sendit {
	ping -c1 -q $HOST &>/dev/null && \
	echo -e "<esc>%-12345X@PJL RDYMSG DISPLAY=\"$1\"" |\
		ttcp -p 9100 -t $HOST &>/dev/null
}

while true; do
	sendit "`awk '{print "Load: "$1}' < /proc/loadavg`"
	sleep 20
	sendit "`date '+%d.%m.%Y %H:%M'`"
	sleep 40
done
Wichtig! Das "<esc>" ist ein Escapezeichen, in vi erzeugt man das z. B. durch die Tastensequenz Ctrl-V und danach <esc>.

Das Script ist nicht sonderlich erprobt. Ich weiß z. B. nicht, wie der Drucker reagiert, wenn er über eine anderen Transportweg (lpd, AppleTalk, etc.) Daten bekommt. Daß es keine Fehlermeldungen hagelt, wenn der Drucker doch mal ausgeschaltet ist, teste ich vorher, ob ein Ping erfolgreich ist. Rückmeldungen sind stets willkommen!

Götz meint: nc $HOST 9100 &>/dev/null ist für OS X out of the Box zu empfehlen.

© by Patrik Schindler <webhamster@pocnet.net>, 1999-2023