Vertretungsplan App und Monitoranzeige für Untis

Hallo Leute, vor allem @maxEG,

was macht ihr denn so in den Osterferien?
Ich habe mit einem besonders talentierten Schüler und der Info-AG ein bisschen gebastelt.

Folgender Pfad macht deutlich, worum es geht:
Untis -> Monitor-Export -> Sync -> dockerized(python-parser -> https-REST-Service) <- LDAPS-auth
dann:

  1. https-REST-service (LE+proxy) -> JSON -> Android-App + Linux-Desktop-App mit QT (siehe screenshot)
  2. https-REST-service (LE+proxy) -> JSON -> Vertretungsplananzeige (siehe screeshot)
  3. https-REST-service (LE+proxy) -> JSON -> iOS-App mit QT und XCode (??)
  4. https-REST-service (LE+proxy) -> JSON -> Windows-App für den Vertretungsplaner (??)

Wer hier Bahnhof versteht: kann ich verstehen, musste den kram auch erst anlernen.

Jedenfalls ist bei mir erstmal ein burnout zu verzeichnen, weil ich eigentlich rund um die Uhr den Kram zum Laufen kriegen will. Es macht einfach süchtig… Ich würde das ganze auf github stellen, wenn ich jemand finden könnte, der das brauchen kann und willens wäre das bei sich auszuprobieren und mit zu helfen (mit oder ohne docker, auch ohne SSL zunächst)

die letzten zwei der Aufzählung gibt es nämlich nicht, weder eine Implementierung für eine iOS-App, weil wir keinen Mac haben um das zu kompliieren etc. noch für die Windows-App (am unwichtigsten).

ich finde es super spannend, was das alles geht und wie das geht. Ich stelle auch ein Video zur Verfügung, dass man sieht, dass die App echt dynamisch ist. (im Screenshot: “kuechel” schaut sich den Plan von Kollege mit Kürzel “Evz” an.)

Bin auch gespannt auf Rückmeldungen.
Verwandte Themen:

VG, Tobias
Screenshot der App (in VBox als Hochkant programm, sieht aber genauso auf dem Android-Tablet aus):


Screenshot derselben App mit “–monitor” auf einem Linux-Rechner gestartet:

p.s. hab auch eine virtualbox in der ich das entwickle, die kann ich auch zur Verfügung stellen, wobei QT und Android SDK ziemlich gross werden. Besser man lädt das selbst…

2 Like

Hallo Tobias,

spannend. Ich habe leider gerade keine Ressourcen dafür, habe aber teilweise eine ähnliche Lösung für die Vertretungsplananzeigen (mehrere, weit verstreut über dem Gelände) erstellt. Interessieren würde mich ein Einblick schon.

Auf dem Vertretungsplan-Rechner (Untis) läuft ein node.js Skript, das den Export-Ordner von Untis auf Änderungen überwacht und diese in Nextcloud lädt.
An den Monitoren für die Anzeige hängen jeweils Raspberry Pis, die sich die Änderungen dann zur Anzeige runterladen. Die Pis bestätigen den Erhalt der neuen Daten, damit der Vertretungsplaner eine Rückmeldung erhält. Regelmäßige Screenshots der Anzeige werden ebenfalls hochgeladen, damit man auch entfernt den Überblick darüber hat.

Viele Grüße
Dominik

1 Like

Hi Tobias,

spannendes Projekt! Warum nehmt ihr eigentlich QT und nicht HTML/JS/CSS?

VG Stephan

Hallo,

Werbung: OpenSchulportfolio hat das ja auch eingebaut, mit der Untis Anzeige im Portfolio :wink:

http://www.openschulportfolio.de/praxistipps/untis/start

(und Time/TimeSub kann es auch…)

VG

Frank

1 Like

