// Idee
2015 bin ich auf das Magic Mirror Projekt von Michael Teeuw, einem niederländischen Bastler, gestoßen. Schon damals war ich total fasziniert von seiner Idee: Ein (scheinbar) normaler Spiegel, in dem verschiedene Informationen in Textform angezeigt werden?! Total cool – dachte ich mir – irgendwann werde ich das selber mal versuchen zu bauen. Als ich dann zum Geburtstag eine Raspberry Pi geschenkt bekommen habe, war das die Gelegenheit, mich dem magischen Spiegel zu widmen.
Was ist ein Raspberry Pi? Im Prinzip ein Computer im Taschenformat. Er besteht lediglich aus einer Platine, auf der sich alle bekannten Komponente befinden (Prozessor, Arbeitsspeicher, Grafikkarte etc.). Natürlich ist er nicht so leistungsstark und wird deshalb für leistungsarme Anwendungen eingesetzt. Durch seine kleinen Abmessungen kann man ihn auch bei wenig Platz einsetzen. Mit einem Preis von etwa 40€ (neustes Modell) ist er zudem sehr günstig. Als Anschlussmöglichkeit bietet er 4x USB, 1x LAN, 1x HDMI und 1x 3.5mm Audioklinke. Als Festplatte dient eine MicroSD Karte, die Stromversorgung erfolgt über MicroUSB. Zur Drahtlosen Kommunikation ist Bluetooth und WLAN bereits verbaut.
// Vorbereitung
Die erste Frage, die man sich natürlich stellt ist: Wie kommt die Schrift auf den Spiegel? Im Prinzip besteht der Magic Mirror (MM) aus einem LCD-Bildschirm und einem sogenannten Spionspiegel. Diese Spiegelsorte findet auch in den Verhörräumen der Polizei Anwendung. Von der einen Seite wirkt das Glas wie ein normaler Spiegel und von der anderen Seite kann man durchschauen – vorausgesetzt, der Helligkeitsunterschied zwischen den beiden Räumen ist groß genug.
Die Aufgabe war es also einen solchen Spiegel zu bekommen, dazu einen passenden Rahmen, einen Bildschirm und die Software dahinter. Na gut – einiges zu tun!
// Umsetzung
#1 Software
Ich habe mit der Software angefangen. Auf dem Raspberry Pi habe ich Raspbian, eine Linux Distribution, installiert. Da ich noch nie mit Linux/Ubuntu gearbeitet habe, musste ich mich erstmal an die Bedienung über das Terminal gewöhnen. Der Raspberry Pi hat zwar eine normale grafische Oberfläche, wie man es von Mac/Windows auch kennt, die Bedienung erfolgt aber schneller und einfacher über das Terminal. Hier kann man mit unzähligen Befehlen alles machen, was man sonst über die Maus und Tastatur erledigt.
Der „Erfinder“ des MM, Michael Teeuw, hat seine Idee inzwischen weiterentwickelt und stellt kostenlos einige Module und Grundbausteine zur Verfügung. Diese sind schnell eingerichtet und funktionieren auch direkt – das ging erstmal schnell. Im Prinzip wird auf dem Bildschirm eine Website angezeigt, deren Aussehen man mit den Code-Schnippseln von Michael Teeuw anpassen kann. Zu den Grundbausteinen zählt u.a. eine Uhr und Kalender. Ich als Apple Fanatiker habe meinen Kalender eh über iCloud synchronisiert und somit lässt sich dieser relativ einfach auch auf dem Spiegel anzeigen. Natürlich wäre es zu einfach nur die eingebauten Module zu benutzen – wo bleibt da der Spaß 😀
Zunächst wollte ich aktuelle Nachrichten von Spiegel Online und Sportschau anzeigen. Dazu nutze ich die jeweiligen RSS-Feeds. Die Meldungen wechseln in einem festgelegten Intervall und aktualisieren sich automatisch.
Unter der Woche ist für mich morgens vor allem die aktuelle Wegzeit zur Uni in Stuttgart interessant. Dazu nutze ich eine Google Maps API, die mir anzeigt, wie lange die Fahrt mit dem Auto bei aktueller Verkehrslage dauert.
Um auch die GPIO Schnittstelle des Raspberry Pi zu nutzen habe ich einen Temperatursensor eingebaut, der alle paar Sekunden die Raumtemperatur misst und auf dem MM anzeigt. Als Sensor dient der häufig eingesetzte DS18b20, zudem benötigt man noch einen 3,7kOhm Widerstand und ein paar Kabel. Nachdem diese an den richtigen Stellen am Raspberry Pi eingesteckt sind, kann man per Terminal die Temperatur auslesen. Ein kleines PHP Skript macht das automatisch und sendet es an das MM Modul, sodass ich ab jetzt immer weiß, wie warm/kalt es ist.
Ein weiteres kleines Modul zeigt mir alle paar Stunden ein neues Zitat an. Ursprünglich lief es über die API einer Zitate-Website, leider haben die Betreiber das blockiert und so greift das Skript auf eine lokale JavaScript Datei zu, die verschiedene Zitate enthält. Neue Zitate müssen also manuell hinzugefügt werden.
Eins der sinnvollsten Module des MM ist die Darstellung des aktuelle Wetters und der Wettervorhersage für die nächsten Tage. Beides beziehe ich momentan noch über die OpenWeatherMap API, zwischendurch war der Unterschied zwischen tatsächlicher und angezeigter Temperatur jedoch recht groß, sodass ich die Quelle eventuell noch wechseln werde.
#2 Hardware
Der Code steht – soweit gut.
Die Anforderungen an den Bildschirm sind relativ speziell: - Möglichst dünn - Hohe Helligkeit - Gutes Kontrastverhältnis - USB-Eingang, um den Raspberry Pi mit Strom zu versorgen - Möglichst dünner Rahmen - Auflösung 1080p - HDMI Anschluss - Billig
Ein gebrauchter 27″ Bildschirm von AOC erfüllt alle Anforderungen oben. Durch einen defekten Pixel ist er deutlich günstiger als normal, was aber nicht stört, da ja eh nur ein kleiner Teil des Bildschirms benutzt wird und der Pixel außerhalb dieses Bereichs liegt. Zunächst muss der schöne, frisch erstandene Bildschirm auseinandergebaut werden, was doch ein bisschen weh tut. Nachdem der Rahmen entfernt ist, kommt das Innenleben zum Vorschein. Anscheinend war der Bildschirm schonmal in Reparatur, da das große Metallgehäuse nicht mehr auf die Bildschirmrückseite geklebt ist, sondern jetzt lose ist. Dank starkem Kleber ist das Gehäuse aber schnell wieder fest. Zudem habe ich das Gehäuse des Raspberry Pi an die obere Seite auf der Bilschirmrückseite geklebt. Dort wollte ich von außen durch ein Loch im Holzrahmen an die USB-Ports zugreifen, um im Nachhinein Änderungen an der Software vorzunehmen. Inzwischen habe ich eine bessere Möglichkeit gefunden (siehe unten) ohne zusätzliches Loch. Der LCD Bildschirm besitzt einen Power-USB Anschluss, der den Raspberry Pi mit ausreichend Strom versorgt.
#3 Spiegel
Den speziellen Spionspiegel zu besorgen war nicht ganz einfach. Er sollte einen guten Transmissionsgrad haben, sodass genügend Licht durch den Spiegel kommt, aber auch nicht zu viel, sodass die schwarzen Bereiche unsichtbar bleiben. Letztendlich wurde ich bei einer Glaserei in Stuttgart fündig.
#4 Rahmen
Den Holzrahmen für den Spiegel wollte ich selbst bauen. Nachdem ich ein schönes handliches (3m langes…) Stück Kiefernholz gefunden habe, musste ich es in eine L-Form bringen (siehe Skizze), sodass der Spiegel von vorne gehalten wird. Leider waren die Maße zu groß für eine normale Kreissäge und zudem musste der Zuschnitt sehr präzise sein. Die Schreinerei Kinkelin (die übrigens eine sehr schöne Website hat… 😉 ) hat mir die Einzelteile zugeschnitten. An den Ecken habe ich dann nochmal ein kleines Stück rausgesägt, sodass die Seitenteile an den Ecken ineinander übergehen. Um das Holz abzudunkel, habe ich es drei mal lasiert und anschließend noch an ein paar Stellen flambiert um es ein bisschen altern zu lassen.
#5 Abschluss
Am Ende noch alles zusammengesetzt, eine Wandhalterung angebracht, die Monitoreinstellungen für optimale Darstellung angepasst und voilá – da ist mein Magic Mirror! 😀 Damit ich trotzdem weiterhin auf den Raspberry Pi zugreifen kann, habe ich eine SSH Verbindung eingerichtet und einen Remote Desktop Client. Somit kann ich alles über meinen normalen Laptop steuern.
// Zukunft
In absehbarer Zeit will ich den MM mit einer Gesichtserkennung ausbauen, sodass der angezeigte Inhalt auf die Person davor abgestimmt wird. So sollen persönliche Informationen wie Kalender, Erinnerungen etc. nur erscheinen, wenn die entsprechende Person vor dem Spiegel steht. Bisher lässt die Präzision noch zu wünschen übrig, ist also noch ein ganzes Stück Arbeit.