Skip to content

Twitter-Wall als Kiosk mit Raspberry-Pi im Eduroam

Linux Diese kleinen Himbeerkuchen-Boxen sind ja schon faszinierend. Preislich wie ein abendlicher Restaurantbesuch zu zweit und von der Größe eine Zigarettenschachtel können sie alles was ein kleiner PC so können muss. Natürlich läuft Linux, besser gesagt eine spezielle Version von Debian, darauf.

Für ein Event in der Universität wurde nun eine Twiiter-Wall gewünscht, damit man auf einer großen Glotze gucken kann was alles gerade so von den Besuchern gezwitschert wird. Der Raspi bringt alles was gebraucht wird dafür schon mit, also vor allem HDMI für die großen Displays und einen WLAN-Dongle für den Internet-Zugang, in diesem Fall zum Eduroam.

Für meine Erläuterung wie man so ein Setup konfiguriert setze ich mal voraus, dass man einen potenten Raspi (also mindestens Version 2) samt Speicherkarte (in meinem Fall eine von Samsung mit 8 GB aus der Grabbelkiste) hat und mit die einfache Installation des Rasbian-Images mit dem Win32-Disk-Imager-Tool hinter sich gebracht hat.

Anschließend kann man sich auf dem Raspi mit "pi" und "raspberry" einloggen und mit "sudo su" Root-Rechte holen um alles auf der Shell zu konfigurieren. Als erstes mache ich immer ein "apt-get update && apt-get upgrade" um das System auf den neuesten Stand zu bringen.

Um das WLAN für Eduroam zu konfigurieren stellt meine Uni die passenden Datein für Linux zur Verfügung. Die "wpa_supplicant.conf" kommt nach "/etc/wpa_supplicant/" und das Telekom-Root-Zertifikat kommt einfach nach "/home/pi/".

Danach muss man die Zugangsdaten anpassen und beim nächsten Start kann man beobachten wie das WLAN verbindet. Wenn man kein Eduroam verwendet ist alles viel einfacher und kann mit dem Dialog auf der grafischen Oberfläche von Rasbian Jessie erledigt werden.

Als Browser für den Kiosk-Mode (also Fullscreen ohne Bedienelemente) habe ich Midora gewählt und mit "apt-get install midora" nachinstalliert. Gestartet wird der Browser dann mit einem kleinen Skript das bei mir "kiosk.sh" heisst und so aussieht:
#!/bin/sh
sleep 20
midori -e Fullscreen -a http://dkg2015.tweetwally.com/projection


Tweetwally ist eine Website von vielen die eine soganannte Tweet-Wall bereitstellt, also Tweet zu einem bestimmten Hashtag sammelt, die angegebene Seite aktualisiert sich dann automatisch. Das ist soweit also sehr einfach, die 20 Sekunden Pause sind dafür da um abzuwarten dass die Internetverbindung auch aufgebaut ist.

Etwas trickreicher ist dann schon die Änderung der grafischen Oberfläche, hier daher der Inhalt meine Datei "/home/pi/.config/lxsession/LXDE-pi/autostart":
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@sh ${HOME}/.config/lxsession/LXDE-pi/autokey.sh
@xset s off
@xset -dpms
@xset s noblank
@sh /home/pi/kiosk.sh


Dabei wird auch der Bildschirmschoner abgeschaltet, denn niemand wird an einer Raspi-Box ohne Tastatur und Maus mehr eine Taste drücken oder die Maus bewegen können. Nach dem nächsten Start sollte sich die Internet-Verbindung aufbauen (kann man durch die Visualisierung erkennen) und der Brower mit der Tweetwall gestartet.

Rolle rückwärts mit den Clubs

Geocaching Vor knapp 12 Jahren ging es los: Zwei heute immer noch aktive Internet-Foren wurden von mir installiert. Eins von beiden, der Linux-Club, startete ziemlich schnell durch.

Das andere, der Geoclub, damals noch Geocache-Forum genannt, wuchs etwas langsamer, dafür aber viel gewaltiger. So gewaltig, dass zu den Spitzenzeiten um 2010 herum ein dedizierter Server angeschafft und kurz später noch mal upgegradet werden musste.

