Skip to content

SPArEPART: Auto-Off-Funktion bei Epson-Projektoren nachrüsten

UPDATE: Die PCBs sehen gut aus! :-)

tl;dr: siehe Titel; Technik hier

Lizenzhinweis: Alle Inhalte des SPArEPART-Projekts (Arduino-Quellcode und Fritzing-Sketch für die PCBs) stehen unter der GNU General Public License Version 3.

Anfang dieses Monats hat unsere Schule endlich neue Projektoren (vulgo: Beamer) bekommen. Es war auch höchste Zeit, da die alten Geräte, die die neuen nun ersetzen, bis dato 10 Jahre auf dem Buckel hatten. Während einige dieser Geräte noch annehmbare Bilder produzierten, waren die meisten inzwischen so lichtschwach, dass man die Bildinhalte nur noch unter besten Bedingungen (Raum abgedunkelt, kontrastreiches Motiv) ausmachen konnte. In vielen Räumen war multimedialer Unterricht somit nicht mehr möglich.

Neben dem Alter der Geräte war einer der Hauptgründe für die schlechte Bildqualität der alten Projektoren die falsche Bedienung: Da eine der Bildquellen des Projektors eine Dokumentenkamera ist, die permanent ein Bild liefert, schalten sich diese Geräte nicht aufgrund von Inaktivität ab—denn von einer Quelle ist ja immer ein Bild da. Dies bedeutet, dass ein Projektor, der angeschaltet und dann vergessen wurde, so lange weiter läuft, bis man ihn bemerkt und ausschaltet. Dieses Schuljahr dauern die Osterferien 3 Wochen; das sind also über 500 Stunden, die ein solcher Projektor sinnloserweise über die Ferien läuft, wenn er vergessen wird; die Lebensdauer des Leuchtmittels bewegt sich in der Größenordnung von 3.000 Stunden insgesamt. Tatsächlich ist es nicht (nur) die Lampe, die Schaden nimmt—diese wäre ja austauschbar. Der komplette Projektor nimmt solchen Schaden dadurch, dass auch ein Austausch der Lampen nichts mehr hilft.

Um dieses Problem—das auch bei Fernsehern, insbesondere OLED-Modellen, auftritt—zu lindern, verfügen die meisten dieser Geräte über eine automatische Abschaltfunktion ("Auto Off"), die den Nutzer nach einiger Zeit (normalerweise 1-4 Stunden) auffordert, eine Taste an der Fernbedienung zu drücken und ansonsten das Gerät ausschaltet. An unseren alten Projektoren war eine solche Funktion vorhanden ("Abschalt-Timer"), aber leider nicht aktiviert.

Unsere neuen Geräte vom Typ Epson EB-695Wi besitzen eine solche Funktion nicht.

Damit sollte die Sache eigentlich beendet sein: Solche Geräte sind zur Verwendung grundsätzlich ungeeignet, vor allem aber dort, wo die Anzahl der Benutzer sehr groß wird (also in Schulen) und gerne "Streiche" gespielt werden (also in Schulen). Ob ein Gerät für die Verwendung im Schulbetrieb geeignet ist, steht als Kriterium bei der Beschaffung leider weit hinten (gefolgt nur von: wird das Gerät nach der Anschaffung überhaupt genutzt und wie gerne).

Folglich haben wir nun einen Satz von über 70 Projektoren, die alle Gefahr laufen, nach den nächsten Ferien den Geist aufzugeben—eigentlich sollen sie mindestens 8 Jahre halten. Wie es aber—nicht nur im Schulsystem—häufig so läuft, muss man um die Mängel des Gerätes irgendwie herumarbeiten. Solche "Workarounds" fallen mal mehr, mal weniger elegant aus. Ich halte diesen für mittelelegant.

Serial Port Arduino Epson Projector Attitude Readjustment Tool (SPArEPART)

