Wir erhalten derzeit viele Anfragen von Usern, die ihre eigenen Module umsetzen möchten. Hier fassen wir die Grundlagen für deine Ideen zusammen.

Diese Anleitung bezieht sich auf die frühere Version <v1.0. mirr.OS one nutzt Ruby & VUE.JS.

mirr.OS ist eine veränderte Variante des populären Betriebssystems Raspbian. Vereinfacht gesagt, siehst du nach dem Boot nichts anderes, als einen Browser ohne Scrollbar und Header sowie eine Website. mirr.OS gibt dir die Möglichkeit diese Website über ein drittes Gerät mit einem Browser zu konfigurieren – zum Beispiel über ein Smartphone oder einen Laptop. Insofern ist die sichtbare Oberfläche von mirr.OS eine Art „kleines Content-Management-System“.

Deshalb werden nicht nur „Linuxer“ mit mirr.OS ihren Spaß haben, sondern vor allem Webentwickler. Denn du brauchst im Wesentlichen nur PHP, JS und CSS, um dein Modul zu schreiben.

Beispiel-Module auf gitlab

Da mirr.OS für Privatanwender kostenlos ist, kannst du dir auch den Code der Module anschauen. Dazu besuchst du am besten glancr auf gitlab und siehst dir an, wie andere Module aufgebaut sind. Außerdem findest du dort ein Dummy-Modul. Das ist der perfekte Ausgangspunkt für dich, um dich mit deinem eignen Modul zu befassen.

Module auf gitlab

Frontend und Backend

Anwender bekommen in der Regel zwei Oberflächen zu Gesicht. Einmal die Ansicht auf dem Smart Mirror (Frontend). Und dann die Config-Site, auf der alles einzustellen ist (Backend). Insofern musst du für dein Modul auch an beide Ebenen denken.

  1. welche Funktionen hat mein Modul und wie kann ich sie möglichst intelligent darstellen?
  2. wie kann ich die Konfiguration meines Moduls so einfach und problemfrei wie möglich gestalten?

Integration von Modulen

Mit Modulen lässt sich mirr.OS an deine persönlichen Vorlieben und Gewohnheiten anpassen. Zur Zeit werden sie mittels Datenupload als *.zip auf deinen Smart Mirror übertragen. Ab dem nächsten Major-Release wird das direkt aus mirr.OS gehen.

Jedes Modul funktioniert unabhängig von anderen Modulen. Das bedeutet umgekehrt, kein Modul setzt ein anderes Modul voraus.

Struktur von Modulen

Info.json

In dieser Datei nimmst du allgemeine Daten zum Modul auf. Zum Beispiel Version, Verfasser, Download-Ort, usw. Du siehst was du brauchst, wenn du in den Code schaust.

Frontend

Hier kommt alles rein, was die Ausgabe auf dem Smart Mirror betrifft. Dazu brauchst du in der Regel PHP, JS und ein wenig CSS, falls erforderlich. (Bitte verwende die von uns bereits vergebenen Klassen für mirr.OS. Du findest sie hier. Das ist uns so wichtig, da wir Konflikte mit anderen Modulen vermeiden möchten und ein möglichst gutes Nutzererlebnis schaffen wollen.)

Backend

Hier kommt alles rein was die Konfiguration deines Moduls betrifft. Funktioniert genauso wie das Frontend mit PHP, JS und CSS.

Assets

Dann gibts noch den Assets-Ordner. Hier kommen einerseits deine Icons und Grafiken für dein Modul rein. Andererseits ist das auch der Ort, an dem du deine Funktionen ablegst.

Locales

Wir nutzen die PHP gettext-Funktion. Der Locales-Ordner beinhaltet die Sprachdateien (.mo und .po) auf Deutsch und Englisch. Verwendet einen Dateieditor wie poedit oder arbeitet direkt die XML-Datei.

Module lokal bearbeiten

Zur Entwicklung von mirr.OS und den Modulen verwenden wir einen sogenannten Continuous Integration Prozess (CI) via Git. Das ermöglicht uns im Team weiterzuentwickeln, Veränderungen nachzuvollziehen und den jeweils aktuellen Arbeitsstand anderen Entwicklern zur Verfügung zu stellen.