Hi Dominik,
an dieser Seite des Problems bin ich auch interessiert.

  • Ein halbes Jahr lang hatte ich WinSCP auf dem Vertretungsplan-Rechner portabel installiert. Das hat öfters mal der Virenscanner vom Windows-share weggelöscht.
  • ab dann hab ich es nicht lokal installiert, dann ging es erstmal, bis wir feststellten, dass es schief geht, wenn der WSUS den sonst ständig laufenden Rechner rebootet.
  • dann hab ich die Firma gebeten, mir das WinSCP skript auf dem Windows-Verwaltungs-Server zu installieren. Seitdem war auf dieser Seite kein Fehler mehr.

Aber du siehst: es kann myriaden von User/Denkfehlern geben, dass die automatik nicht mehr funktioniert. Was ich nicht wollte war: einen Nextcloud-client auf dem VW-Server installiert haben.

Daher die Frage: was macht dein node.js Skript tatsächlich. Nutzt die API von Nextcloud zum hochladen? Oder wie genau?

Die Bestätigung des Erhalts finde ich auch schick, aber wohin? Wieder in die Cloud? Oder ist der V-Plan-Rechner von außen im Internet?

Die Screenshots sind eine super Idee. Ich dachte schon an VNC, aber das ist besser.

Weil es bei mir hauptsächlich auch um eine App geht, wollte ich auch sichergehen, dass der V-Planer sieht was die Schüler sehen.
Die App filtert/sortiert nämlich die Daten: Jeder Schüler sieht nur seine (Klassen) Vertretungen, wenn er welche hat. Jeder Lehrer auch nur seine Vertretungen.

VG, Tobias

Hallo Stephan,

gute Frage. Weil HTMl/JS/CSS nicht so ein rundumsorglos-Paket für Android und iOS suggeriert hat. Dass Qt am Ende auch nicht so einfach (z.B. auf iOS) läuft, war uns anfangs nicht klar. Und gute Dokumentation zu einem (stabilen?) phonegap waren auch rar.
Und Fazit: Die Schüler wollten kein Java und jemand war gegen HTML, warum auch immer. Mir war Qt recht, weil es so plattformübergreifend funktioniert.
Meinem super-schüler und mir wäre es am ende vermutlich egal gewesen.

VG, Tobias

Hi Frank,

ja, ich weiß und ich war bislang nur zu faul es auch bei meinem Schulportfolio einzusetzen.
Ich dachte kurz daran, als Nextcloud-Extension dieses Teil des Rades auch neu zu erfinden, habe aber davon Abstand genommen, weil ich deine dokuwiki-ext. ja kannte.

Mein Fokus ist die Handy-App-Geschichte, wobei meine anfänglichen Erwartungen da auch zu hoch waren.

Also, ich glaube, die openschulportfolio-extension ergänzt sich gut: man kann beides einsetzen: portfolio für die, für die es keine App gibt.
Ich kann halt bei der App noch den wunsch unseres Datenschützers einbauen: jede klasse sieht nur ihren Stundenplan - und später mal den Wunsch unseres V-Planers: Lehrer sollen Nachrichten einfließen lassen können - aber vielleicht ist das im portfolio auch schnell(er) gelöst.

VG, Tobias

Hi,

im Node-Skript überwache ich mit watch das Export-Verzeichnis. Bei Änderungen kommuniziere ich per webdav-fs mit Nextcloud. Mit node-notifier sende ich Notifications an den Benutzer, dass Änderungen erkannt wurden oder alle Anzeigen den neuen Vertretungsplan übernommen haben. Kein weiteres UI oder ähnliches. Die Vertretungsplaner können genauso weiterarbeiten wie bisher -> sehr hohe Akzeptanz.
Das Skript lässt sich schön als Windows-Service einbinden, der beim Hochfahren mitgestartet wird.

Das Acknowledgement wird auch auf Nextcloud abgelegt, genauso wie die Screenshots. Der Vertretungsrechner ist eben nicht von außen erreichbar, so dass mir das als einfachste Möglichkeit erschien. Nun reicht mir ein Monitor und Raspberry-Pi, um den Vertretungsplan anzuzeigen.

