DIY Magic Mirror (Smart Mirror)

DIY Magic Mirror (Smart Mirror)

Egal ob Nerd oder Muggel, jede Person, die einen Magic Mirror, bzw. Smart Mirror sieht, findet die Dinger geil. Ich wollte schon eine ganze Weile mal Anfangen einen zu bauen. Hier meine Erfahrungen mit dem Projekt.

Hardware

Man braucht hauptsächlich einen RaspberryPi und einen Bildschirm. Natürlich gehören entsprechende Stromversorgung und Verbindungskabel dazu. Außerdem braucht man einen Spionspiegel.

  • 1x Spionspiegel (alternativ: Spiegelfolie)
  • 1x RaspberryPi 3B+
  • 1x Monitor
  • 1x Rahmen (z.B. von Ikea einen Bilderrahmen)

Aufbau

Der Spiegel

Spionspiegel sind nicht ganz günstig. Und ich bin eigentlich ein tollpatschiger Mensch, daher geht bei mir immer etwas kaputt. Vom Infinity Mirror hatte ich noch Spiegelfolie übrig, also viel die Wahl bei mir auf einen DIY Spiegel. Ich habe dazu einfach das dünne Plexiglas vom Ikea-Bilderrahmen genommen und mit der Folie beklebt.

(Spoiler: Nehmt dickeres Plexiglas)

Vorbereitung

Eine Folie glatt und blasenfrei auf eine Oberfläche zu bekommen ist eine Kunst für sich. Denn Staubpartikel sieht man sofort als Spitzen in der Oberfläche. Also sollte man wirklich sehr gründlich mit einem antistatischen Tuch alles abwischen und danach gründlich mit Glasreiniger saubermachen, damit die Oberfläche auch Fettfrei ist.

Bei meinem Aufziehversuch habe ich dann auch Glasreiniger als “Schmiermittel” genommen. Kann ich nicht empfehlen, da kleine Flüssigkeitskämmerchen unter der Folie zurück geblieben sind. Oder ich hatte einfach zu viel davon drauf. Wer weiß…

Kleben

Fangt mit der schmalen Seite eurer Scheibe an und dann macht auch gleich die volle Breite. Diagonal klappt überhaupt nicht gut.

Wenn ihr etwa ein wenig Wasser aufgesprüht habt, kann man relativ gut korrigieren, da der Kleber noch nicht haftet. Zuerst müsst ihr nur einen dünnen Streifen der Trägerfolie abknibbeln und den unteren Rand am Scheibenrand parallel ausrichten. Dann wird die ganze Scheibe mit etwas Wasser aus der Zerstäuberflasche benetzt. Nun kann man (am besten zu zweit) die Schutzfolie in einem spitzen Winkel abziehen und gleichzeitig auf der anderen Seite die Folie anrakeln. Dazu habe ich eine Holzleiste mit Küchentuch umwickelt. So drückt man dann alle Bläschen von sich weg und entlang der Kleberichtung aus der Folie raus. Das braucht ein bisschen Übung. Bei mir sind wie gesagt kleine Hukel zurück geblieben. Beim nächsten mal….

Vorsicht:

Auch wichtig: Nehmt als Scheibe etwas stabiles. Denn wenn die Spiegelfläche konvex oder konkav gewölbt wird, verzerrt man die Spiegelung. Ist ganz witzig, aber nicht ganz so schick.

Ich denke ich werde dem Spiegel später, wenn alles läuft ein Upgrade mit einem richtigen Spionspiegel schenken. Das muss jetzt erstmal so gehen.

Spoiler: Hab tatsächlich hier und da was zerkratzt, update also nötig…

Der Rahmen

Wie gesagt, ich habe einen Bilderrahmen von Ikea (50×70 cm, 4cm tiefe) genommen. Man kann natürlich auch selbst einen Bauen. Ich liebäugele noch mit einer runden Version.

Der Monitor