Die Projektoren besitzen zwar keine "Auto Off"-Funktion, dafür aber eine funktionsfähige und recht gut dokumentierte serielle Schnittstelle (RS-232). Über diese kann der Projektor teilweise gesteuert werden—es ist so auch möglich, den Projektor ein- und auszuschalten. Der Plan ist klar: Wir bauen ein Gerät, das dem Beamer alle drei Stunden das Signal zum Ausschalten sendet. Offensichtlich wird ein Arduino benötigt. Da keine absolute Zeit ("jeden Tag um 18 Uhr"), sondern nur eine relative Zeit ("alle 3 Stunden") verwendet wird, wird kein RTC-Modul benötigt. Serielle Verbindungen gehören für Arduinos zum Tagesgeschäft, aber leider verwendet RS-232 anscheinend 12-Volt-Pegel; der Arduino sendet und empfängt mit 3,3 oder 5 Volt. Es wird also ein Konverter wie der MAX3232 benötigt. Auf vielen Wandler-Modulen, auf denen der MAX3232 verbaut ist, ist auch direkt eine serielle Buchse (weiblich) aufgelötet. Schließlich soll der Projektor nicht ohne Vorwarnung ausgeschaltet werden: Über einen Piezo-Summer soll ein Ton ausgegeben werden, bevor der Projektor ausgeschaltet wird. Noch besser wäre es natürlich, den Projektor "stumm" zu schalten—es gibt eine Option, aus dem sogenannten "A/V Mute"-Modus den Projektor nach einer kurzen Zeit auszuschalten. Der "A/V Mute"-Modus hat aber den Vorteil, dass er durch Tastendruck sofort deaktiviert werden kann, während nach dem Ausschalten eine kurze Zeit gewartet werden muss, bis der Projektor wieder angeschaltet werden kann. In Version 2 soll noch ein Klatschsensor eingebaut werden: Kurz vor dem Ausschalten spielt das Gerät die Tonfolge Shave and a Haircut; antwortet der Benutzer durch zweifaches Klatschen ("Two Bits!"), wird der Timer zurückgesetzt.

Teileliste:

Bilder:

SPArEPART, Ansicht oben
SPArEPART, Ansicht oben
SPArEPART, Ansicht vorne
SPArEPART, Ansicht vorne

Code:

#include <SoftwareSerial.h>
#include "pitches.h"

const byte rxPin = 3;
const byte txPin = 2;
// there is almost a 50-50 chance the RX and TX pins are reversed
// you may have to try both configurations
const byte tonePin = 12;
unsigned long lastReset;
const int noLegato = 100;

SoftwareSerial ProjSer(rxPin, txPin);

void setup() {
  ProjSer.begin(9600);
  lastReset = millis();
  pinMode(tonePin, OUTPUT);
}

void loop() {
  if (lastReset + 1000UL * 60 * 60 * 3 < millis()) {
    play_shave_and_a_haircut(tonePin, 70);
    delay(30 * 1000);
    ProjSer.println("MUTE ON");
    delay(100);
    ProjSer.println("MUTE ON");
    delay(100);
    ProjSer.println("MUTE ON");
    lastReset = millis();
  }
  delay(1000);
}

void play_shave_and_a_haircut(const byte tonePin, const int toneLength) {
  tone(tonePin, NOTE_G5, toneLength * 2);
  delay(toneLength * 2);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_D5, toneLength);
  delay(toneLength);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_D5, toneLength);
  delay(toneLength);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_E5, toneLength * 2);
  delay(toneLength * 2);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_D5, toneLength * 2);
  delay(toneLength * 2);
  noTone(tonePin);
  delay(noLegato);
}

Skizze (Fritzing):

Fritzing-Skizze

Bilder von den PCBs:

SPArEPART-PCB
SPArEPART-PCB
fertig zusammengebauter SPArEPART mit PCB
fertig zusammengebaut

Den Fritzing-Sketch, mit dem die PCBs erstellt wurden, gibt es hier: SPArEPART_pcb.fzz

Vielen Dank an AISLER, die die PCBs sehr schnell hergestellt haben!

Und das funktioniert?

Erstaunlicherweise ja, und es passt auch gerade so in die Anschlussöffnung am Projektor! Jetzt gilt es nur noch, 70 davon herzustellen und an allen Projektoren der Schule zu installieren. Hm, vielleicht hat ja der Informatik-Kurs Zeit...

Update: Edunite

