MagicMirror² Installation und Konfiguration – die wichtigsten Infos des Tages beim Blick in den Spiegel  

MagicMirror² Installation und Konfiguration – die wichtigsten Infos des Tages beim Blick in den Spiegel

Spiegel, die auf ihrer Oberfläche die wichtigsten Informationen für den bevorstehenden Tag anzeigen, sind seit 2016 für den engagierten Bastler ein anspruchsvolles, aber auch beliebtes Projekt. Dabei versteckt sich hinter dem Spiegelglas ein Computerdisplay, das gut lesbar Infos wie das aktuelle Wetter, Straßenverkehrsmeldungen, Nachrichten und vieles mehr anzeigen kann. In diesem Projekt beschreiben wir, wie Sie selbst einen Magic Mirror bauen können.

Vorüberlegungen zur Software

Der Bau und die Montage der Hardware ist weniger eine Herausforderung. Es müssen nur fertige Komponenten zusammengesteckt werden. Komplizierter sind die Installation und Konfiguration der Software. Auf die Software-Installation werden wir im Rahmen dieses Projekts ausführlich eingehen.

Da aber die Halbwertszeit der Informationen sehr gering ist, bitten wir um Verständnis, wenn nach ein paar Monaten die Informationen nicht mehr aktuell sind. Das ist auch der Grund dafür, dass nur das Raspberry PI OS über eine komplette Installationsroutine automatisiert zu installieren ist.

Dieses Projekt wurde mit dem Release MagicMirror² 2.12 durchgeführt. Mittlerweile gibt es ein neues Release, Version 2.13, das zum jetzigen Zeitpunkt jedoch noch nicht fehlerfrei funktioniert (Stand Oktober 2020), deshalb empfehlen wir Version 2.12, um einwandfreie Funktionalität und Kompatibilität zu gewährleisten.

Das Projekt

Geeignet für: Fortgeschrittene

Zeitaufwand: ca. 5 Stunden

Das wird benötigt:

  1. eDP LCD Display 7“
  2. eDP Controller 40 polig
  3. HDMI Kabel 0,25 m
  4. Raspberry PI 2B, alternativ auch die Nachfolgermodelle
  5. Funktastatur und Maus
  6. Für den Raspberry 2B USB-Wifi-Adapter
  7. 32 GB Micro SDHC Karte
  8. 12 V/1,5A Steckernetzteil
  9. 12 V -> 5 V Stepdown Wandler
  10. Bilderrahmen Ikea RIBBA 30 x 40cm
  11. Forexplatte 300 x 400 x 5 mm
  12. Spionspiegel 300 x 400 x 4 mm Fabrikat Mirrorpane Chrome Spy

Das brauchen Sie außerdem: Computer mit Internetverbindung, Laubsäge und Bohrer zur Bearbeitung der Trägerplatte

Budget: ca. 400 € (Spiegelglas und Display machen hier den Löwenanteil aus)

Planung des Aufbaus

Bevor man mit der Software-Konfiguration beginnt, sollte man die Hardware aufgebaut haben. Das schützt den Bastler davor, Fehler zu suchen, die keine sind, sondern sich als Wackelkontakte durch ein loses Wirrwar an Draht herausstellen. Endgültig zusammengebaut werden die Teile erst nach der Software-Konfiguration.

Man kann auch größere Spiegel bauen, ganz nach Belieben und Platz in der Wohnung. Dabei sollte jedoch beachtet werden: Ein größerer Rahmen erfordert auch ein entsprechend größeres Display.

Raspberry Installation

SD-Karten Imager

Raspberry empfiehlt den eigenen Imager zu verwenden, um das OS auf die SDHC Karte zu übertragen.

Den Imager findet man auf der Raspberry PI Seite: https://www.raspberrypi.org/downloads/

Hier können Sie den Imager für das passende OS herunterladen und auf einem Rechner mit SDHC-Karten-Slot installieren.

Raspian OS installieren

Von dieser Webseite können Sie das OS herunterladen: http://www.raspberrypi.org/downloads/raspberry-pi-os/