Ich empfehle ganz klar irgendeinen alten Monitor auszuschlachten. Kauft nicht extra einen neuen. Ggf. habt ihr ja noch alte Laptops oder so rumfliegen. Der Aufbau wird erleichtert, wenn der Monitor nicht auseinander genommen werden muss und am besten noch ein externes Netzteil hat. Und am allerbesten hat er direkt einen 5V, 2A USB Port. Aber das ist nicht zwingend notwendig. Ein Monitor mit LED-Hintergrundbeleuchtung erleichtert euch das Leben. Hatte ich alles natürlich nicht…

Ich habe zwei BenQ Monitore in 24 Zoll rumfliegen gehabt, weil ich auf einen Breitbild umgestiegen bin. Der eine ist für den Smart Mirror geopfert worden. Da der Spannungswandler im Monitor ist, baut dieser relativ dick hinten auf. Ich wollte den Magic Mirror aber gerne so flach wie möglich bauen. Am liebsten innerhalb der 40 mm des Bilderrahmens. Also habe ich die Kunststoffhülle entfernt und die beiden Platinen abgenommen. Die eine ist für die Signalverarbeitung, die andere zur Spannungswandlung.

Auf der Inverterplatine (Spannungswandlung) habe ich den Kaltgerätestecker und die Stecker für die CCFL röhren abgelötet. Ersteren habe ich zum unteren Rand des Bilderrahmens verlegt. Die Verbindung zu den Röhren habe ich mit neuen Kabeln verlängert.

Außerdem habe ich ein Relais vor den Spannungseingang des Monitors gesetzt, damit der RaspberryPi den Spiegel sozusagen ausschalten kann und so Energie spart. Das ganze soll mit Ultraschallsensoren gesteuert werden. Diese dienen später auch für eine Gestensteuerung. Allerdings wären IR-Sensoren besser, denn die kann man wohl hinter dem Spiegel verstecken. Die Ultraschallsensoren werde ich in einer Holzleiste einlassen.

Vor dem Relais gibt es eine Abzweigung zu einer Steckdose, in der ein Netzteil für den Raspi steckt.

Also ihr seht, ziemlich viel Hacking.

Das ganze wird dann in den Bilderrahmen gepuzzelt. Ich habe mich für den Monitor im unteren Spiegelbereich entschieden, weil ich finde dass das besser aussieht. Dann habe ich holzleisten Angepasst um die Hardware mit dem Rahmen zu verbinden.

Beim ersten Test hat alles wunderbar funktioniert. Doch als ich alles verschraubt und zugemacht hatte, ging der Monitor immer nach zwei Sekunden wieder aus. Ich denke ich habe beim Verlängern der Kabel zu den CCFL-Röhren mist gebaut. Denn alle ELKOs sehen super aus. Der Raspi läuft und steuert auch den Monitor korrekt an.

GGf. werde ich die Hintergrundbeleuchtung noch auf LED umrüsten, wenn ich den Monitor eh noch weiter zerlegen muss. So ist der aktuelle Stand.

Jetzt werde ich aber erstmal einen alten LG Monitor zerlegen und einbauen.

Update: Fehlersuche

Mittlerweile habe ich den ganzen restlichen Monitor auseinander genommen um mir die Hintergrundbeleuchtung anzusehen. Da scheint alles in Ordnung zu sein. Ich sehe keine geplatzte Röhre. Also muss es wohl am Inverterboard liegen. Leider bin ich kein Experte auf dem Gebiet und kann da wohl nix weiter machen. Tipps gerne in die Kommentare 🙂

Neuer Versuch