Mittlerweile hat die Kannibalisierung des Internets (die Großen fressen die Kleinen) hier auch zugeschlagen, Foren werden den Weg der vergessenen Newsgroups gehen und die Kommunikation sich immer mehr auf Fratzenbuchgruppen und andere soziale Medien verlagern.

So lange die Einnahmen aus den Werbebannern noch die Ausgaben für Domains und Server überstiegen konnte mir das alles recht egal sein. Seit einiger Zeit ist das nicht mehr so, und das obwohl ich schon knapp einhundert Domains gekündigt habe, die sich im Laufe der Zeit so angesammelt haben.

Auch die immer notwendig werdenden Adblocker (deren Verwendung ich völlig verstehen kann!) tragen ihren Teil dazu bei. Das ist für mich alles völlig in Ordnung und war absehbar, es wird aber Zeit wieder abzurüsten und aufzuräumen mit all den kleinen Projekten und Domains.

Ab August wird also von dem was ich bisher online hatte nicht mehr viel übrig bleiben: Neben diesem Blog hier vermutlich nur noch der Linux-Club, die grüne Hölle und die Linupedia. Die Podcast-Episoden des Cachertalk versuche ich hier im Blog unterzubringen. Während des Umzugs gibt es Statusmeldungen auf Twitter von mir.

Koordinaten umrechnen in R

Geocaching Vor knapp 10 Jahren (also in Computerzeitrechnung vor einer Ewigkeit) habe ich hier Excel-Tabellen gezeigt um Koordinaten zwischen verschiedenen Bezugssystemen umrechnen zu können.

In der letzten Zeit musste ich mich viel mit R beschäftigen. R erlebt derzeit eine immense Verbreitung, es ist eine einfache Programmiersprache die viel für Statistik verwendet wird. Man kann damit beachtliche Datenmengen umrechnen und analysieren. Eine große Sammlung an Packages mit denen die Sprache für den jeweiligen Zweck erweitert wird ermöglicht unter anderem auch das Rechnen mit Koordinaten.

Wie schön und einfach das geht kann ich hier an einem Beispiel aus der grünen Hölle zeigen. Zunächst einmal verwenden wir die Bibliotheken "sp" für räumliche Objekte und "geospehere" für geodätische Hauptaufgaben auf dem Ellipsoid.

library("sp")
library("geosphere")


Anschließend machen wir zwei Vektoren für die beiden Koordinaten, die in unterschiedlichen UTM-Zonen vorliegen, und erzeugen sogenannte SpatialPoints daraus:

a=cbind(710482,5654109)
ap=SpatialPoints(a, CRS("+proj=utm +zone=32"))
b=cbind(289511,5654098)
bp=SpatialPoints(b, CRS("+proj=utm +zone=33"))


Hier könnten es auch ganz andere Koordinaten sein, also z.B. Gauß-Krüger oder Soldner, das muss dann nur bei der Erzeugung der SpatialPoints angegeben werden. Die Umrechnung in ein gemeinsames Bezugssystem ist nun äußerst einfach und mit je einem Befehl erledigt:

ae=spTransform(ap, CRS("+proj=longlat +ellps=WGS84"))
be=spTransform(bp, CRS("+proj=longlat +ellps=WGS84"))


Dabei wäre auch die Angabe der beliebten EPSG-Codes möglich (also in diesem Fall EPSG:4326). Für alle die sich mit Geocaching beschäftigen: Das sind die Koordinaten so wie sie dort verwendet werden, also Länger und Breite auf dem Ellipsoid.

Danach kann man sehr einfach mit diesem Koordinaten rechnen, also z.B. den Abstand und den Richtungswinkel:

d=distVincentyEllipsoid(ae,be)
print(d)
b=bearing(ae,be)
print(b)


Auch die bei Geocachern beliebte Waypoint-Projektion (die eher ein polares Anhängen ist) kann man so einfach durchführen.
tweetbackcheck