Laden Sie diese Version oder neuer herunter. Anschließend übertragen Sie das Image mittels des zuvor installierten Imagers auf die SDHC-Karte. Bauen Sie die SDHC-Karte nach dem Einspielen des OS in den Raspberry ein. Nun kann der Raspberry eingeschaltet werden. Die auf der SD-Karte befindliche Software bootet und startet den automatischen Installationsvorgang. Folgende Informationen sollten bereitgehalten werden:

  • SSID des Netzwerkes
  • Wifi-Passwort
  • Neues Passwort für den User „pi“.

Während des Installationsvorganges werden diverse Informationen abgefragt. Diese beziehen sich auf Einstellungen zur Sprache und zum Tastatur-Layout.

Nach Abschluss der Installation muss der Raspberry gebootet werden.

Raspian Anpassungen

Bevor man mit der Installation der Spiegel-Software beginnt, muss noch etwas Konfigurationsarbeit geleistet werden.

Bildschirmschoner deaktivieren

Die Standard-Installation der Raspian-Software schaltet das Display nach wenigen Minuten ab. Das ergibt für unser Projekt keinen Sinn. Die nachfolgenden Schritte sind durchzuführen:

  • Auf der Raspian-Oberfläche eine Terminal-Session öffnen.
  • Es zeigt sich dieser Terminal:
  • Dies eingeben:
sudo nano /etc/lightdm/lightdm.conf 
  • Am Ende der Datei Folgendes einfügen:
[SeatDefaults]
xserver-command=X -s 0 –dpms
  • Das sollte dann so aussehen:
  • Die Datei mit Strg+O abspeichern und mit Strg+X den Editor schließen.
  • Anschließend den Raspberry mit Sudo Shutdown –r 0  booten.
  • Danach ist das Display auf Dauerbetrieb geschaltet.

Eine weitere Stromsparfunktion des Raspian-OS ist die Abschaltung des WLAN-Adapters nach ca. 30 Minuten. Das hängt aber vom Adapter ab. Ob eine Aktion notwendig ist, kann man kontrollieren, indem man in einem Terminalfenster den Befehl: iwconfig eingibt. Sieht die Ausgabe wie in dem Screenshot aus, ist alles OK. Wenn nicht, muss man die Dokumentation des WLAN-Adapters zu Rate ziehen, um herauszufinden, wie das Powermanagement deaktiviert werden kann.

MagicMirror²-Software herunterladen und installieren

  • Auf der Raspian-Oberfläche eine Terminal-Session öffnen.
  • Herunterladen und installieren der neuesten npm-Software. Die nächsten beiden Schritte können bis zu 30 Minuten dauern. Zeitweise bewegt sich gar nichts auf dem Bildschirm. Also besser einen Kaffee trinken und Geduld haben.

Folgendes eingeben:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash – 
sudo apt install -y nodejs 
  • Herunterladen und installieren der MagiMirror²-Software, Version 2.12. Folgendes eingeben:
git clone https://github.com/MichMich/MagicMirror 
cd MagicMirror/ 
npm install 
  • Als erstes muss die Konfigurationsdatei gesichert werden.
cp config/config.js.sample config/config.js 
  • Dann kann die Software erstmalig gestartet werden.
npm run start 

Wenn bis hierher alle Schritte genau eingehalten wurden, sollte MagicMirror² starten. Es wird ein stark auf amerikanische Interessen ausgerichteter Bildschirm angezeigt, aber das kann man ändern. MagicMirror² wird über Module konfiguriert, mit einer sehr strengen Syntax, die dazu auch noch extrem unübersichtlich ist. Dazu später mehr. Da aber eines der Module einen ärgerlichen Fehler hat, muss man schon bevor man loslegt, einen Bugfix durchführen.

Bugfix Weatherforecast Modul

MagicMirror² bezieht seine Informationen für die Wettervorschau über die Webseite http://www.openweathermap.org. Das Modul hat einen Fehler und zeigt entweder gar nichts oder nur zwei Tage Wettervorschau an.

Man behebt das Problem folgendermaßen:

  • Auf der Raspian-Oberfläche eine Terminal-Session öffnen.
