Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:infoboard:infoboard-lubuntu]] 

Ein digitales Infobrett

Idee

Unsere Schule erstellt Vertretungspläne mit Untis. Da wir mehrere Gebäudeteile haben und unser Vertretungsplaner nicht mehr allmorgentlich rundlaufen möchte, habe ich damals ein System zusammengestrickt, diese Vertretungspläne möglichst ohne große Veränderungen für die Planer auf Monitoren darzustellen.

Ein erstes System hat die JPEG-Funktionalität des freien PDF-Creator genutzt, um automatisch neben der Papierausgabe auch eine JPEG-Datei zu erzeugen. Diese wurden automatisch auf einem eigenen Samba-Vertretungsplanverzeichnis gespeichert. Dieses ist auf allen Rechnern im Schulnetz als nur-lesbares Laufwerk eingebunden.

Auf vorhandenen leinen Rechnern haben wir ein Lubuntu installiert und den Ordner ebenfalls eingebunden. Nach der automatischen Anmeldung startet ein kleines Skript, welches in vordefinierten Zeitintervallen die JPEG-Dateien vom Server in ein lokales Verzeichnis auf eine Datei kopiert (und ggf. überschreibt). Der Bildbetrachter pqiv ist so eingestellt, dass er diese Datei im Vollbild darstellt. Schön dabei: ändert sich das Bild, aktualisiert pqiv die Anzeige automatisch.

Das derzeitige System

Irgendwann trat das Schülerfernsehen mit dem Wunsch an mich heran, ihre Filme über die Vertretungsbildschirme schauen zu können. Daraufhin habe ich mich noch einmal an das Skript gesetzt und es „verfeinert“. Die Steuerung, was gerade auf dem vertretungsplan angezeigt wird, wird serverseitig über die Datei .job gesteuert. Derzeit mögliche Inhalte dieser Datei sind:

  • jpeg - die bisherige Funktionalität. Das Skript spielt als Diashow alle Bilder ab, die im Unterordner jpeg des Vertretungsplanungs-Bildschirms liegen
  • html - unter html wird die Datei heute.html aufgerufen. Die Erweiterung ScrollyFox scrollt automatisch ab- und wieder aufwärts, die Erweiterung Default FullZoom Level vergrößert die Anzeige automatisch auf Bildschirmbreite. In der Datei steht, ob/wie oft die Seite aktualisiert wird bzw. wohin diese Seite weitergeleitet (redirect) wird.
  • film - mit Hilfe des Abspielers mplayer wird der Film aktuell.flv im Unterverzeichnis film abgespielt (und ggf. wiederholt)

Über die Zahl in der Datei .wait wird die Zeit gesteuert, die die Wartezeit zwischen zwei JPEG-Bildern bzw. die Zeit, bis die HTML-Datei erneuert/weitergeleitet wird, eingestellt

Die Hardware

Dank Linbo hat man innerhalb kürzester Zeit ein komplettes Vertretungsplan-Modul zusammengebaut. Dafür benötigt man:

  • einen kleinen Rechner, der im Schulnetz registriert und in die entsprechende Gruppe eingebunden ist
  • einen Bildschirm, der idealerweise per kurzem DVI angeschlossen ist
  • 2x Strom
  • 1x Netzwerk

Bisher getestete Hardware

  • Lenovo IdeaCentre Q1501)
  • Lenovo IdeaCentre Q1802)
  • Lenovo IdeaCentre Q1903)

Das Cloop-Image

Kernstück des Systems ist ein gebrauchsfertiges Cloop-Image:

  • Lubuntu 12.10
  • Auto-Login als Benutzer dsb
  • Energiesparen abgeschaltet
  • SSH- und VNC-Zugang
  • Firefox mit ScrollyFox und AutoZoom
  • MPlayer samt Codecs (flv-Videos)
  • pqiv als Bildbetrachter

Das Image ist derzeit gepackt ca. 650 MB groß (sicher noch optimierbar) und kann hier heruntergeladen werden. Dazu hier die passende start.conf.dsb.

Wie beim Linuxmuster-Client ist das Passwort auf lolo4711 gesetzt.

Achtung: das Cloop ist auf genau einem Typ Rechner genau 2 Tage getestet worden. Ich nenne es deswegen mal „Beta“.

Serverseitige Anpassungen/Skripte

Auf dem Server (oder wie bei uns einem NAS) liegen die Verzeichnisse, in denen die anzuzeigenden Daten liegen:

  • \\<nas>\vplans\.job
  • \\<nas>\vplans\.wait
  • \\<nas>\vplans\jpeg\*.jpeg
  • \\<nas>\vplans\html\heute.html (und innerhalb dieser Datei verlinkte weitere Dateien)
  • \\<nas>\vplans\film\aktuell.flv

ToDo: Skript, welches die erzeugten Untis-HTML-Sätze in eine einigermaßen ansehnliche HTML-Datei für den aktuellen bzw. den Folgetag bringt und an die richtige Stelle kopiert.

Ein „Umstellen“ des Vertretungsplans erfolgt jetzt z.B. über ein

echo film > .job

Nach einem kurzen Moment beginnen alle Vertretungsplanbildschirme, den Film (in einer Schleife) abzuspielen. Ein

echo jpeg > .job

beendet den Film und schaltet zurück auf die Photo-Wiedergabe. Ändert man durch ein