Es war bei uns aus der Not geboren, da wir einen Anbieter hatten, der uns für einen netten vierstelligen Betrag (plus jährlicher Lizenzkosten) angeboten hatte, diese Übertragung des Vertretungsplans vorzunehmen. Empfand ich unverschämt, weswegen ich mit dieser “quick-n-dirty”-Lösung Abhilfe geschaffte habe.

Die App ist da natürlich eine ganze Ecke weiter.

Viele Grüße
Dominik

1 Like

Hi Tobias,

Schau dir mal React und React Native an. Das ist das, was du suchst :slight_smile: Mit Electron bringst du es auf den Desktop.

vG Stephan

Hallo,
vielen Dank für den Hinweis aufs OSP.
Wusste gar nicht dass es das Plugin gibt.

Versuche mich mal daran…
Grüße Matthias

Hi Frank,

ich hab mir das angeschaut und gleich auch bei mir jetzt auf dein Untis im wiki umgestellt.

Ob ich jetzt Featurewünsche melde oder früher oder später doch auf mein eigenes Datenframework wechsle… mal sehen…

Vg, tobias

Hai,

Ich fände Feature Requests nett, denn es ist wie immer: Wenn mehrere das selbe nutzen ist Austausch und Hilfe möglich, sonst biste halt alleine.

Die nächsten Pläne für die Untis/Timesub Plugins sind ein verschlüsselter JSON Feed, den man in Anzeigesysteme und evtl auch in Apps einbinden kann.

VG

Frank

Hallo,
Wir haben das so gelöst (mir scheint deutlich einfacher, aber wohl nicht so vielseitig):
Vertretungsplan wird von Untis erstellt, html-Export

  • Vertretungsplanmacher startet Skript, das mit PuTTy die HTML-Dateien auf den Webserver des Schulnetzes überträgt.
  • Schulserver überwacht das Verzeichnis, merkt, dass es neue Dateien gibt, parst diese um noch ein paar Verschönerungen zu erreichen und kopiert das Ergebnis an einen Pfad, der vom Raspberrypi, der die Anzeigetafel ansteuert, abgerufen wird
  • ein Raspberry Pi ruft die HTML-Seiten ab und noch weitere Dinge, die alle auf dem großen Monitor dann angezeigt werden.

Der Raspi ist völlig ausreichend, um zwei dynamische HTML Seiten (Vertretungsplan und Busabfahrtsmonitor) und zwei Präsentationen (odp und pdf mit okular) im viergeteilten Bildschirm anzuzeigen. Kenntnis von bash-Skripten reicht aus.

1 Like

Hallo Tobias,
sorry, war zuhaus grade ausgelastet (Wasserschaden, Renovierung, bah), komm jetzt erst zum Aufarbeiten.
Ich habe auf dem Verwaltungsrechner eine Nextcloud installiert, auf den Anzeigesystemen auch, dort startet ein Firefox, der automatisch die lokale Webseite anzeigt.
Funktioniert bis wir demnächst im Verwaltungsnetz ThinClients von Kiff-BF kriegen…
LG
Max

Hallo Leute :slight_smile:
hab leider irgendwie keinen Besseren Ort gefunden als hier.
Wir hatten auf den Displays öfter mal das Problem, dass im Moment des Seitenaufrufes die aufzurufende Seite nicht verfügbar war.
Mit dieser Fehlermeldung bleiben die Browser dann natürlich stehen.

Ich hab das jetzt so gelöst, dass ich jede Minute einen Screenshot machen lasse, die Durchschnittsfarbe berechne und schaue, ob Rot, Grün und Blauwert identisch sind. Das ist dann sehr sehr wahrscheinlich, dass es sich um eine Weiße Seite mit sehr wenig Text handelt. In dem Fall schieße ich den Browser ab.
Auf den Displays läuft eine Dauerschleife, die den Browser startet, sobald er nicht mehr läuft…
so etwa: while true ; do chromium-browser… ; done