Bei der neuen Variante habe ich nun einen alten Monitor mit LED Hintergrundbeleuchtung geopfert und habe die DC-Buchse gegen eine andere getauscht, da die Originale Senkrecht steht aber ich aus Platzgründen einen Horizontale brauche. Außerdem greife ich hier direkt die 12V ab und gehe auf einen USB Wandler fürs Auto, der auf 5V und 2A wandelt. Hier wird der Raspi mit Strom versorgt. Auf die Relaisschaltung zum An und aus schalten musste ich jetzt verzichten. Das werde ich nun einfach über den HDMI Ausgang steuern. Außerdem ist die LED Beleuchtung sowieso viel Energiesparender als die alte LED Version, daher nicht so schlimm.

Die Holzleisten, die als Querstreben dienen habe ich schwarz lackiert, den Rahmen des Monitors habe ich mit schwarzem Isolierband verdunkelt.

Auf der Rückseite ist eine 3mm MDF Platte, die ich schwarz Lackiert hab und die auf dem Rahmen aufliegt. Diese ist einfach mit Nägeln befestigt. Aufgehängt wird alles an einem einfach Draht.

Die Ultraschall Sensoren habe ich hinter einer Zierleiste versteckt und in etwa 45° in Richtung des Bodens ausgerichtet. Mehr zur Gestensteuerung gibt es <hier/>.

Update / Upgrade / Downgrade

Ich habe dem Raspi nun in ein AluCase gesteckt. Hintergrund: Im Spiegel hatte der Prozessor immer um die 80°C. Mit dem AluCase komme ich immernoch auf statte 72°. Ich muss also die Luftzufuhr noch optimieren.

Die Temperatur funke ich per MQTT an meinen openHAB. Wie das geht, erfahrt ihr <hier/>.

Nachteil: Das Wifi ist nicht mehr stabil. Da muss ich mir auch noch was einfallen lassen.

Die Software

Eigentlich habe ich mich zuerst ganz viel mit der Software beschäftigt, bevor ich überhaupt angefangen habe alles umzubauen.

Raspbian OS

Auf dem Raspberry habe ich die aktuelle RaspberryPi OS Version (im Moment ist es auf Basis von Debian Buster) mit Desktop geflasht. Ich nutze dazu immer Balena Etcher. Also einfach das entsprechende Image herunterladen. Dann steckt ihr eure SD-Karte in den Rechner, startet Etcher, sucht das eben heruntergeladene Image am Speicherort, wählt die SD-Karte als zu beschreibendes Medium aus und Etcher kümmert sich um die Magie. Bevor ihr die SD-Karte in den Raspi-Steckt, legt noch eine Datei im boot Verzeichnis (Windows erkennt nur diese Partition) an. Dazu rechts klick, im Menü auf Neu – Textdatei und diese nennen wir in ssh um. Wichtig ist, auch die Dateiendung zu löschen. Es kann sein das Windows dann meckert, aber diese Meldung können wir einfach quittieren. Falls euer Windows keine Dateiendungen anzeigt, macht ihr das hier.

Weg 1: Raspi hat Monitor, Tastatur und Maus

Die SD-Karte wandert dann in den RaspberryPi. Dieser bootet jetzt und führt euch durch den Einrichtungswizard. Dazu sollte man Monitor, Tastatur und Maus angeschlossen haben. Dabei könnt ihr auch eure WLAN Daten eingeben und schwupps, ist der Raspi im Netz. Wenn ihr das nicht habt, auch kein Problem:

Weg 2: Netzwerkkabel und SSH

Wenn ihr die möglichkeit habt, schließt den Raspi per Kabel an euer Netzwerk an und findet die IP heraus. (z.B. über das Webinterface von eurem Router oder nutzt einen IP-Scanner). Dann öffnet ihr die Konsole in dem ihr die Windows Taste drückt und dann cmd eingebt. In dieser Konsole könnt ihr dann eine ssh Verbindung zum Raspi aufbauen mit dem folgenden Befehl. (Da sollte halt die entsprechende IP stehen)

ssh pi@192.169.0.XYZ

Jetzt werdet ihr nach einem Passwort gefragt. Das ist standardmäßig raspberrypi. Nun sind wir sozusagen in der Konsole des Raspi. Dort starten wir mit sudo (der Super-User-Do befehl) die Raspi-Config

