{"id":7552,"date":"2022-04-06T21:12:30","date_gmt":"2022-04-06T19:12:30","guid":{"rendered":"https:\/\/www.commander1024.de\/wordpress\/?p=7552"},"modified":"2024-01-19T20:05:26","modified_gmt":"2024-01-19T19:05:26","slug":"magicmirror%c2%b2-auf-dem-smart-mirror","status":"publish","type":"post","link":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/","title":{"rendered":"MagicMirror\u00b2 auf dem Smart Mirror"},"content":{"rendered":"\n<p class=\"has-drop-cap\">Dies ist ein Follow-up zu meinem Artikel \u00fcber die <a href=\"https:\/\/www.commander1024.de\/wordpress\/2018\/11\/smart-mirror-selbst-bauen\/\" target=\"_blank\" rel=\"noreferrer noopener\">Smart Mirror Software<\/a>. Ich hatte <a href=\"https:\/\/magicmirror.builders\/\" target=\"_blank\" rel=\"noreferrer noopener\">die Software<\/a> MagicMirror\u00b2 seinerzeit schon erw\u00e4hnt, hatte allerdings auf mirr.os gesetzt. mirr.os bot einen schnelleren Start, da die ganze Distribution nur auf eine SD-Karte geflasht werden muss. Allerdings wurde es mit der Zeit leider immer langsamer und st\u00fcrzt regelm\u00e4\u00dfig ab. Au\u00dferdem hat es nie so richtig gut mit dem Nextcloud-Kalender zusammengearbeitet. Im Gegensatz zu mirr.os versteht sich MagicMirror\u00b2 eher als Software, die auf einem OS wie Raspbian \/ Raspberry Pi OS installiert wird. Ferner setzt es deutlich st\u00e4rker auf Config-Dateien denn auf ein Webinterface zur Konfiguration. Was beide gemein haben ist, dass im Endeffekt beide eine Chrome-Engine via electron bzw. nodejs ausf\u00fchren. <\/p> \n\n\n\n<h2 class=\"wp-block-heading\">Voraussetzungen<\/h2>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 15%\"><div class=\"wp-block-media-text__content\">\n <p> Ich beschreibe in diesem Artikel den Aufbau der Software auf dem Raspberry Pi (3B+). Urspr\u00fcnglich hatte ich einen Raspberry Pi Zero (1st gen) im Einsatz. Mittlerweile empfehlen beide Projekte allerdings mindestens einen Pi 2. Wie ich meinen Badezimmerspiegelschrank umgebaut habe, habe ich in <a href=\"https:\/\/www.commander1024.de\/wordpress\/2018\/12\/spiegelschranktuer-ersetzen\/\" target=\"_blank\" rel=\"noreferrer noopener\">diesem Artikel<\/a> abgehandelt. <\/p> \n\n\n\n <p> Da ich mich verst\u00e4ndlicherweise nicht mit dem Notebook ins Bad stellen will, hab ich einen Pi 3 in ein Geh\u00e4use mit Touchscreen gesetzt. So kann ich den MagicMirror\u00b2 und die Module direkt am Schreibtisch testen, bzw. kontrollieren. <\/p> \n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"600\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-329x600.jpg\" alt=\"MagicMirror2 auf der Entwicklungsplattform\" class=\"wp-image-7565 size-medium\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-329x600.jpg 329w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-658x1200.jpg 658w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-164x300.jpg 164w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-768x1401.jpg 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-842x1536.jpg 842w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-1123x2048.jpg 1123w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2022\/04\/Entwicklungsplattform-scaled.jpg 1403w\" sizes=\"auto, (max-width: 329px) 100vw, 329px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Installation von MagicMirror\u00b2 auf Raspberry Pi OS<\/h2>\n\n\n\n <p> Die Dokumentation des Projekts ist ziemlich gut, daher werde ich sie hier nicht wiederk\u00e4uen, sondern lediglich darauf <a href=\"https:\/\/docs.magicmirror.builders\/getting-started\/installation.html\" target=\"_blank\" rel=\"noreferrer noopener\">verweisen<\/a>. Da der electron app wrapper eine grafische Anwendung ist, sollte man ein volles Raspberry Pi OS Image aufgespielt haben. Also keine Lite Variante. Ob 32 oder 64 bit ist egal. Ich habe 64 bit gew\u00e4hlt. Es gibt eine &#8222;automatische&#8220; Installation, die ein Script direkt in die Shell pipen will &#8211; was immer eine schlechte Idee ist. Siehe <a href=\"https:\/\/hackme.sh\" target=\"_blank\" rel=\"noreferrer noopener\">hackme.sh<\/a>. Daher bin ich den Weg der manuellen Installation gegangen. <\/p> \n\n\n\n <p> Ist die Installation vollzogen, kann man die Software wie folgt von der CLI starten. Das geht auch wenn man per SSH verbunden ist. <\/p> \n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">npm run start<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Aktualisierung<\/h3>\n\n\n\n <p> Die Doku weist explizit darauf hin, vor einem Update <code>config.js<\/code>,&nbsp;<code>custom.css<\/code>&nbsp;and&nbsp;<code>modules<\/code>, zu sichern und das Update wie folgt anzusto\u00dfen. <\/p> \n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">git pull &amp;&amp; npm install --only=prod --omit=dev<\/code><\/span><\/pre>\n\n\n <p> Die Config und Module sind im git repo in der Ignorierliste gef\u00fchrt, solange man also nur hier \u00c4nderungen vornimmt, sollte es keine git-Konflikte geben. Ansonsten k\u00f6nnte man sie mit <code>git reset --hard<\/code> zur\u00fccksetzen &#8211; was dann nat\u00fcrlich die eigenen \u00c4nderungen r\u00fcckg\u00e4ngig macht. <\/p> \n\n\n\n<h3 class=\"wp-block-heading\">Initialkonfiguration<\/h3>\n\n\n\n <p> Im Zuge der Installation wird eine default config.js kopiert, die man nun anpassen sollte. Insbesondere die Sprache und das Datums- und Zeitformat sollte man den eigenen Vorlieben anpassen. <code>port<\/code>, <code>address<\/code> und <code>ipWhitelist<\/code> sind f\u00fcr eine autarke Installation (ohne weitere Clients) gut vorkonfiguriert. <\/p> \n\n\n\n<h3 class=\"wp-block-heading\">MagicMirror\u00b2 Autostart einrichten<\/h3>\n\n\n\n <p> Hier habe ich mich ebenfalls voll an die <a href=\"https:\/\/docs.magicmirror.builders\/configuration\/autostart.html#using-pm2\" target=\"_blank\" rel=\"noreferrer noopener\">Dokumentation<\/a> gehalten und pm2 nachinstalliert und konfiguriert wie dort beschrieben. <\/p> \n\n\n\n<h3 class=\"wp-block-heading\">Raspberry Pi spezifische Anpassungen<\/h3>\n\n\n\n <p> Von all den im <a href=\"https:\/\/github.com\/MichMich\/MagicMirror\/wiki\/Configuring-the-Raspberry-Pi\" target=\"_blank\" rel=\"noreferrer noopener\">Wiki<\/a> erw\u00e4hnten Pi-spezifischen Anpassungen brauchte ich tats\u00e4chlich nur die ersten 2. N\u00e4mlich die Aktivierung des OpenGL Treibers und die Displayroation mittels <code>xrandr<\/code> um 90\u00b0, da mein Display hochkant im Spiegel eingebaut ist. <\/p> \n\n\n\n <p> Ich bin mir gar nicht 100% sicher, ob der OpenGL-Treiber nicht schon aktiv war, trotzdem sollte man das kontrollieren, da auch die Displayrotation nur mit diesem funktioniert. Dazu muss in der <code>\/boot\/config.txt<\/code> folgende Zeile stehen: <\/p> \n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">dtoverlay=vc4-kms-v3d<\/code><\/span><\/pre>\n\n\n <p> F\u00fcr die Displayrotation muss die Datei <code>~\/.config\/lxsession\/LXDE-pi\/autostart<\/code> editieren und folgende Zeile hinzuf\u00fcgen. <\/p> \n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-keyword\">@xrandr<\/span> --output HDMI-<span class=\"hljs-number\">1<\/span> --rotate right<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Modulkonfiguration und Installation zus\u00e4tzlicher Module<\/h2>\n\n\n\n <p> Jetzt komme ich eigentlich erst zum wirklich interessanten Teil. Dem Platzieren und Konfigurieren der Module. MagicMirror\u00b2 kommt mit zwei Handvoll <code>default<\/code> Modulen, alle weiteren m\u00fcssen nachinstalliert werden. Zumeist wird hier ein weiteres, projektspezifisches git Repository in <code>modules\/<\/code> entspackt und in der <code>config\/config.js<\/code> eingebunden. Abh\u00e4ngigkeiten installiert man im Modulverzeichnis durch ein <code>npm install<\/code> nach. <\/p> \n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"600\" src=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-338x600.png\" alt=\"MagicMirror\u00b2 Screenshot\" class=\"wp-image-8445\" srcset=\"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-338x600.png 338w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-675x1200.png 675w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-169x300.png 169w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-768x1365.png 768w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-864x1536.png 864w, https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2.png 900w\" sizes=\"auto, (max-width: 338px) 100vw, 338px\" \/><\/a><figcaption class=\"wp-element-caption\">MagicMirror\u00b2 Screenshot mit einigen default und einigen 3rd party Modulen.<\/figcaption><\/figure>\n<\/div>\n\n\n <p> Neben einigen default Modulen verwende ich derzeit diese hier: <\/p> \n\n\n\n <p> <a href=\"https:\/\/github.com\/fewieden\/MMM-Fuel\">https:\/\/github.com\/fewieden\/MMM-Fuel<\/a> <\/p> \n\n\n\n <p> <a href=\"https:\/\/github.com\/leinich\/MMM-homeassistant-sensors\">https:\/\/github.com\/leinich\/MMM-homeassistant-sensors<\/a> <\/p> \n\n\n\n <p> <a href=\"https:\/\/github.com\/frdteknikelektro\/MMM-SimpleLogo\">https:\/\/github.com\/frdteknikelektro\/MMM-SimpleLogo<\/a> <\/p> \n\n\n\n <p> Die Konfigurationsdatei ist gut kommentiert und leicht lesbar. Allerdings kann man relativ einfach Fehler in  die strikte Stuktur mit den Klammern einbauen, deswegen lege ich sie hier komplett ab. So kann man sich die Passagen rauskopieren, die man \u00fcbernehmen m\u00f6chte. <\/p> \n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-code-table shcb-line-numbers\"><span class='shcb-loc'><span><span class=\"hljs-comment\">\/* Magic Mirror Config Sample<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> * By Michael Teeuw https:\/\/michaelteeuw.nl<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> * MIT Licensed.<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> * For more information on how you can configure this file<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> * see https:\/\/docs.magicmirror.builders\/getting-started\/configuration.html#general<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> * and https:\/\/docs.magicmirror.builders\/modules\/configuration.html<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">let<\/span> config = {\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">address<\/span>: <span class=\"hljs-string\">\"localhost\"<\/span>, \t<span class=\"hljs-comment\">\/\/ Address to listen on, can be:<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t<span class=\"hljs-comment\">\/\/ - \"localhost\", \"127.0.0.1\", \"::1\" to listen on loopback interface<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t<span class=\"hljs-comment\">\/\/ - another specific IPv4\/6 to listen on a specific interface<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t<span class=\"hljs-comment\">\/\/ - \"0.0.0.0\", \"::\" to listen on any interface<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t<span class=\"hljs-comment\">\/\/ Default, when address config is left out or empty, is \"localhost\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">port<\/span>: <span class=\"hljs-number\">8080<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">basePath<\/span>: <span class=\"hljs-string\">\"\/\"<\/span>, \t<span class=\"hljs-comment\">\/\/ The URL path where MagicMirror is hosted. If you are using a Reverse proxy<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t<span class=\"hljs-comment\">\/\/ you must set the sub path here. basePath must end with a \/<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">ipWhitelist<\/span>: &#91;<span class=\"hljs-string\">\"127.0.0.1\"<\/span>, <span class=\"hljs-string\">\"::ffff:127.0.0.1\"<\/span>, <span class=\"hljs-string\">\"::1\"<\/span>], \t<span class=\"hljs-comment\">\/\/ Set &#91;] to allow all IP addresses<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/address: &#91; \"localhost\", \"0.0.0.0\", \"::\" ],<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/ipWhitelist: &#91;],\t<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-comment\">\/\/ or add a specific IPv4 of 192.168.1.5 :<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-comment\">\/\/ &#91;\"127.0.0.1\", \"::ffff:127.0.0.1\", \"::1\", \"::ffff:192.168.1.5\"],<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-comment\">\/\/ or IPv4 range of 192.168.3.0 --&gt; 192.168.3.15 use CIDR format :<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-comment\">\/\/ &#91;\"127.0.0.1\", \"::ffff:127.0.0.1\", \"::1\", \"::ffff:192.168.3.0\/28\"],<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">useHttps<\/span>: <span class=\"hljs-literal\">false<\/span>, \t\t<span class=\"hljs-comment\">\/\/ Support HTTPS or not, default \"false\" will use HTTP<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">httpsPrivateKey<\/span>: <span class=\"hljs-string\">\"\"<\/span>, \t<span class=\"hljs-comment\">\/\/ HTTPS private key path, only require when useHttps is true<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">httpsCertificate<\/span>: <span class=\"hljs-string\">\"\"<\/span>, \t<span class=\"hljs-comment\">\/\/ HTTPS Certificate path, only require when useHttps is true<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">language<\/span>: <span class=\"hljs-string\">\"de\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">locale<\/span>: <span class=\"hljs-string\">\"de-DE\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">logLevel<\/span>: &#91;<span class=\"hljs-string\">\"INFO\"<\/span>, <span class=\"hljs-string\">\"LOG\"<\/span>, <span class=\"hljs-string\">\"WARN\"<\/span>, <span class=\"hljs-string\">\"ERROR\"<\/span>], <span class=\"hljs-comment\">\/\/ Add \"DEBUG\" for even more logging<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">timeFormat<\/span>: <span class=\"hljs-number\">24<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">units<\/span>: <span class=\"hljs-string\">\"metric\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/ serverOnly:  true\/false\/\"local\" ,<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/ local for armv6l processors, default<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/   starts serveronly and then starts chrome browser<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/ false, default for all NON-armv6l devices<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-comment\">\/\/ true, force serveronly mode, because you want to.. no UI on this device<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">modules<\/span>: &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"alert\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"updatenotification\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"top_bar\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"clock\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"top_left\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">'MMM-SimpleLogo'<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">'top_center'<\/span>,   <span class=\"hljs-comment\">\/\/ This can be any of the regions.<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-comment\">\/\/ The config property is optional.<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-comment\">\/\/ See 'Configuration options' for more information.<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-comment\">\/\/ defaults to logo.png in modules\/MMM-SimpleLogo\/public\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">text<\/span>: <span class=\"hljs-string\">\"\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"center\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">width<\/span>: <span class=\"hljs-string\">\"150px\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"calendar\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">header<\/span>: <span class=\"hljs-string\">\"Termine\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">wrapEvents<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">wrapLocationEvents<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"top_left\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">showLocation<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">calendars<\/span>: &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">symbol<\/span>: <span class=\"hljs-string\">\"home\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">url<\/span>: <span class=\"hljs-string\">\"https:\/\/cloud.foo.de\/remote.php\/dav\/calendars\/bar\/private?export\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">user<\/span>: <span class=\"hljs-string\">\"user\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">pass<\/span>: <span class=\"hljs-string\">\"pass\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">method<\/span>: <span class=\"hljs-string\">\"basic\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">symbol<\/span>: <span class=\"hljs-string\">\"industry\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">url<\/span>: <span class=\"hljs-string\">\"https:\/\/owa.foo.de\/owa\/calendar\/456354636735673\/calendar.ics\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"weather\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"top_right\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">weatherProvider<\/span>: <span class=\"hljs-string\">\"openweathermap\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">type<\/span>: <span class=\"hljs-string\">\"current\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">location<\/span>: <span class=\"hljs-string\">\"M\u00fcnster\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">locationID<\/span>: <span class=\"hljs-string\">\"2867543\"<\/span>, <span class=\"hljs-comment\">\/\/ID from http:\/\/bulk.openweathermap.org\/sample\/city.list.json.gz; unzip the gz file and find your city<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">apiKey<\/span>: <span class=\"hljs-string\">\"api_key\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"weather\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"top_right\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">weatherProvider<\/span>: <span class=\"hljs-string\">\"openweathermap\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">type<\/span>: <span class=\"hljs-string\">\"forecast\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">location<\/span>: <span class=\"hljs-string\">\"M\u00fcnster\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">locationID<\/span>: <span class=\"hljs-string\">\"2867543\"<\/span>, <span class=\"hljs-comment\">\/\/ID from http:\/\/bulk.openweathermap.org\/sample\/city.list.json.gz; unzip the gz file and find your city<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">apiKey<\/span>: <span class=\"hljs-string\">\"api_key\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"compliments\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"lower_third\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">remoteFile<\/span>: <span class=\"hljs-string\">\"..\/..\/..\/config\/compliments_de.json\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"newsfeed\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"bottom_bar\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">feeds<\/span>: &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">title<\/span>: <span class=\"hljs-string\">\"Westf\u00e4lische Nachrichten\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">url<\/span>: <span class=\"hljs-string\">\"https:\/\/www.wn.de\/rss\/feed\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">title<\/span>: <span class=\"hljs-string\">\"golem.de\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">url<\/span>: <span class=\"hljs-string\">\"https:\/\/rss.golem.de\/rss.php?feed=ATOM1.0\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t],\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">showSourceTitle<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">showPublishDate<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">broadcastNewsFeeds<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">broadcastNewsUpdates<\/span>: <span class=\"hljs-literal\">true<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">\"MMM-Fuel\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">header<\/span>: <span class=\"hljs-string\">\"Tankstellen\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">\"bottom_right\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">shortenText<\/span>: <span class=\"hljs-string\">\"25\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">showOpenOnly<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">api_key<\/span>: <span class=\"hljs-string\">\"api_key\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">lat<\/span>: <span class=\"hljs-number\">51.9293805<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">lng<\/span>: <span class=\"hljs-number\">7.6819101<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">types<\/span>: &#91;<span class=\"hljs-string\">\"diesel\"<\/span>],\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">module<\/span>: <span class=\"hljs-string\">'MMM-homeassistant-sensors'<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">position<\/span>: <span class=\"hljs-string\">'bottom_left'<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t<span class=\"hljs-attr\">config<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">host<\/span>: <span class=\"hljs-string\">\"ha_ip_or_fqdn\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">port<\/span>: <span class=\"hljs-string\">\"443\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">https<\/span>: <span class=\"hljs-literal\">true<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">token<\/span>: <span class=\"hljs-string\">\"long_lived_api_token\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">updateInterval<\/span>: <span class=\"hljs-number\">10000<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">prettyName<\/span>: <span class=\"hljs-literal\">false<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">stripName<\/span>: <span class=\"hljs-literal\">false<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">debuglogging<\/span>: <span class=\"hljs-literal\">false<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t<span class=\"hljs-attr\">values<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.temperatur_aussen\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-comment\">\/\/alertThreshold: 50,<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"thermometer\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.luftfeuchtigkeit_aussen\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"water-percent\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.line_power_total\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">\"Strom gesamt\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">altertThreshold<\/span>: <span class=\"hljs-number\">2500<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"flash\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.speedtest_ping\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-string\">\"Internetlatenz\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">alertThreshold<\/span>: <span class=\"hljs-number\">100<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"speedometer\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.internet_speed_in\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"cloud-download\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.internet_speed_out\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"cloud-upload\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.luftdruck\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"gauge\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"switch.badezimmer_ventilator\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"state_off\"<\/span>: <span class=\"hljs-string\">\"fan-off\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"state_on\"<\/span>: <span class=\"hljs-string\">\"fan\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.badezimmer_temperatur\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"thermometer\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}, {\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">sensor<\/span>: <span class=\"hljs-string\">\"sensor.badezimmer_luftfeuchtigkeit\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">alertThreshold<\/span>: <span class=\"hljs-number\">50<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t<span class=\"hljs-attr\">icons<\/span>: &#91;{\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t\t<span class=\"hljs-string\">\"default\"<\/span>: <span class=\"hljs-string\">\"water-percent\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t]\n<\/span><\/span><span class='shcb-loc'><span>\t\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\t},\n<\/span><\/span><span class='shcb-loc'><span>\t]\n<\/span><\/span><span class='shcb-loc'><span>};\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/*************** DO NOT EDIT THE LINE BELOW ***************\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">typeof<\/span> <span class=\"hljs-built_in\">module<\/span> !== <span class=\"hljs-string\">\"undefined\"<\/span>) {<span class=\"hljs-built_in\">module<\/span>.exports = config;}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n <p> F\u00fcr das prominent platzierte compliments Modul habe ich eine relativ umfangreiche Sammlung an Spr\u00fcchen zusammengestellt. Als Grundlage hierzu diente <a href=\"https:\/\/michadenheijer.github.io\/MagicMirrorCompliments\/\" target=\"_blank\" rel=\"noreferrer noopener\">diese Seite<\/a> und die <a href=\"https:\/\/docs.magicmirror.builders\/modules\/compliments.html#configuration-options\" target=\"_blank\" rel=\"noreferrer noopener\">Dokumentation<\/a>. Diese compliments_de.json habe ich im ebenfalls im <code>config<\/code>-Verzeichnis abgelegt. <\/p> \n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JSON \/ JSON mit Kommentaren\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-code-table shcb-line-numbers\"><span class='shcb-loc'><span>{\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"anytime\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Du siehst heute gro\u00dfartig aus!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Heute ist ein gro\u00dfartiger Tag!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Du machst den Unterschied!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Ein wundersch\u00f6nes L\u00e4cheln, f\u00fcr einen wundersch\u00f6nen Tag\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Schaust du noch immer in den Spiegel?\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Du siehst wieder toll aus.\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"L\u00e4chle! Du kannst sie nicht alle t\u00f6ten\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Die Zone ruft Dich, Stalker.\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        ],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"morning\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Dein Haar ist mega heute!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Beginne den Tag mit einem L\u00e4cheln\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Das wird ein sch\u00f6ner Tag!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Ist der Tag nicht gro\u00dfartig?\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Mach dich bereit f\u00fcr einen gro\u00dfartigen Tag!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Dein Bart sieht klasse aus!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Erst mal einen leckeren Kaffee :-)\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>        ],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"afternoon\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Mache noch schnell deine Arbeit fertig ...\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Nachmittag, nicht Morgen, nicht Mittag\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Dieser Tag ist gro\u00dfartig\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Bergfest!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Beinahe Abendessenszeit!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Zieh Dir doch noch einen Kaffe...\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        ],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"evening\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Nur noch ein paar Sachen erledigen ...\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Guten Apetit\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Yeah, Freizeit\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Schon zu Abend gegessen?\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Du hast den Tag \u00fcberlebt.\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"M\u00f6chtest Du einen Spaziergang machen?\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Hacken oder Faulenzen? Das ist die Frage\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Hast Du Dich heute schon genug bewegt?\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Komm, g\u00f6nn Dir ein k\u00fchles Blondes\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        ],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"....-01-01\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Frohes Neues Jahr!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Und wieder ein Jahr rum...\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        ],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"....-01-21\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Herzlichen Gl\u00fcckwunsch zum Geburtstag!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Schon wieder ein Jahr \u00e4lter\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Du alter Sack! Und kein St\u00fcck weiser...\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        ],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"day_sunny\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-string\">\"Sonnenschein!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Heute wird ein sonniger Tag\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Ein perfekter Tag f\u00fcr dieses 'drau\u00dfen'\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Genie\u00df das Wetter, Sonnenschein\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t],\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-attr\">\"snow\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Zeit f\u00fcr eine Schneematschschlacht\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Pass auf im Verkehr, es k\u00f6nnte glatt sein\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Es schneit, es schneit, kommt alle aus dem Haus...\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t],\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">\"rain\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Vergiss Deinen Regenschirm nicht\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-string\">\"Hoffentlich musst Du heute nicht raus\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t],\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">\"showers\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Was ein Schietwetter\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Hoffentlich musst Du heute nicht vor die T\u00fcr...\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t],\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">\"thunderstorm\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Hoffentlich musst Du heute nicht raus...\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Auf dass Dich der Blitz nicht beim Schei\u00dfen treffen m\u00f6ge!\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Ungem\u00fctliches Wetter drau\u00dfen\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t],\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-attr\">\"night_clear\"<\/span> : &#91;\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Lass doch mal Deine Augen gen Himmel wandern\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Du k\u00f6nntest die Sterne beobachten\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Hast Du eine Sternschnuppe gesehen?\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>\t        <span class=\"hljs-string\">\"Halt doch mal nach der ISS Ausschau\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        ]\n<\/span><\/span><span class='shcb-loc'><span>}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON mit Kommentaren<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":" <p> Dies ist ein Follow-up zu meinem Artikel \u00fcber die Smart Mirror Software. Ich hatte die Software MagicMirror\u00b2 seinerzeit schon erw\u00e4hnt, hatte allerdings auf mirr.os gesetzt. mirr.os bot einen schnelleren Start, da die ganze Distribution nur auf eine SD-Karte geflasht werden muss. Allerdings wurde es mit der Zeit leider immer langsamer und st\u00fcrzt regelm\u00e4\u00dfig ab. Au\u00dferdem&hellip; <\/p> \n","protected":false},"author":1,"featured_media":8446,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[474,6,333],"tags":[561,401,435,433],"class_list":["post-7552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-do-it-yourself","category-hardware","category-heimautomatisierung","tag-magicmirror","tag-raspberry-pi","tag-smart-home","tag-smartmirror","comments-open","no-comments"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MagicMirror\u00b2 auf dem Smart Mirror &#8211; Commander1024<\/title>\n<meta name=\"description\" content=\"Ich tausche die Software auf dem Smart Mirror durch MagicMirror\u00b2 aus und zeige, wie sie installiert, konfiguriert und erweitert wird.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror\u00b2-auf-dem-smart-mirror\/\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcus Scholz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/\"},\"author\":{\"name\":\"Marcus Scholz\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\"},\"headline\":\"MagicMirror\u00b2 auf dem Smart Mirror\",\"datePublished\":\"2022-04-06T19:12:30+00:00\",\"dateModified\":\"2024-01-19T19:05:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/\"},\"wordCount\":714,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\"},\"image\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/MagicMirror2-hero-scaled.jpg\",\"keywords\":[\"MagicMirror\u00b2\",\"Raspberry Pi\",\"Smart Home\",\"SmartMirror\"],\"articleSection\":[\"Do-It-Yourself\",\"Hardware\",\"Heimautomatisierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/\",\"name\":\"MagicMirror\u00b2 auf dem Smart Mirror &#8211; Commander1024\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/MagicMirror2-hero-scaled.jpg\",\"datePublished\":\"2022-04-06T19:12:30+00:00\",\"dateModified\":\"2024-01-19T19:05:26+00:00\",\"description\":\"Ich tausche die Software auf dem Smart Mirror durch MagicMirror\u00b2 aus und zeige, wie sie installiert, konfiguriert und erweitert wird.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/MagicMirror2-hero-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/MagicMirror2-hero-scaled.jpg\",\"width\":2560,\"height\":948,\"caption\":\"MagicMirror\u00b2 im Badezimmer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/2022\\\/04\\\/magicmirror%c2%b2-auf-dem-smart-mirror\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MagicMirror\u00b2 auf dem Smart Mirror\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/\",\"name\":\"Dem Commander1024 sein Blog\",\"description\":\"A Network Engineer&#039;s life\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/#\\\/schema\\\/person\\\/aebb61d9f57867e2234becde6d99da8d\",\"name\":\"Marcus Scholz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\",\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\",\"width\":1707,\"height\":2560,\"caption\":\"Marcus Scholz\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Underground-Tour-89-scaled.jpg\"},\"description\":\"Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein\\\/e Beruf\\\/ung, die weit \u00fcber den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fu\u00df und bietet mittlerweile professionelle L\u00f6sungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich besch\u00e4ftigt er sich neben Computerspielen mit der Fotografie.\",\"sameAs\":[\"https:\\\/\\\/www.commander1024.de\",\"https:\\\/\\\/www.facebook.com\\\/Commander1024\",\"https:\\\/\\\/x.com\\\/Commander1024\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCG_WzkCMycoSH7lEcvKHnmA\"],\"url\":\"https:\\\/\\\/www.commander1024.de\\\/wordpress\\\/author\\\/commander1024\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MagicMirror\u00b2 auf dem Smart Mirror &#8211; Commander1024","description":"Ich tausche die Software auf dem Smart Mirror durch MagicMirror\u00b2 aus und zeige, wie sie installiert, konfiguriert und erweitert wird.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror\u00b2-auf-dem-smart-mirror\/","twitter_misc":{"Verfasst von":"Marcus Scholz","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#article","isPartOf":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/"},"author":{"name":"Marcus Scholz","@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d"},"headline":"MagicMirror\u00b2 auf dem Smart Mirror","datePublished":"2022-04-06T19:12:30+00:00","dateModified":"2024-01-19T19:05:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/"},"wordCount":714,"commentCount":0,"publisher":{"@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d"},"image":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#primaryimage"},"thumbnailUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-hero-scaled.jpg","keywords":["MagicMirror\u00b2","Raspberry Pi","Smart Home","SmartMirror"],"articleSection":["Do-It-Yourself","Hardware","Heimautomatisierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/","url":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/","name":"MagicMirror\u00b2 auf dem Smart Mirror &#8211; Commander1024","isPartOf":{"@id":"https:\/\/www.commander1024.de\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#primaryimage"},"image":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#primaryimage"},"thumbnailUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-hero-scaled.jpg","datePublished":"2022-04-06T19:12:30+00:00","dateModified":"2024-01-19T19:05:26+00:00","description":"Ich tausche die Software auf dem Smart Mirror durch MagicMirror\u00b2 aus und zeige, wie sie installiert, konfiguriert und erweitert wird.","breadcrumb":{"@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#primaryimage","url":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-hero-scaled.jpg","contentUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2024\/01\/MagicMirror2-hero-scaled.jpg","width":2560,"height":948,"caption":"MagicMirror\u00b2 im Badezimmer"},{"@type":"BreadcrumbList","@id":"https:\/\/www.commander1024.de\/wordpress\/2022\/04\/magicmirror%c2%b2-auf-dem-smart-mirror\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.commander1024.de\/wordpress\/"},{"@type":"ListItem","position":2,"name":"MagicMirror\u00b2 auf dem Smart Mirror"}]},{"@type":"WebSite","@id":"https:\/\/www.commander1024.de\/wordpress\/#website","url":"https:\/\/www.commander1024.de\/wordpress\/","name":"Dem Commander1024 sein Blog","description":"A Network Engineer&#039;s life","publisher":{"@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.commander1024.de\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/www.commander1024.de\/wordpress\/#\/schema\/person\/aebb61d9f57867e2234becde6d99da8d","name":"Marcus Scholz","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg","url":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg","contentUrl":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg","width":1707,"height":2560,"caption":"Marcus Scholz"},"logo":{"@id":"https:\/\/www.commander1024.de\/wordpress\/wp-content\/uploads\/2020\/11\/Underground-Tour-89-scaled.jpg"},"description":"Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein\/e Beruf\/ung, die weit \u00fcber den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fu\u00df und bietet mittlerweile professionelle L\u00f6sungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich besch\u00e4ftigt er sich neben Computerspielen mit der Fotografie.","sameAs":["https:\/\/www.commander1024.de","https:\/\/www.facebook.com\/Commander1024","https:\/\/x.com\/Commander1024","https:\/\/www.youtube.com\/channel\/UCG_WzkCMycoSH7lEcvKHnmA"],"url":"https:\/\/www.commander1024.de\/wordpress\/author\/commander1024\/"}]}},"_links":{"self":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts\/7552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/comments?post=7552"}],"version-history":[{"count":22,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts\/7552\/revisions"}],"predecessor-version":[{"id":8448,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/posts\/7552\/revisions\/8448"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/media\/8446"}],"wp:attachment":[{"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/media?parent=7552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/categories?post=7552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.commander1024.de\/wordpress\/wp-json\/wp\/v2\/tags?post=7552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}