Ascaion stellt zum Ende des Schuljahres 2022/23 den Betrieb von Edunite (siehe auch) ein, das zuletzt (glücklicherweise) nur noch als Kommunikationsplattform genutzt wurde.

Leider ist das Kommunikationstool im Schulportal Hessen (auch bekannt als LANiS) vollkommen ungeeignet zur Kommunikation und so beginnt nun die Suche nach einem sinnvollen benutzerfreundlichen brauchbaren Ersatz.

Mal sehen.

Rant: Edunite

Edunite ist ein schreckliches System.

Die meisten meiner Kollegen, die damit arbeiten müssen, teilen diese Einschätzung. Als "Schuladministrator", der auf unserer Edunite-Plattform noch zusätzliche Befugnisse und Aufgaben hat, muss ich ihnen aber unterstellen, dass sie viele der Kritikpunkte von Edunite noch gar nicht kennen. Tatsächlich fällt mir spontan nur ein einziger Vorteil ein: Nachrichten, die man auf Edunite bekommt, leitet Edunite an eine angegebene E-Mail-Adresse (so vorhanden) weiter. Dies ist einer der Punkte, die Edunite dem "Schulportal" voraus hat—und auch der Grund, warum das "Schulportal" als Kommunikationsmittel völlig ungeeignet ist, genauso wie die "dienstlichen E-Mail-Adressen" (@schule.hessen.de), die alle Lehrer in Hessen ab dem nächsten Schuljahr verwenden müssen. Aber hier soll es um Edunite gehen, und daher:

Login If You Can

Anders als praktisch alle anderen Web-Dienste, bei denen die Authentifikation auf Benutzernamen und Passwörter basiert, kann man sein Passwort bei Edunite nicht selbst zurücksetzen:
Edunite behauptet:
Die Behauptung, es läge am Datenschutz, ist natürlich Unsinn; tatsächlich wurde mir gegenüber bei einem Telefonat mit Ascaion behauptet, diese Funktion sei in Entwicklung und man rechne "bis Ende des Jahres" mit einer Umsetzung.
Der in der Meldung erwähnte "Edunite-Administrator [der] Schule" bin ich. Auf der Schulwebsite befindet sich ein Formular, mit dem man ein neues Passwort anfordern kann. Ein nicht unerheblicher Teil unserer Schüler- und Elternschaft kennt den Unterschied zwischen Edunite-Login und E-Mailadresse nicht und scheitert daran, in das Formular eine funktionierende E-Mailadresse einzugeben, an die das neue Passwort geschickt werden soll. Dies ist nicht vollständig die Schuld der Anwender: Edunite-Logins sind aufgebaut wie E-Mail-Adressen, sind aber keine. Schlimmer noch: Die "Domain", die für unsere Schule Bestandteil der Edunite-Logins ist, existiert, hat aber überhaupt nichts mit unserer Schule zu tun. Ich denke, das liegt daran, dass sich alle Schulen, die Edunite verwenden, dieselbe Login-Seite verwenden. Übrigens hindert mich als "Schuladministrator" nichts daran, Zugänge anzulegen, die so aussehen, als ob sie zu einer anderen Schule gehören, denn die "Domain" ist Bestandteil des Logins und damit frei wählbar.
Dies alles halte ich bereits für gefährlich genug—und peinlich für eine "professionelle" Lösung. Aber es wird schlimmer.

DoS mich, ich bin der Frühling