sudo raspi-config

Hier solltet ihr auf jedenfall das Standard Passwort ändern. Jetzt könnt ihr hier auch eure WLAN Infos eingeben.

Weg 3: SD-Karte im Rechner vorbereiten

Wenn ihr kein Netzwerkkabel zur Hand habt ist das auch nicht so schlimm. Ihr müsst die SD-Karte einfach noch im Rechner lassen und die WLAN Infos per Hand in die entsprechende Datei eintragen. Diese findet ihr unter

/etc/wpa_supplicant

Und dort sollte dann folgendes eingetragen werden:

network={
       ssid="eure-wlan-bezeichnung"
       psk="passwort"
       key_mgmt=WPA-PSK
}

Magic Mirror²

Danach habe ich Magic Mirror² installiert. Ein Github User Namens sdetweil hat dafür ein tolles Script zusamengeschraubt. Dies findet ihr <hier/>. Das kann man einfach kopieren und in der Konsole (rechtsklick) einfügen und ausführen (Enter-Taste)

Normalerweise nutze ich den Raspi Headless, doch da es hier ja um ein Monitor-Projekt geht hatte ich ohnehin den alten Bildschirm angeschlossen. Aber aus Bequemlichkeit und um befehle besser copy&pasten zu können, mache ich das meiste über eine SSH Verbindung.

Wenn das Script seine Arbeit erledigt habt, solltet ihr auf dem Monitor am Raspi schon das Standard-Magic Mirror Layout der Default-Konfiguration sehen können. Das passt für mich natürlich überhaupt nicht.

Da ich selbst zu Anfang etwas Schwierigkeiten hatte, will ich hier tatsächlich etwas genauer eingehen.

Aufbau

Die Magic-Mirror² Firmware erzeugt im Prinzip eine Webseite die in Vollbild (auch genannt Kiosk-Mode) und ohne Mauszeiger angezeigt wird. Im Standard Layout gibt es acht Bereiche, die ihr mit Modulen bespielen könnt. Mit Modulen kann man die Funktionalität erweitern.

Diese Module werden aus GitHub kopiert und durch eine zentrale Konfigurationsdatei angesprochen. Jeder der Lust hat kann eigene Module entwickeln und diese für die Öffentlichkeit freigeben. Eine Übersicht findet sich auf der Seite der 3rd Party Module auf GitHub

Ich persönlich fand es ziemlich nervig dies Config.js Datei über den Befehl

sudo nano 

direkt in der Konsole zu bearbeiten. Stattdessen habe ich für diesen Part Filezilla genutzt und die Datei auf meinem Desktop-Rechner mit Atom bearbeitet. So wird der Code auch schön formatiert und farbig dargestellt und das Einrücken der Zeilen geht auch deutlich schöner von der Hand.

Der Pfad zur Config.js lautet

~/MagicMirror/config/config.js

Hier müssen wir dann jeweils die Abschnitte für die jeweiligen Module einfügen und hier im Prinzip auch Konfigurieren.

Am Anfang steht in etwa das in der Datei:

/* Magic Mirror Config Sample
 *
 * By Michael Teeuw https://michaelteeuw.nl
 * MIT Licensed.
 *
 * For more information on how you can configure this file
 * See https://github.com/MichMich/MagicMirror#configuration
 *
 */