echo 14 > .wait

die Pause zwischen den Bildern, wird nach jedem Durchlauf die Wartezeit neu gesetzt, so dass man mit den Kollegen am Bildschirm eine angenehme Frequenz ausprobieren kann.

Clientseitige Anpassungen/Skripte

Anzupassen sind für den Benutzer lediglich

  • die fstab (wo die Adressen und die Zugangsdaten für die Samba-Verzeichnisse liegen)
  • ggf. die Passwörter des Benutzers dsb (und das Passwort des VNC-Servers unter vino-preferences)

Auf dem Client laufen zwei Skripte. Das erste läuft im Hintergrund und überwacht im wesentlichen die Datei .job. Dieses Skript startet/beendet die jeweils (nicht) benötigten Programme. Es entscheidet anhand der IP, ob es sich um den Schüler- oder Lehrer-Vertretungsplan handelt.

#/bin/bash

# Aufräumen/(Offline-)Standardhintergrund
rm ~/Bilder/*
cp ~/standard.jpg ~/Bilder/0.jpg

# entscheiden, ob lehrer- oder schüler-vplan -> VZ
case $(hostname) in
dsb0[0-9])
  # Schüler-Rechner
  vz=/mnt/vplans
  ;;
dsb1[0-9])
  # Lehrer-Rechner
  vz=/mnt/vplanl
  ;;
*)
  # unbekannte IP - das war wohl nix
  exit 1
  ;;
esac

# starte "Dauerschleife" und prüfe .job
while true; do
  # die Job-Datei wurde gefunden
  if [ -e "$vz/.job" ]; then
    # was machen wir heute?
    case $(cat $vz/.job) in
    "jpeg")
      # andere Abspieler löschen
        # andere Abspieler löschen
        if [ $(pgrep -c -f 'firefox') -eq 1 ]; then pkill -f 'firefox'; fi
        if [ $(pgrep -c -f 'mplayer') -eq 1 ]; then pkill -f 'mplayer'; fi
        # starte JPEG-Skript
        if [ $(pgrep -c -f 'sh vplan_jpeg') -eq 0 ]; then 
          sh vplan_jpeg $vz &
        fi
      ;;
    "html")
        # andere Abspieler löschen
        if [ $(pgrep -c -f 'mplayer') -eq 1 ]; then pkill -f 'mplayer'; fi
        if [ $(pgrep -c -f 'sh vplan_jpeg') -eq 1 ]; then pkill -f 'sh vplan_jpeg'; fi
        if [ $(pgrep -c -f 'pqiv') -eq 1 ]; then pkill -f 'pqiv'; fi
        # HTML-Datei aufrufen
        if [ $(pgrep -c -f 'firefox') -eq 0 ]; then 
          firefox $vz/html/heute.html &
        fi
      ;;
    "film")
        # andere Abspieler löschen
        if [ $(pgrep -c -f 'sh vplan_jpeg') -eq 1 ]; then pkill -f 'sh vplan_jpeg'; fi
        if [ $(pgrep -c -f 'pqiv') -eq 1 ]; then pkill -f 'pqiv'; fi
        if [ $(pgrep -c -f 'firefox') -eq 1 ]; then pkill -f 'firefox'; fi
        # Film abspielen
        if [ $(pgrep -c -f 'mplayer') -eq 0 ]; then 
          mplayer -volume 100 -loop 0 -fs $vz/film/aktuell.flv &
        fi
      ;;
    *)
        # ALLE Abspieler löschen
        if [ $(pgrep -c -f 'sh vplan_jpeg') -eq 1 ]; then pkill -f 'sh vplan_jpeg'; fi
        if [ $(pgrep -c -f 'pqiv') -eq 1 ]; then pkill -f 'pqiv'; fi
        if [ $(pgrep -c -f 'firefox') -eq 1 ]; then pkill -f 'firefox'; fi
        if [ $(pgrep -c -f 'mplayer') -eq 1 ]; then pkill -f 'mplayer'; fi
      ;;
    esac
  fi
done

Das zweite Skript ist das „Diashow-Skript“. Es kopiert die JPEGs vom Server in das lokale Verzeichnis Bilder und spielt diese ab. Der Übergabeparameter gibt das Grundverzeichnis an, welches angezeigt wird (wir unterscheiden hier die Mountpoints für das Lehrer- und Schülerverzeichnis).

#/bin/bash
vz=$1

# wandere durch die Bilder
while true; do
  for i in $vz/jpeg/*.jpg; do
    # ggf. JPEG-Skript (neu) starten
    if [ $(pgrep -c -f 'pqiv') -eq 0 ]; then 
      pqiv -i -f -w ~/Bilder/0.jpg &
    fi
    cp "$i" ~/Bilder/0.jpg;
    echo $i ;
    # Wartezeit auslesen und warten
    wartezeit=$(cat $vz/.wait)
    sleep $wartezeit;
  done;
done
1) , 2) , 3)
Die Lenovo-Rechner laufen per HDMI-Kabel einwandfrei. Beim Anschluss über VGA war der Kernel-Parameter nomodeset bei den Linux-Kernelparametern in der start.conf notwendig.
 [[anwenderwiki:infoboard:infoboard-lubuntu]] anwenderwiki/infoboard/infoboard-lubuntu.txt · Zuletzt geändert: 2014/01/13 18:09 (Externe Bearbeitung)