MagicMirror – Finalisierung

Gestern konnte ich endlich mein MagicMirror Projekt (zum Grössten Teil) abschliessen. Nach dem ersten Versuch mit Spionspiegel Folie, habe ich Alternativen gesucht. Dazu startete ich zwei Anfragen bei Glasereien. Eine davon wurde bis heute leider nicht beantwortet, bei der zweiten habe ich eine Offerte für ein Spionspiegel aus Glas erhalten. Leider wäre der Spiegel ca 300.- CHF teuer gewesen, 6mm Dick und ca 2.7 Kg schwer. Das ist mir erstens zu teuer und auch von den Massen unpassend. Dann bin ich auf einen Acrylglas-Spiegel 2W gestossen, den ich über die Firma Kunststoffpark bestellen konnte. Preis inkl. Mwst und Versand waren etwas über 90.- CHF. Diesen Acryglas-Spiegel 2W kann ich empfehlen, wenn jemand ein ähnliches Projekt machen will. Den Spiegel habe ich auch schnell erhalten und konnte dann endlich mein MagicMirror fertigstellen.

Damit ich das Display im Spiegel ein- und ausschalten kann, habe ich via Banggood ein 250V Relais bestellt, welches über die GPIO Schnittstelle des Raspberry Pi angesteuert wird. Auch das ist nach etwa 2 Wochen eingetroffen. Mit Python habe ich einen kleinen Daemon geschrieben, der das Relais ansteuert (via SIGUSR1 und SIGUSR2 Signals). Weiter habe ich eine MQTT Schnittstelle in den  Daemon eingebaut, damit ich das Display auch Remote ein- und ausschalten kann. Damit ist nun auch ein produktiver Einsatz von  Node-Red. welches ich früher schon Mal erwähnt habe, möglilch. Via Node-Red Dashboard habe ich ein einfaches Dashboard erstellt, um das Display An- und Auszuschalten. 

Aktuell steuere ich das Display über einen MQTT Channel smartmirror/command an den ich ein JSON sende. Z.B. {„screen“:“on“} um einzuschalten oder {„status“:“get“} um den Status abzufragen. Beim Status Command wird auf dem Channel smartmirror/status den aktuellen Status via JSON ausgesendet. Das geschieht auch automatisch bei jedem Statuswechsel (von on zu off oder umgekehrt). Vermutlich werde ich diese Schnittstelle aber noch umbauen, ich muss mich noch schlau machen, was hier die gängigen Standards sind um IOT Geräte via MQTT zu steuern. Vermutlich werde ich es so umbauen, dass es nur einen Channel smartmirror/display/power gibt. In den Channel wird dann eine einfache 0 oder 1 gesendet um die Stromzufuhr zum Display zu steuern. Der gleiche Channel kann auch für die Status-Response verwenden werden.

Was noch fehlt, ist ein kleiner Push-Button am MagicMirror, um das Display auch ohne Dashboard Ein-und Auszuschalten. Aktuell habe ich ein via Cronjob getriggertes Script am laufen, um das Display zeitgesteuert Ein- und Auszuschalten (in der Nacht sowie ab spätem Morgen bis spätem Nachmittag läuft das Display z.B. nicht).

MagicMirror mit Wort Uhr in Berndeutsch

Kennt Ihr Magic Mirrors? Es gibt dazu einige spannende Projekte. Ich selbst hatte Lust, mal so einen zu bauen. Wie genau das geht, erkläre hier aber nicht, dazu gibt es viele gute Anleitungen (z.B. hier) und schliesslich kann man das auch auf viele verschiedene Arten tun. Nur die paar wichtigsten Infos aus meinem Projekt.

  • Ich hatte noch ein altes Raspberry Pi rumliegen, dass ich dafür verwendet habe. Als Betriebssystem kommt Raspian zum Einsatz. Als Software für die Anzeige habe ich MagicMirror genommen. Da ich aber nur die erste Generation vom Raspberry habe, musste ich die Backend Komponente von MagicMirror in einem Docker Container auf meinem Synology NAS laufen lassen. Auf dem Raspberry läuft dann nur ein Browser im Fullscreen Modus.
  • In Magic Mirror sind bereits viele coole Module vorhanden. zwei davon möchte ich aber speziell erwählen:
  • Links oben werden bei mir die Trams von einer Haltestelle hier in Bern angezeigt. Die Daten dazu werden von https://transport.opendata.ch/  zur verfügung gestellt. Dazu verwenden ich ein MagicMIrror Modul von Beny habe es aber ein wenig an meine Bedürfnisse angepasst. Unter anderem habe ich eine Funktion eingefügt, welche Trams (oder Züge) rot einfärbt, wenn es nicht mehr erreicht werden kann, da der Fussweg zulange ist (die Dauer lässt sich natürlich konfigurieren)
  • Als zweites habe ich eine Wort Uhr erstellt, welche die aktuelle Uhrzeit in Berndeutsch ausgibt. Auch diese könnt ich bei mir auf Github herunterladen wenn ihr selbst damit spielen wollt.

Leider fehlt aber noch der Spiegel um das Projekt zu beenden. Mein erster Versuch mit einer Spiegelfolie war leider nicht erfolgreich. Der Spiegeleffekt ist zu klein, es kommt zu viel Licht vom Display hindurch. Ausserdem ist es auch fast nicht möglich, die Folie sauber auf ein Plexiglas oder normales Glas aufzuziehen. Ich habe jetzt verschiedene Anfragen für ein sog. Spionspiegel bei Glasereien und einem Kunststoffhersteller offen und hoffe somit dem MagicMirror bald fertig zu stellen. Hat jemand aus der Schweiz bereits Erfahrungen damit gesammelt? Ich freue mich auf Kommentare dazu.