sudo nano MagicMirror/modules/default/weatherforecast/weatherforecast.js 
  • Dann die Zeile mit folgendem Inhalt löschen (Zeile 297 im Editor):
params += "&cnt=" + (this.config.maxNumberOfDays < 1 || this.config.maxNumberOfDays > 17 ? 7 : this.config.maxNumberOfDays); 
  • Anstelle der gelöschten Zeile folgendes eingeben:
params += "&cnt=" + (this.config.maxNumberOfDays < 1 || this.config.maxNumberOfDays > 5 ? 40 : this.config.maxNumberOfDays * 8);
  • Dann mit Strg+O speichern und mit Strg+X den Editor schließen.

Dieser Eintrag behebt das Problem und man bekommt die Wettervorhersage für sechs Tage angezeigt. Mehr ist mit der kostenlosen AppID von Openweather leider nicht möglich.

Prozessmanager installieren

Damit man die Spiegel-Software beim Starten des Raspberrys automatisch starten kann, muss ein Prozessmanager installiert werden. Der Entwickler der Spiegel-Software empfiehlt die Software PM2. Die vorbereitende Installation läuft wie folgt ab:

  • Auf der Raspian Oberfläche eine Terminal-Session öffnen. Folgendes eingeben:
sudo npm install -g pm2 
pm2 startup
  • Nun muss ein Eintrag in der Datei systemd erfolgen. Dies geschieht mit dem Befehl:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
  • Damit PM2 die MagicMirror² SW starten kann, wird ein Script benötigt.
cd ~
  • Mit Sudo nano mm.sh wird eine neue Datei erzeugt.
  • Die neue Datei erhält folgende Zeilen:
cd ./MagicMirror/
DISPLAY=:0 npm start
  • Dann mit Strg+O speichern und mit Strg+X den Editor schließen.
  • Mit chmod +x mm.sh die Datei zu einer ausführbaren Datei machen.
  • Mit pm2 start mm.sh kann MagicMirror² gestartet werden.
  • Damit dies auch beim Neustart des Raspberrys geschieht, gibt man noch pm2 save ein, um die Konfiguration dauerhaft zu speichern.

Diese Vorgehensweise führt aber dazu, dass man zunächst keine Eingaben mehr machen kann. MagicMirror² belegt den ganzen Bildschirm. Will man wieder an der Konfiguration arbeiten, kann man durch Drücken der „F11-Taste“ die Oberfläche erneut zugänglich machen.

Die vorbereitenden OS-Konfigurationen sind damit abgeschlossen. Jetzt kann man sich der Gestaltung des eigenen MagicMirror² Bildschirmes widmen.

Konfiguration der MagicMirror²-Module

Im Nachfolgenden wird die Konfiguration der MagicMirror²-Module beschrieben. Die Modultechnik wird dazu benutzt, die gewünschten Informationen auf dem Bildschirm zu platzieren und die Verbindung zu den teilweise externen Datenbanken zu halten. Es gibt eine extrem große Anzahl von Modulen, die von Teilnehmern in der Community beigesteuert wurden. Zehn Module sind bei der Standardinstallation von MagicMirror² schon vorhanden:

  • Alert                     
    • (Terminerinnerung)
  • Calendar              
    • (externer Terminkalender z.B. von Google)
  • Clock                     
    • (Digitaluhr oder Analoguhr mit Datum.)
  • Compliments      
    • (freundliche Sprüche aus einer externen Datenbank, wer es braucht J)
  • Current Weather
    • (Aktuelle Temperatur, Wind usw. für den gewählten Ort)
  • Hello World         
    • (Ausgabe eines freien Textes)
  • News Feed          
    • (Verbindung zu RSS-Feeds rund um die Welt)
  • Update Notification           
    • (automatische Mitteilung, wenn es neue MagicMirror² Software gibt)
  • Weather Module
    • (Läuft noch nicht zu 100% rund)
  • Weather Forecast              
    • (Wettervorschau für die nächsten 6 Tage am gewählten Ort)

Die Module werden alle mehr oder weniger ausführlich in der MagicMirror²-Dokumentation beschrieben. Die Lektüre dieser Dokumentation wird dringend empfohlen, bevor man anfängt in der zentralen Konfigurationsdatei Veränderungen vorzunehmen. Die Dokumentation befindet sich hier:
https://docs.magicmirror.builders/modules/introduction.html

