# Hello sexy - wenn der Badschrank einen aufbaut...

# Was braucht man dazu denn eigentlich?

Einen Platz zum Aufhängen... Spiegel, Schrank mit verspiegelter Front, etc.

Der Trick hier ist allerdings, dass der bestehende Spiegel ab muss und dieser dann durch einen sogenannten venezianischen Spiegel oder auch: Spionspiegel ersetzt wird. Durch den kann nämlich dann das Licht des Displays durchscheinen und damit das Bild anzeigen.

Man kann die Software MagicMirror entweder direkt und komplett auf einem Raspberry Pi laufen lassen (fand aber dass mein Pi 4 dafür zu schade ist) oder man lässt die Serverkomponente einfach in einem Dockercontainer laufen. Natürlich braucht man dann noch etwas zum Anzeigen/Steuern des Monitors oder des Displays, den man verbaut. Ich habe mich zu Docker und einem kleinen Raspberry Pi Zero W 2 entschieden. Habe gehofft, dass der stark genug ist, um so eine Webseite anzeigen zu lassen - weil mehr ist es ja eigentlich nicht.

Nun - ich hatte keinen gescheiten Monitor, den ich in seine Einzelteile zerlegen kann - also habe ich mir ein Display (hier: ein LP173WD1) und einen Display Controller dafür (achte auf Pins (30 oder 40) u die Auflösung) bestellt. Bei Ebay gibt's das zusammen für ca. 60 Euro. Venetianischer Spiegel auf Maß - auch nochmal 60 Euro.

Ein Universal 12V Netzteil mit Hohlstecker für den Display Controller (13-14 Euro)

Da nur den Badschrank zu ersetzen vielleicht doof ausgesehen hätte und die Badmöbel ja sowieso sooooo abgenutzt aussehen hat meine Lieblingsehefrau den dringenden Vorschlag eingereicht auch gleich die anderen Schränke mitzuersetzen. Und ein höriger Ehemann tut das dann. Wir in den Skonto SB und in den Höffner gefahren und eingekauft (wobei wir echt nen Schnapp gemacht haben...)

So sieht Magic Mirror aus:

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/hkzimage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/hkzimage.png)

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/UrBimage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/UrBimage.png)

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/K2himage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/K2himage.png)

Jetzt musste erst mal der Spiegel vom neuen Schränkchen ab - habe da ja keine Verwendung für. Aber wie: YouTube sagt - mit einem Plastikband, was normalerweise um Pakete ist kann man das absägen. Klingt komisch - hat aber ausgezeichnet funktioniert.

Viel Kleber war nicht drauf und war schnell befreit. Mit einem Ceranfeldschaber habe ich dann die Reste entfernt.

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/Hs5image.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/Hs5image.png)

Pi Zero, Display-Controller

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/mazimage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/mazimage.png)

# Software

**Konfiguration im Docker-Container**

version: '3'

services:  
 magicmirror:  
 container\_name: mm\_sven  
 image: karsten13/magicmirror:latest  
 ports:  
\- "8080:8080"  
 volumes:  
\- /mnt/synology\_docker/mm\_sven/config:/opt/magic\_mirror/config  
\- /mnt/synology\_docker/mm\_sven/modules:/opt/magic\_mirror/modules  
\- /mnt/synology\_docker/mm\_sven/css:/opt/magic\_mirror/css

 restart: unless-stopped  
 command:   
\- npm  
\- run  
\- server

 networks:  
 default:  
 ipv4\_address: IP der MagicMirror App

networks:  
 default:  
 name: macvlan  
 external: true

**Konfiguration des Raspberry Pi Zero**

Zuerst habe ich versucht bei dem Raspberry Pi Zero das Standard-Raspberry-Image zu installieren und ihn dazu zu bringen die MagicMirror-Webseite bei Systemstart zu öffnen. Totaler Fehlschlag - das Teil ist einfach zu schwach. Gottseidank habe ich ein anderes Betriebssystem gefunden, was genau das tut, was ich brauche. Chili-PI. Nun - hab ich zuerst zumindest gedacht...

Links zum Image und zur Chili-Pi-Anleitung