var config = {
	address: "0.0.0.0", 	// Address to listen on, can be:
							// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
							// - another specific IPv4/6 to listen on a specific interface
							// - "0.0.0.0", "::" to listen on any interface
							// Default, when address config is left out or empty, is "localhost"
	port: 8080,
	basePath: "/", 	// The URL path where MagicMirror is hosted. If you are using a Reverse proxy
					// you must set the sub path here. basePath must end with a /
	ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1", "192.168.0.230", "::ffff:192.168.0.1/120", "192.168.0.1/24"], 	// Set [] to allow all IP addresses
															// or add a specific IPv4 of 192.168.1.5 :
															// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
															// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
															// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],

	useHttps: false, 		// Support HTTPS or not, default "false" will use HTTP
	httpsPrivateKey: "", 	// HTTPS private key path, only require when useHttps is true
	httpsCertificate: "", 	// HTTPS Certificate path, only require when useHttps is true

	language: "de",
	logLevel: ["INFO", "LOG", "WARN", "ERROR"],
	timeFormat: 24,
	units: "metric",
	// serverOnly:  true/false/"local" ,
	// local for armv6l processors, default
	//   starts serveronly and then starts chrome browser
	// false, default for all NON-armv6l devices
	// true, force serveronly mode, because you want to.. no UI on this device

Danach kommt der Teil in dem die Module eingefügt werden müssen:

modules: [

		//--------------------------Uhr-------------------------
		{
			module: "clock",
			position: "top_left"
		},

Die Module haben immer unterschiedliche Config Eigenschaften.

Um ein Modul zu installieren gehen wir in der Console einfach mit dem cd Befehl in das Modul-Verzeichnis. Also navigieren wir mit cd dorthin:

cd ~MagicMirror/modules/

Da wir die Config.js ja am Desktoprechner bearbeiten, sparen wir hier auch nerviges hin und her gespringe, bzw. kann man auch eine zweite SSH verbindung aufbauen. Aber wie gesagt: Die JS in der Konsole zu bearbeiten ist nicht gerade komfortabel.

Mit dem git clone Befehl kopieren wir dann das Modul Repo in den Modul Ordner. Als beispiel hier:

git clone https://github.com/KirAsh4/calendar_monthly

Danach muss der Code für das Modul in der Config.JS ergänzt werden. Hier fügen wir einfach hinter die Eckige klammer von Modules den folgenden Code ein:

{
						module: 'calendar_monthly',
						position: 'top_left',
						config: {
								// The config property is optional
								// Without a config, a default month view is shown
								// Please see the 'Configuration Options' section for more information
						},
					},

Bei manchen Modules müssen noch zusätzliche npm Befehle ausgeführt werden, daher lest besser genau die Dokumentation in der jeweiligen GitHub Repo durch.

Wenn wir die neue Config.JS dann über Filezilla übertragen und überschreiben, wir der MagicMirror direkt neu gestartet.

Customize deinen Smart Mirror

Seiten / Pages

Wenn ihr ziemlich viele Dinge auf dem Smart Mirror darstellen möchtet, wird der Platz irgendwann knapp und das schöne Aussehen leidet darunter. Das kann man auf mehrere Arten beheben. Es gibt ein Modul welches verschiedene Seiten als Karussel darstellt und nach einem bestimmte Zeitintervall durchwechselt. Alternativ kann man auch Seiten per Steuerungsbefehl durchschalten. Dazu verwende ich das Modul “Pages” von Edward Shen. Außerdem hat Edward ein zweites Modul Namens “Page Indicator” entwickelt, die beide sehr schön harmonieren.

Zur Anzeige der aktuellen Seite wird unten, ähnlich wie bei Apple-Geräten eine Reihe von Kreisen dargestellt. Die aktive Seite wird mit einem Punkt markiert.

Mit dem Pages Modul hat man nun ein paar zusätzliche Optionen um das Layout zu gestalten. Man kann eine Liste von Modulen wählen die immer aktiv sein sollen, unabhängig vom Layout-Bereich. Die restlichen Module kann man verschiedenen Seiten zuweisen.

git clone https://github.com/edward-shen/MMM-pages.git
git clone https://github.com/edward-shen/MMM-page-indicator.git
{
     			module: 'MMM-pages',
        		config: {
                		modules:		//define the pages
                		    	[
					//	[],
						[ "MMM-PublicTransportHafas", "MMM-NowPLayingOnSpotify", "calendar", "newsfeed", ],				//page 0
          	[ "MMM-CalendarWeek", "newsfeed", ],				//page 1
						[ "compliments", "calendar", "MMM-PublicTransportHafas", "MMM-NowPLayingOnSpotify", "newsfeed", ],
						["octomirror-module",],				//page 2
					],
                		fixed: ["MMM-Simple-Swiper",
															//	"calendar",
													"alert",
													"weatherforecast",
													// "newsfeed",
													"clock",
													"currentweather",
													"MMM-page-indicator",
													"calendar_monthly", ],
        			}
    		},
		{
        		module: 'MMM-page-indicator',
        		position: 'bottom_bar',
        		config: {
            			pages: 4,
        			}
    		},

Steuerung

Zum durchblättern kann man auch hier entweder ein Zeitintervall einstellen oder man nutzt eine manuelle Steuerung. Hier gibt es vierschiedene Möglichkeiten. Man kann z.B. eine Gestensteuerung implementieren, oder den Smart Mirror zu einem Touchscreen machen. Wobei das ja ständig Fettflecken geben würde. Manche Maker basteln echte Buttons an ihre Spiegel oder nutzen drahtlose Tastaturen. Ich persönlich habe mich für eine Gestensteuerung entschieden. Diese kann man z.B. mit Gestensensoren (Kapazitiv) realisieren. Oder mit Infrarot Lichtschranken. Ich hatte eh noch zwei HC-SR04 Ultraschallsensoren zur Hand. Diese habe ich mit einem 3D-gedruckten 45° Winkel unten hinter einer Blende angebracht, so dass man etwas unterhalb des Spiegels Wisch Bewegungen machen kann, um die Seiten durchzublättern.

Das entsprechende Modul, welches ich nutze nennt sich Simple Swiper von GitHub User Bee-Mar. Mittlerweile nutze ich das MM-Gesture Modul.

https://github.com/Bee-Mar/MMM-Simple-Swiper

Es wurde speziell für die Nutzung mit den beiden anderen Modulen entwickelt. Bei mir ist es wie folgt eingebunden:

	{
		      module: "MMM-Simple-Swiper",
		      disabled: false,
      			config: {
      				 echoLeftPin: 24, // GPIO #
      				 triggerLeftPin: 23, // GPIO #
       				 echoRightPin: 26, // GPIO #
        			triggerRightPin: 25, // GPIO #
        			threshold: 175, // in centimeters
        			distanceDiff: 10, // difference between both sensors
        			debug: false, // if true, the raw data is printed to stdout while MagicMirror is running
        			delay: 1000, // time between passing data from C executable to the node_helper in milliseconds
      				},
    		},

Das Modul hat aber noch einige andere Dependencies. Lest also gut die Installtionsanleitung durch.

Update: Wieso ich auf das Gesture Modul gewechselt bin und was ich modifiziert habt gibt es in einem neuen Eintrag. (Coming Soon)

Öffentlicher Nahverkehr

Um sich die Abfahrtzeiten von Bus und Bahn anzeigen zu lassen, kann ich das Modul “MMM-PublicTransportHafas” nur Empfehlen. Damit es funktioniert müsst ihr die StationsID für euren Bahnhof / eure Bushaltetselle herausfinden. Dazu hat der Entwickler aber ein Skript mit entwickelt. Ich habe es direkt zweimal mittlerweile drei mal Eingebunden:

{
 			module: "MMM-PublicTransportHafas",
  			position: "bottom_right",

  			config: {
    			stationID: "008000291",                   // Replace with your stationID!
    			stationName: "Oldenburg(Oldb)",   // Replace with your station name!

    			direction: "",                    // Show only departures heading to this station. (A station ID.)
    			ignoredLines: [],                 // Which lines should be ignored? (comma-separated list of line names)
    			excludedTransportationTypes: ["bus", "ferry", "tram", "taxi"],  // Which transportation types should not be shown on the mirror? (comma-separated list of types) possible values: StN for tram, BuN for bus, s for suburban
    			timeToStation: 10,                // How long do you need to walk to the next Station?

    			showColoredLineSymbols: true,     // Want colored line symbols?
    			useColorForRealtimeInfo: true,    // Want colored real time information (timeToStation, early)?
    			showTableHeadersAsSymbols: true,  // Table Headers as symbols or text?
    			maxUnreachableDepartures: 0,      // How many unreachable departures should be shown?
    			maxReachableDepartures: 7,        // How many reachable departures should be shown?
    			customLineStyles: "",             // Prefix for the name of the custom css file. ex: Leipzig-lines.css (case sensitive)
    			showOnlyLineNumbers: false        // Display only the line number instead of the complete name, i. e. "11" instead of "STR 11"
  			}
		},
		//-------------------------Bus-----------------------------------
 		{
  			module: "MMM-PublicTransportHafas",
  			position: "bottom_right",

  			config: {
    			stationID: "000769144",                   // Replace with your stationID!
    			stationName: "Schliefenstraße Oldenburg (Bus)",   // Replace with your station name!

    			direction: "",                    // Show only departures heading to this station. (A station ID.)
    			ignoredLines: [],                 // Which lines should be ignored? (comma-separated list of line names)
    			excludedTransportationTypes: ["ferry", "national", "nationalExp", "regional"],  // Which transportation types should not be shown on the mirror? (comma-separated list of types) possible values: StN for tram, BuN for bus, s for suburban
    			timeToStation: 10,                // How long do you need to walk to the next Station?

    			showColoredLineSymbols: true,     // Want colored line symbols?
    			useColorForRealtimeInfo: true,    // Want colored real time information (timeToStation, early)?
    			showTableHeadersAsSymbols: true,  // Table Headers as symbols or text?
    			maxUnreachableDepartures: 0,      // How many unreachable departures should be shown?
    			maxReachableDepartures: 7,        // How many reachable departures should be shown?
    			customLineStyles: "",             // Prefix for the name of the custom css file. ex: Leipzig-lines.css (case sensitive)
    			showOnlyLineNumbers: false        // Display only the line number instead of the complete name, i. e. "11" instead of "STR 11"
  			}
		},

Kalender

Ich lasse mir oben Links einen kleinen Monatskalender anzeigen. Das Modul stammt von GitHub User “KirAsh4”, heißt calendar monthly und ist relativ kompakt eingebunden.

{
						module: 'calendar_monthly',
						position: 'top_left',
						config: {
								// The config property is optional
								// Without a config, a default month view is shown
								// Please see the 'Configuration Options' section for more information
						},
					},

Newsfeed

Natürlich sollte die Tagesschau im Newsfeed auftauchen:

{
			module: "newsfeed",
			position: "bottom_bar",
			config: {
				feeds: [
					{
						title: "New York Times",
						url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
					},
					{
						title: "Tagesschau",
						url: "https://www.tagesschau.de/xml/atom/"
					}
				],
				showSourceTitle: true,
				showPublishDate: true,
				broadcastNewsFeeds: true,
				broadcastNewsUpdates: true
			}
		},

Weitere Module

Das sollte euch einen Überblick geben was so geht. Ich habe noch andere coole Module gefunden:

Bildschirm drehen

Falls bei euch der Bildschirm gedreht ist, könnt ihr einfach in im Ordner css in der Custom.css datei folgenden Code einfügen, den ich hier gefunden habe:

body {
        margin: 0;
	position: absolute;
 	transform: rotate(90deg);
 	transform-origin: bottom left;
	width: 100vh;
	height: 100vw;
	object-fit: cover;
	top: -100vw;
        visibility: visible;
 }

Summary

Ich hoffe ich konnte euch so den Einstieg etwas erleichtern.

Schreibe einen Kommentar