Weitere Module findet man hier:
https://github.com/MichMich/MagicMirror/wiki/3rd-party-modules . Die Qualität der Module variiert stark: Manche funktionieren gar nicht, andere sind dagegen einwandfrei.

Die zentrale Konfigurationsdatei config.js, mit der die Module eingebunden werden, befindet sich im Ordner MagicMirror/config/. Sie kann mit dem Raspian eigenen Texteditor nano angepasst werden.

Aber Vorsicht: Der Aufbau der Datei ist extrem unübersichtlich und die dazu gehörenden Regeln sind nur etwas für Profiprogrammierer. Die einzige Fehlermeldung, die es gibt, ist ein grauer Bildschirm, der meldet, dass die config.js nicht vorhanden oder defekt sei – egal, ob nur ein Komma fehlt oder ein größerer Fehler passiert ist. Wer hier etwas ändern will, muss sehr sorgfältig arbeiten.

Screenshot oben: Beispiel der Fehlermeldung

Aufbau config.js

Die Datei besteht aus zwei Hauptbereichen „var config“ und „modules“. Groß-/Kleinschreibung ist für alle Einträge zu beachten, ansonsten gibt es den grauen Fehlerbildschirm. Auch ist die Anordnung der Klammern und Kommas entscheidend. Passiert hier ein Fehler, gibt es ebenfalls den grauen Fehlerbildschirm. Da es keine Hinweise gibt, wo der Fehler genau liegt, ist eine Fehlersuche sehr kompliziert. Am besten lädt man in dem Fall die Sicherungskopie zurück und beginnt von vorne.

Unsere config.js ist gegenüber der Originaldatei auf deutsche Inhalte umkonfiguriert. Die Datei kann hier heruntergeladen werden.

Der Inhalt: ARD RSS Feed, Text-Uhr, aktuelles Wetter, Wettervorschau, Spritpreise.

Es ist eine gute Hilfe, die config.js mit einem Editor zu bearbeiten, der das Klammer- und Komma-Chaos optisch unterstützt. Eine gute Option ist der RJ TextEd, den es hier kostenlos gibt: http://www.rj-texted.se.
Dafür muss die config.js vom Raspberry per FTP heruntergeladen werden und nach getaner Arbeit wieder per FTP zurückgespielt werden. Das kann man mit dem RJ TextEd erledigen, der auch SFTP unterstützt. Aus Erfahrung ist das der sicherere Weg und vermeidet jede Menge Fehler, die mit dem Raspian-Editor nano leicht passieren.

Bildschirm Aufteilung

Mit der Anweisung „position“ wird das Modul auf dem Bildschirm positioniert. Wie welche Position angesteuert wird, kann man der nachfolgenden Tabelle entnehmen.

Erklärung Modul currentweather

Am Beispiel des currentweather-Moduls wollen wir den Aufbau eines Moduleintrages erklären. Das currentweather-Modul zeigt die aktuelle Temperatur und weitere Wetterinformationen für einen bestimmten Ort an. Für den Datenabruf benötigt man eine App-ID. Es gibt eine kostenlose App-ID mit eingeschränkter Funktionalität. Die ID erhält man nach Anmeldung bei http://www.openweathermap.org.

Die locationID kann man in der Datei http://bulk.openweathermap.org/sample/city.list.json.gz finden.

Nach dem Herunterladen und Entpacken ist das Ergebnis die Datei „city.list.json“. Dann kann man mit einem Editor die Datei öffnen und nach dem gewünschten Ort suchen. Vorsicht: Die Datei ist sehr groß. Notepad oder ähnliche leichtgewichtige Editoren schaffen es nicht sie zu öffnen. Der schon erwähnte RJ TextEd hat hier jedoch keine Probleme. So sieht die Fundstelle aus:

{
        "id": 2807748,		// Das ist die locationID
        "name": "Winterhude",	// Das ist die location sprich der Ort
        "state": "",
        "country": "DE",
        "coord": {
            "lon": 10.0,		// Dezimal Koordinaten
            "lat": 53.599998
        }
},