Eins der wichtigsten Designziele einer Plattform für "effizientes Bildungsmanagement" sollte der Schutz von Schülerdaten sein—diese haben es sich nicht ausgesucht, der Plattform beizutreten und wurden von der Schule angemeldet. Dazu kommt, dass die Art der Daten, die auf Edunite verwaltet wird—nämlich Schülerleistungen und -zensuren—streng vertraulich sind. Daher wird der Zugang für Unbefugte streng unterbunden: Bereits nach wenigen fehlgeschlagenen Login-Versuchen wird das entsprechende Konto gesperrt und muss von einem Administrator wieder freigeschaltet werden. Mit anderen Worten: Jeder Dritte, auch jeder völlig unbeteiligte Dritte ohne Bezug zur Schule, kann jedes Edunite-Konto der Schule sperren, und zwar auch die Lehrerkonten. Auch die Konten, mit denen für alle anderen der Zugang wiederhergestellt werden soll. Um ein Konto zu sperren, benötigt man lediglich den "Login" des Kontos, der bei den meisten Schulen aus dem Namen der Schüler/-innen abgeleitet werden kann und bei den Lehrern aus dem Lehrerkürzel. Diese Art von Denial-of-Service-Angriffen (DoS) ist problemlos automatisierbar und von einem kompletten Laien ohne finanziellen oder großen Zeitaufwand durchführbar. Man kann von Glück reden, dass Schüler der Unter- und Mittelstufe im Allgemeinen nicht mit Computern umgehen können.

Ich würde Sie doch nicht anlügen...

Zurück zu den Passwörtern, die ich als Schuladministrator zurücksetzen muss—selbst, wir erinnern uns, können das die Schüler aus Datenschutzgründen nicht: Ich bekomme also E-Mails, in denen der Name des betroffenen Schülers steht, der Name eines Elternteils, die Klasse und im besten Fall auch noch die E-Mail-Adresse, an die das neue Passwort soll. Nichts davon kann jemals verifiziert werden. Es ist jedem Dritten, mindestens aber jedem Klassenkameraden, trivialerweise möglich, für ein Konto das Passwort zurücksetzen und es sich an eine beliebige E-Mail-Adresse schicken zu lassen. So etwas habe ich sonst noch nirgendwo gesehen. Wohlgemerkt: Hierbei handelt es sich um eine Lösung aus der "freien Wirtschaft", wo alles viel besser und schneller geht.

"Dann machen Sie halt nicht so"

Der uralte Witz geht so:
Kommt ein Mann zum Arzt und sagt: "Herr Doktor, mein Arm tut immer total weh, wenn ich so mache." Sagt der Arzt: "Dann machen Sie doch nicht so!"
Der Witz im modernen Bildungsmanagement geht so: Man möchte das Passwort von Max Mustermann zurücksetzen und sucht daher nach "Max". Es stellt sich aber heraus, dass die Schule mehr als 50 "Max"s hat und sie deswegen nicht auf einer Seite angezeigt werden können. Edunite bietet daraufhin an, auf die zweite Ergebnisseite zu wechseln, auf der alle Max ab Nachname "Koc" sind:Edunite-Suchergebnisse: 25 pro Seite, 3 Seiten werden angezeigt
... aber wenn man darauf klickt, macht Edunite dann so:
Fehlermeldung: Hier geht's nicht weiter.
Dieser Fehler ist nicht nur reproduzierbar: Er ist auch nicht nicht-reproduzierbar, das heißt, er tritt jedes Mal auf. Es gibt, und das ist jetzt kein Witz, Schüler, deren Passwörter ich nicht ändern kann, weil ich ihren Eintrag bei Edunite nicht aufrufen kann. Ich kann auch nicht mit ihrem genauen Namen suchen, denn Edunite ist sehr speziell und hört bei Vor- und Nachnamen beim jeweils ersten Leerzeichen auf zu suchen. Als Beispiel: Ein Schüler, der mit Nachnamen "La Traviata" heißt, kann niemals gefunden werden, wenn es mehr als 50 Schüler gibt, die "La" in Vor- oder Nachnamen haben und die alphabetisch vor ihm kommen.
Oh, und Edunite ist so konfiguriert, dass bei solchen Fehlern immer automatisch eine Nachricht an zwei "Systemadministratoren" (von Ascaion) geschickt wird. Sie wissen Bescheid.

E-Mail als letzte Rettung - oder als Fluch