Die meisten User werden entweder gar nicht oder nur sehr moderat am Code basteln, um einfach ein wenig herumzutesten. Wenn ihr lokal an einem Modul Änderungen vornehmen wollt, ladet euch das Release-Zip des jeweiligen Moduls im entsprechenden Repository herunter und probiert herum. Bitte achtet darauf, dass ihr in den Tab „Tags“ wechseln müsst, um die lauffähige Version des Moduls zu erhalten. Die Zips im Home-Ordner enthalten Entwicklungsdaten und Hashes und funktionieren nicht ohne weiteres über den Uploader.

git-tags-release

mirr.OS zeigt kurz „multiple base folders“

Das hängt wahrscheinlich mit der „Zippung“ (höhö) unter OSX zusammen. Bitte komprimiere den Modulordner nicht mit den Boardmitteln deines Betriebssystems (rechtsklick komprimieren) sondern mittels Terminal

cd überordner_wo_der_modulordner_liegt/
zip -r stocksy.zip stocksy -x "*.DS_Store" -x "*/*.AppleDouble*" -x "*/*.git*" -x "*.gitignore" -x "*README.md"

Du möchtest dein Modul auch anderen Usern bereit stellen?

Gerne unterstützen wir dich bei der Umsetzung deines Moduls. Besonders interessant wird es natürlich, wenn dein Modul auch anderen Usern hilft ihren Alltag etwas smarter zu machen. Allerdings müssen wir auch deutlich sagen, dass wir dir nicht dein persönliches Modul programmieren werden. Unterstützen meint, wir helfen dir mit den richtigen Antworten, wenn du nicht mehr weiter kommst. Schreib uns einfach in die Kommentare.

Bist du fertig mit der Umsetzung, kannst du dein Modul über gitlab einreichen. Dann checken wir es kurz durch, geben es frei, basteln die Modulseite und ab geht die Luzi. Wenn dein Modul mega geil ist, supporten wir dich auch über die sozialen Kanäle und das in mirr.OS integrierte Nachrichten-System.

Was bekommst du außerdem noch von uns und was gibts sonst noch zu beachten?

Damit mirr.OS so schön und einfach bleibt wie es ist (damit haben wir uns viel Mühe gegeben) gestalten wir dir am Ende dein Modulicon und helfen dir mit dem Screendesign (Sketch). Außerdem bekommst du dein persönliches Entwicklerprofil, wenn du es wünschst. Als kleines Schmankerl erstellen wir dir auch ein ggf. erforderliches Tutorial, denn bitte denke immer daran: mirr.OS ist auch für Menschen gemacht, die vom Programmieren keine Ahnung haben.

8 Comments

  • Tobias Danker sagt:

    Kevin, schau mal im Artikel, wir haben diesbezüglich was ergänzt. Danke für den Hinweis. 🙂

  • Alexander Deutsch sagt:

    Hi Zusammen, da ich ein hobby trader, Entwickler und fan von Smart Mirror bin und mir euren Spiegel zusammen gebaut habe, wollte ich natürlich auch eine Aktien App haben 🙂
    Daher habe ich ein entsprechendes Modul gebaut (names Stocksy). Vielleicht habt ihr ja lust es mit bei euch aufzunehmen, dann lasst es mich wissen! Viele Grüße
    Alex

    https://github.com/f1re/Stocksy_mirros

  • Michael Sipos sagt:

    Hallo Zusammen,
    ich bin ganz neu in der Smart Mirror Community. Erst mal ein fettes Lob und Dankeschön für die bisher geleistete Arbeit!

    Nun wollte ich mich auch ein wenig damit beschäftigen an einem eigenen Modul zu basteln. Allerdings finde ich auf gitlab nirgends den angepriesenen Dummy.
    Bin ich einfach zu doof oder ist der momentan nicht verfügbar?

    Freue mich über eine Antwort.

    Mfg
    Michael

  • Jürgen sagt:

    Hallo zusammen,
    ich hab zu Hause nen größeren Umbau am laufen. Ich hab mir daneben nen OpenHAB 2 Server mit Z-Wave und JeeLink aufgebaut.

    Als nächstes steht ein Smart Mirror auf der ToDo-Liste. Dabei bin ich auf das hier aufmerksam geworden.

    Frage: Gibts schon Ideen Daten eines OpenHAB-Servers anzuzeigen?

    Ich bin Softwareentwickler (Web) … und hätt Interesse an sowas. Falls es sowas schon im Ansatz gäbe würd ich das gern mal sehen, probieren.

    Gruß

  • Carsten sagt:

    Ich habe das Repository gecloned, allerdings bekomme ich es nicht zum Laufen. Mir fehlt die Datenbank, wo finde ich den einen Dump von den Tabellen?

Leave a Reply