Nachfolgend der Aufbau des Modules currentweather inklusive der Bedeutung der Klammern und Kommas.

{					// Startklammer. Damit startet jeder Modul Eintrag.
	module: "currentweather",		// Modulname. Jeder nachfolgende Eintrag wird mit einem Komma abgeschlossen.
	position: "bottom_right",		// Position des Modules. Oben rechts.
	header: "Aktuell",			// Erzeugt eine durchgezogene Linie mit dem Text Aktuell über den Infos.
	config: {				// Startklammer Parameterbereich. Achtung ohne Komma!
		location: "Winterhude",	// Ortsname. Wieder mit Komma
		locationID: "2807748", 	// ID aus city.list.json
		appid: "9ca9a06c67e88f863e106fdb532c5af9"	// Letzter Eintrag. Achtung endet ohne Komma!
}					// Stopklammer des Config Bereiches.
	},				// Stopklammer des Modules mit Komma.

Auch hier muss wieder sehr sorgfältig gearbeitet werden, um kein Komma und keine Klammer zu übersehen und einen grauen Fehlerbildschirm zu vermeiden.

Die Software-Konfiguration erfordert etwas Erfahrung im Umgang mit Linux- und Javascript-Programmierung. Komplette Anfänger benötigen am Anfang etwas Geduld und den Willen, sich einzuarbeiten. Man sollte sich zunächst an die zehn Standardmodule halten, denn diese funktionieren weitestgehend. Hat man verstanden, wie alles zusammenhängt, kann man sich an die externen Module wagen. Wie schon gesagt, gibt es hier auch einige, die nicht funktionstüchtig sind.

Finaler Zusammenbau

Hat man alle Hürden der Software-Konfiguration überwunden, kann man sich dem finalen Zusammenbau des Spiegels widmen.

Montageplatte

Es empfiehlt sich, alle elektronischen Komponenten auf einer Montageplatte zu montieren. Sie kann aus Sperrholz sein oder wie in diesem Fall aus weißem Forex (Schaum PVC).

Der Aufbau von hinten: Von links Raspberry 2B, Stepdown Wandler, eDP Controller, oberhalb des Displays.
Nicht lackierte Front.

Bevor man die Elektronik montiert, muss die Vorderseite schwarz lackiert werden. Wir haben einen 1K-Lack aus der Spraydose verwendet, der sehr gut deckte und das PVC nicht angriff. Fabrikat: edding Permanent Spray tiefschwarz matt 200 ml Premium Acryllack, RAL 9005.

Endmontage

Als nächstes wird der IKEA Ribba (40 x 30 cm) Bilderrahmen entkernt. Es kommt alles raus, bis auf den Holzrahmen. Dann kommt der gut geputzte Spiegel als unterste Lage in den Rahmen. Die Spiegelseite natürlich nach außen. Darauf wird die lackierte Montageplatte gelegt und alles mit den Original-Bilderklemmen fixiert. Wer möchte, kann noch kleine Buchenholzleisten zur Fixierung einkleben.

Um die Elektronik vor zu starker Erwärmung zu schützen, bleibt der Rahmen hinten offen. Das erspart den Einbau eines Lüfters. Soll der Spiegel in einem Bad montiert werden, so sollte er zum Schutz vor Feuchtigkeit hinten verschlossen werden. Hierzu kann man die originale PE-Scheibe des Rahmens verwenden. In diesem Falle muss man aber für eine ausreichende Durchlüftung des Rahmens sorgen (Lüftungslöcher).

Das Ergebnis überzeugt: Hält man sich vor allem an die Konfigurationsanleitung, ist der Spiegel, inklusive der Trocknungszeit des Lackes (30 Min.), in fünf Stunden zusammengebaut. Auch wenn Aufbau und Installation etwas Erfahrung und Geduld brauchen, ist es ein interessantes Projekt, das viele Möglichkeiten zur Personalisierung bietet.

Ein paar Bilder zum Abschluss.

 

Was denken Sie zu diesem Thema? Schreiben Sie einen Kommentar:

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.