[https://github.com/jareware/chilipie-kiosk/releases/download/v3.0.0-rc4/chilipie-kiosk-3.0.0-rc4.img.tar.gz](https://github.com/jareware/chilipie-kiosk/releases/download/v3.0.0-rc4/chilipie-kiosk-3.0.0-rc4.img.tar.gz)  
[https://github.com/jareware/chilipie-kiosk/blob/master/docs/first-boot.md](https://github.com/jareware/chilipie-kiosk/blob/master/docs/first-boot.md)

Erst mal mit ctrl+alt +F2 in den Raspi-Config-Modus und hier SSH aktivieren, Wifi aktivieren, Speicherplatz zuweisen und so weiter. Den Pi kann man dann mit sudo apt-get update / sudo apt-get upgrade auf den neuesten Stand bringen.  
  
Da das Display hochkant eingebaut worden ist, muss die Anzeige noch gedreht werden. In der Anleitung steht zwar etwas anderes - aber bei mir hat das gereicht.

sudo nano /etc/X11/Xsession.d/45x11-rotate\_screen  
DISPLAY=:0 xrandr --output HDMI-1 --rotate left

Was allerdings nicht funktioniert hat ist das umschalten auf andere Webseiten (z.B. einen zweiten MagicMirror Container oder eine andere Webseite.

Dann bin ich aber noch über eine andere Distribution gestolpert: FullPageOS - die sollte das gleiche machen. Also mal ausprobiert..

FullPageOS

**Setzen der URL**  
sudo nano /boot/fullpageos.txt

Hier einfach z.b. [http://magicmirror.streb.home:8080](http://magicmirror.streb.home:8080) eintragen

**Drehen des Bildschirms, da er hochkant eingebaut ist** sudo nano /etc/X11/Xsession.d/45x11-rotate\_screen  
DISPLAY=:0 xrandr --output HDMI-1 --rotate left # das dreht das Display 3x mit dem Uhrzeigersinn  
DISPLAY=:0 xset s off &amp;&amp; xset -dpms # damit power savings vom Controller ausgeschaltet wird

**WLAN Power Mode abschalten**  
sudo iwconfig wlan0 power off

**Bildschirm "dunkel" machen**  
xrandr --output HDMI-1 --off - das schaltet aber HDMI komplett ab und der Bildschirm wird halt blau - also besser:

sudo nano /home/pi/skripts/display-off.sh  
export DISPLAY=:0 # um das Display auszuwählen  
xrandr --output HDMI-1 --brightness 0.0 # um die Helligkeit auf 0 zu setzen

sudo nano /home/pi/skripts/display-on.sh # um das Display auszuwählen  
xrandr --output HDMI-1 --brightness 1.0 # um die Helligkeit auf 100% zu setzen

-&gt; dreht also nur die Helligkeit auf 0, aber schaltet HDMI nicht ab.

weitere Skripte im Verzeichnis:  
fullscreen (drückt F11)  
reload\_fullpageos\_txt (schießt den Task ab und läd neu)  
refresh (läd die Seite neu - man braucht aber manchmal einen F11 um wieder in Fullscreen zu kommen)  
... und noch ein paar andere, die ich noch nicht ausprobiert habe.

**Konfiguration vom ioBroker**

Auf IOBroker das Simple-SSH Modul installieren

-&gt; npm install simple-ssh

der IObroker bekommt 2 Dateien angelegt… eine Spiegel\_aus.js und eine Spiegel\_an.js (unter /opt/SpiegelScript)

Beispiel Spiegel\_aus.js (analog dazu eine Spiegel\_an.js erstellen)

var SSH = require('simple-ssh');  
var ssh = new SSH({  
 host: 'raspi-bad.streb.home',  
 user: 'pi',  
 pass: 'tollespasswort'  
});

 ssh.exec('/home/pi/skripts/display-off.sh',{  
 out: function(stdout) {  
 console.log(stdout);  
 }  
}).start();

Zur Erläuterung:  
Das soll über einen Bewegungssensor im ioBroker geschaltet werden - das Display soll ja nicht den ganzen Tag an sein, sondern nur, wenn jemand im Bad rumstromert.

Das simple-SSH Modul was da installiert wurde plus die zwei .js Skripte befähigen den ioBroker dazu sich auf dem Pi anzumelden und das lokale display-off/on Skript auszuführen.

Testweise habe ich den Pi an nen Monitor gehangen und das Ausführen des Skripts an meinen Bewegungsmelder im Büro gebunden (die exec Bausteine). Klappt prima.

Blocky-Baustein:

Wenn sich das Objekt Motion ändert, dann schau mal  
... wenn es sich auf true ändert, dann führe das eine Skript aus  
... wenn es sich auf false ändert (Dauer konfigurierbar auf dem Bewegungsmelder), dann führe das andere Skript aus

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-02/scaled-1680-/image.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-02/image.png)

Der Spiegel soll aber auch unsere Kameras anzeigen - doofer weise ist der Pi Zero etwas schwach, um das konstant zu schaffen - aber es reicht ja auch wenn er immer mal ein Foto anzeigt um zu sehen, wie das Wetter draußen ist.

Da der Browser aber auch nicht direkt auf die Snapshot-Funktion der Reolink-Kameras zugreifen kann habe ich ein kleines .sh-Skript geschrieben (get URL und crontab -e), um alle 5 Minuten die letzten Screenshot der Kameras herunterzuladen. Das Modul MMM-ImagesPhotos von MagicMirror zeigt die jetzt nacheinander an.

Um das aber noch aufm PI hinzubekommen braucht der auch einen "Refresh", damit die Webseite neu geladen wird (auch ein .sh-Skript - ./refresh.sh &amp;&amp; sleep 10 &amp;&amp; ./fullscreen).. der Refresh bringt den Browser ausm Fullscreen, also bekommt er noch den Tastendruck F11 verpasst, um wieder reinzugehen...

# Zusammen bzw. Einbau

Sooo. Jetzt erst mal das Schränkchen bis auf die zukünftige MagicMirror-Tür zusammenbauen

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/eoIimage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/eoIimage.png)

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/rmhimage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/rmhimage.png)

Tür ausgeschnitten u die Komponenten hinten rein - Wenn der Spiegel da ist wird der mit Silikon vorne aufgeklebt und die Gerätschaften dann mit Heißkleber fixiert. Zu guter letzt kommt dann noch ein Stück einer Schrankrückwand da drauf, um Streulicht abzuhalten.

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/VCmimage.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/VCmimage.png)

Das einzige Kabel, was durchgeführt werden muss - 12V Stromkabel - und das geht von da direkt in die Tür (vielleicht noch die Rückseite mit einer dünnen Platte oder Schrankrückwand verschließen.

[![image.png](https://bookstack.streb.biz/uploads/images/gallery/2024-01/scaled-1680-/zX7image.png)](https://bookstack.streb.biz/uploads/images/gallery/2024-01/zX7image.png)

Das gebrauchte Display hat zwar einen Pixel-Fehler - aber da das meiste des Screens eh schwarz ist sieht man den nicht.

[![20240203_171826259_iOS.jpg](https://bookstack.streb.biz/uploads/images/gallery/2024-02/scaled-1680-/20240203-171826259-ios.jpg)](https://bookstack.streb.biz/uploads/images/gallery/2024-02/20240203-171826259-ios.jpg)