Hier der Skript-Fetzen für den Cron-Job:

#!/bin/bash

FILE=/tmp/screenshot.png
COLORTUPLE=$(DISPLAY=:0 import -window root -resize 400x300 $FILE ; convert $FILE -resize 1x1 -format “%[fx:int(255r+.5)],%[fx:int(255g+.5)],%[fx:int(255*b+.5)]” info:- ; rm $FILE)
R=$(echo $COLORTUPLE | cut -d “,” -f1)
G=$(echo $COLORTUPLE | cut -d “,” -f2)
B=$(echo $COLORTUPLE | cut -d “,” -f3)
if [ “$R” -eq “$G” -a “$R” -eq “$B” -a “$B” -eq “$G” ]
then
/usr/bin/killall chromium-browser
fi

LG Jesko

Warum nicht http://www.tabula.info???
Das macht alles ootb??!?

mag sein,… aber nicht so wie ich das haben will.
Ich kann meiner Verwaltung weder zumuten, PDFs zu erstellen, die auf das System hochgeladen werden, noch andere Dinge, die den Arbeitsablauf “stören”…
Mein System (klingt groß, ist aber nichts sonderliches) ist hingegen für die Schulleitung absolut selbsterklärend zu bedienen:

  • Stundenplan / Vertretungsplan / Raumpläne kommen direkt aus dem info-Stundenplan Modul von Untis. Keine zusätzlichen Schritte nötig.
  • WILMA (Wichtige Informationen Leserlich am Monitor Anzeigen) ist dafür zuständig, die Pinnwand zu entlasten. Dabei kann Schulleitung, Stellv.Schulleitung oder die Sekretärinnen in einem extra Kalender im Thunderbird (also da wo sie sowieso Termine etc eintragen) “Termine” eintragen, die dann solange sie aktuell sind auf dem Display angezeigt werden. Oder Sie erstellen Aufgaben, die dann dort angezeigt werden, wobei die Sortierung und Farbgebung von der Priorität abhängig sind.
    Schulungsaufwand = 0
  • INFO-Terminal: Raspi mit Maus und einer Seite, wo alle Infos (incl. persönlicher Vertretungsplan) schnell abrufbar sind und auch die Schulkonsole zur Verfügung steht, um “mal schnell” in Klassen einzutragen unter meiner “Aufsicht”

Alle Displays haben einen Raspi mit Raspbian, ein Autostart-Skript, was den chromium-browser im Kioskmode startet mit einer geeigneten Startseite. Die Dateisysteme sind ReadOnly, so dass Strom oder nicht Strom keine Bedeutung hat (außer der Funktionstüchtigkeit zu dem Moment natürlich).

Auf der WILMA läuft ein minütliches Python-Skript, welches die Verwaltungs-NextCloud abfragt und eine HTML-Seite generiert.

ist für mich leichter, besser geeignet als alles andere was ich bisher gesehen habe.
LG

Ah ja… unsere Verwaltung hat leider einen Windows-Terminal-Server, auf den ich keinen Zugriff habe(n will). Deshalb hängt im Verwaltungsnetz noch ein Raspi, der eine Samba-Freigabe hat, in die der Vertretungsplaner die Pläne exportiert… dieser Raspi schickt die dann per SSH auf die Displays.

Hi Jesko.
Bei Tabula müssen keine PDF Dateien erstellt werden. Ich lasse lediglich html Files exportieren und um den ganzen Rest kümmert sich das System :slight_smile:
Man kann auch PDF- und anderes hochladen. Auch der “Aufruf von Schülern” ist möglich…
Dein System klingt aber in der Tat auch interessant!! Vor allem WILMA klingt brauchbar für anzuzeigende Termine! Ist das ebenfalls anklickbar oder wird das “nur” auf einem Display in entsprechender Größe angezeigt??
Schönen Gruß
Michael