Wie bereits erwähnt halte ich ein Feature von Edunite für unheimlich wichtig: Edunite besitzt ein Nachrichtensystem, das leidlich bedienbar ist (die Klasse 9x kann nicht gefunden werden, wenn sie als Klasse "09x" eingetragen ist; Kurt Schmitt kann nicht gefunden werden, wenn er bei Edunite als "Kurt Egon Schmitt" eingetragen ist). Zum Glück reicht Edunite, so man in seinem Benutzerkonto seine E-Mail-Adresse hinterlegt, aber alle Nachrichten, die man bekommt, an diese E-Mail-Adresse durch. Mehr noch: Man kann auf diese E-Mails sogar antworten und sie werden dann als Edunite-Nachrichten ins System eingepflegt. Das funktioniert größtenteils gut! Nun ja, wenn man per E-Mail Dateien anhängt, trennt Edunite diese klammheimlich ab; andererseits lassen sich manche Dateianhänge auf Edunite gar nicht öffnen, während sie bei den E-Mails korrekt angehängt und abrufbar sind. Dies alles sollte meiner Meinung nach bei einem professionell entwickelten, produktiv eingesetzten System nicht mehr passieren, aber sei's drum—im Vergleich zu den übrigen Punkten, die ich bisher aufgelistet habe, erscheint mir diese Art von Problem als geradezu liebenswürdige Marotte.
Weniger lustig die Art der E-Mail-Gestaltung. Ich weiß nicht, ob bei Ascaion eine grundsätzliche Abneigung gegen das Medium E-Mail herrscht oder ob sie es nicht besser wissen—beides erscheint mir möglich—aber der Absender aller E-Mails von Edunite lautet: "edunite". Nicht etwa "Anna Müller via edunite" oder etwas Ähnliches, das Aufschluss über Absender und Inhalt der Mail verrät. Wozu den Überblick bewahren? Das Genie beherrscht das Chaos.
Apropos Chaos: Edunite erlaubt den Versand von Nachrichten an (automatisch generierte?) Verteilerlisten à la "alle Deutschlehrer" oder "Alle Lehrer der 5y". Wer zählt als Lehrer der 5y? Praktisch jeder, der mal einen Fuß in den Klassenraum gehalten hat: Jahrgangsübergreifende AGs, Wahlunterricht, Religions-, Musik-, Kunstunterricht in Kursen? Willkommen im Verteiler. Grob geschätzt 80% der Nachrichten, die mich über Edunite erreichen, haben weder Bezug noch Handlungsbedarf, was mich angeht—eine enorme Verschwendung meiner Zeit und Ressourcen. Andersherum übersehe ich wichtige Nachrichten, die über Edunite kommen, weil sie in einer gigantischen Menge an Rauschen untergehen.

Menüs: Die Nutzer-Grenzerfahrung

Ich mache es hier kurz und arbeite mit Bildern.
Die Kids nennen so etwas, glaube ich, "POV" (point of view): Stellen Sie sich vor, ein Kollege hat seinen Deutschkurs abgegeben und er soll nun einem anderen Kollegen zugeordnet werden. Wo müssen Sie klicken?
Auswahl
Gut, das war jetzt vielleicht etwas schwierig. Wie wäre es hier:
Auswahl
Nehmen Sie sich Zeit.

Zugegeben: Dieses Problem haben nur die "Schuladministratoren" und die wurden ja speziell instruiert. Nehmen wir stattdessen ein Problem, vor dem jeder Lehrer des Öfteren steht: Er benötigt eine aktuelle Liste der Schüler in seiner Klasse. Das ist viel einfacher:
Auswahl
Oh, hoppla. Das ist nur für die eigene Klasse, für die man die Klassenleitung hat. Zur Klassenliste der 5z, die im Klassenverband NaWi-Unterricht hat, geht es unter "Kurslisten":
Auswahl
Worauf hätten Sie geklickt - "Kursübersicht"? Da muss ich Sie enttäuschen: Unter "Kursübersicht" können Sie nur "eine Liste aller Kurse Ihrer Schule im gewählten Schuljahr generieren." Logisch. Steht ja auch dran. Wie oft hört man das im Lehrerzimmer: "Ich möchte gerne eine Liste aller Kurse—nur der Kurse, nicht der Schüler—im gewählten Schuljahr generieren." Viel häufiger hört man: "Wie ich Edunite hasse, dieses ************ S*******system! Ich glaube, den Passierschein A38 könnte ich schneller und entspannter kriegen. Vorher kommt aber noch Godot."

Update: Plot Twist!