{"id":3514,"date":"2017-04-16T18:43:38","date_gmt":"2017-04-16T16:43:38","guid":{"rendered":"https:\/\/glancr.de\/?p=3514"},"modified":"2019-09-30T16:06:06","modified_gmt":"2019-09-30T14:06:06","slug":"ein-eigenes-modul-fuer-mirr-os-schreiben","status":"publish","type":"post","link":"https:\/\/glancr.de\/mirr-os\/fruehere-versionen\/ein-eigenes-modul-fuer-mirr-os-schreiben\/","title":{"rendered":"Ein eigenes Modul f\u00fcr mirr.OS schreiben"},"content":{"rendered":"[vc_row type=“in_container“ full_screen_row_position=“middle“ scene_position=“center“ text_color=“dark“ text_align=“left“ overlay_strength=“0.3″ shape_divider_position=“bottom“ bg_image_animation=“none“][vc_column column_padding=“no-extra-padding“ column_padding_position=“all“ background_color_opacity=“1″ background_hover_color_opacity=“1″ column_link_target=“_self“ column_shadow=“none“ column_border_radius=“none“ width=“1\/1″ tablet_width_inherit=“default“ tablet_text_alignment=“default“ phone_text_alignment=“default“ column_border_width=“none“ column_border_style=“solid“ bg_image_animation=“none“][vc_column_text]\n

Wir erhalten derzeit viele Anfragen von Usern, die ihre eigenen Module umsetzen m\u00f6chten. Hier fassen wir die Grundlagen f\u00fcr deine Ideen zusammen.<\/h2>\n

Diese Anleitung bezieht sich auf die fr\u00fchere Version <v1.0<\/em>. mirr.OS one nutzt Ruby & VUE.JS.<\/strong><\/p>\n

mirr.OS ist eine ver\u00e4nderte Variante des popul\u00e4ren\u00a0Betriebssystems Raspbian. Vereinfacht gesagt, siehst du nach dem Boot nichts anderes, als einen Browser ohne Scrollbar und Header sowie\u00a0eine Website. mirr.OS<\/a> gibt dir die M\u00f6glichkeit diese Website \u00fcber ein drittes\u00a0Ger\u00e4t mit einem Browser zu konfigurieren – zum Beispiel\u00a0\u00fcber ein Smartphone oder einen Laptop. Insofern ist die sichtbare Oberfl\u00e4che von mirr.OS eine Art „kleines Content-Management-System“.<\/p>\n

Deshalb werden nicht nur „Linuxer“ mit mirr.OS ihren Spa\u00df haben, sondern vor allem\u00a0Webentwickler. Denn du brauchst im Wesentlichen nur\u00a0PHP, JS und CSS,<\/strong> um dein Modul zu schreiben.<\/p>\n

Beispiel-Module auf gitlab<\/h3>\n

Da mirr.OS f\u00fcr Privatanwender kostenlos ist, kannst du dir auch den Code der Module<\/a> anschauen. Dazu besuchst du am besten glancr auf gitlab und siehst dir an, wie andere Module aufgebaut sind. Au\u00dferdem findest du dort ein Dummy-Modul. Das ist der perfekte Ausgangspunkt f\u00fcr dich, um dich mit deinem eignen Modul zu befassen.<\/p>\nModule auf gitlab<\/span><\/i><\/a>\n

Frontend und Backend<\/h3>\n

Anwender bekommen\u00a0in der Regel zwei Oberfl\u00e4chen 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\u00fcr dein Modul auch an beide Ebenen denken.<\/p>\n

    \n
  1. welche Funktionen hat mein Modul\u00a0und wie\u00a0kann ich sie m\u00f6glichst intelligent darstellen?<\/li>\n
  2. wie kann ich die Konfiguration meines Moduls so einfach und problemfrei wie m\u00f6glich gestalten?<\/li>\n<\/ol>\n

    Integration von Modulen<\/h3>\n

    Mit Modulen l\u00e4sst sich mirr.OS an deine\u00a0pers\u00f6nlichen Vorlieben und Gewohnheiten anpassen. Zur Zeit werden sie mittels Datenupload als *.zip auf deinen Smart Mirror \u00fcbertragen. Ab dem n\u00e4chsten Major-Release wird das direkt aus\u00a0mirr.OS gehen.<\/p>\n

    Jedes Modul funktioniert unabh\u00e4ngig von anderen Modulen. Das bedeutet umgekehrt, kein Modul setzt ein anderes Modul voraus.<\/p>\n

    Struktur von Modulen<\/h3>\n

    Info.json<\/h4>\n

    In dieser Datei nimmst du\u00a0allgemeine Daten zum Modul auf. Zum Beispiel Version, Verfasser, Download-Ort, usw. Du siehst was du brauchst, wenn du in den Code schaust.<\/p>\n

    Frontend<\/h4>\n

    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\u00a0Klassen f\u00fcr mirr.OS. Du findest sie hier<\/a>. Das ist uns so wichtig, da wir Konflikte mit anderen Modulen vermeiden m\u00f6chten und ein m\u00f6glichst gutes Nutzererlebnis schaffen wollen.)<\/p>\n

    Backend<\/h4>\n

    Hier kommt alles rein was die Konfiguration deines Moduls betrifft. Funktioniert genauso wie das Frontend mit PHP, JS und CSS.<\/p>\n

    Assets<\/h4>\n

    Dann gibts noch den Assets-Ordner. Hier kommen einerseits deine\u00a0Icons und\u00a0Grafiken f\u00fcr dein Modul rein. Andererseits ist das auch der Ort, an dem du deine Funktionen ablegst.<\/p>\n

    Locales<\/h4>\n

    Wir nutzen die PHP gettext-Funktion. Der Locales-Ordner beinhaltet die Sprachdateien (.mo und .po) auf Deutsch und Englisch. Verwendet einen Dateieditor wie poedit<\/a> oder arbeitet\u00a0direkt die XML-Datei.[\/vc_column_text][vc_column_text]\n

    Module lokal bearbeiten<\/h3>\n

    Zur Entwicklung von mirr.OS und den Modulen verwenden wir einen sogenannten\u00a0Continuous Integration Prozess (CI) via Git. Das erm\u00f6glicht uns im Team weiterzuentwickeln, Ver\u00e4nderungen nachzuvollziehen und den jeweils aktuellen Arbeitsstand anderen Entwicklern zur Verf\u00fcgung zu stellen.<\/p>\n

    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 \u00c4nderungen 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\u00fcsst, um die lauff\u00e4hige Version des Moduls zu erhalten. Die Zips im Home-Ordner enthalten Entwicklungsdaten und Hashes und funktionieren\u00a0nicht ohne weiteres \u00fcber den Uploader.[\/vc_column_text][divider line_type=“No Line“ custom_height=“20″][image_with_animation image_url=“5795″ alignment=““ animation=“None“ border_radius=“none“ box_shadow=“small_depth“ max_width=“100%“][divider line_type=“No Line“ custom_height=“20″][vc_column_text]\n

    mirr.OS zeigt kurz „multiple base folders“<\/h3>\n

    Das h\u00e4ngt wahrscheinlich mit der „Zippung“ (h\u00f6h\u00f6) unter OSX zusammen. Bitte komprimiere den Modulordner nicht mit den Boardmitteln deines Betriebssystems (rechtsklick komprimieren) sondern mittels Terminal[\/vc_column_text][divider line_type=“No Line“ custom_height=“20″][vc_raw_html]Y2QlMjAlQzMlQkNiZXJvcmRuZXJfd29fZGVyX21vZHVsb3JkbmVyX2xpZWd0JTJGJTIwJTNDYnIlMkYlM0UlMEF6aXAlMjAtciUyMHN0b2Nrc3kuemlwJTIwc3RvY2tzeSUyMC14JTIwJTIyJTJBLkRTX1N0b3JlJTIyJTIwLXglMjAlMjIlMkElMkYlMkEuQXBwbGVEb3VibGUlMkElMjIlMjAteCUyMCUyMiUyQSUyRiUyQS5naXQlMkElMjIlMjAteCUyMCUyMiUyQS5naXRpZ25vcmUlMjIlMjAteCUyMCUyMiUyQVJFQURNRS5tZCUyMg==[\/vc_raw_html][vc_column_text]\n

    Du m\u00f6chtest dein Modul auch anderen Usern bereit stellen?<\/h3>\n

    Gerne unterst\u00fctzen wir dich bei der Umsetzung deines Moduls. Besonders interessant wird es nat\u00fcrlich, wenn dein Modul auch anderen Usern hilft ihren Alltag etwas smarter zu machen. Allerdings m\u00fcssen wir auch deutlich sagen, dass wir dir nicht dein pers\u00f6nliches Modul programmieren werden. Unterst\u00fctzen meint, wir helfen dir mit den richtigen Antworten, wenn du nicht mehr weiter kommst. Schreib uns einfach in die Kommentare.<\/p>\n

    Bist du fertig mit der Umsetzung, kannst du dein Modul \u00fcber 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 \u00fcber die sozialen Kan\u00e4le und das in mirr.OS integrierte Nachrichten-System.<\/p>\n

    Was bekommst du au\u00dferdem noch von uns und was gibts sonst noch zu beachten?<\/h3>\n

    Damit mirr.OS so sch\u00f6n und einfach bleibt wie es ist (damit haben wir uns viel M\u00fche gegeben) gestalten wir dir am Ende dein Modulicon und helfen dir mit dem Screendesign (Sketch). Au\u00dferdem bekommst du dein pers\u00f6nliches Entwicklerprofil, wenn du es w\u00fcnschst. Als kleines Schmankerl erstellen wir dir auch ein ggf. erforderliches Tutorial, denn bitte denke immer daran: mirr.OS ist auch f\u00fcr Menschen gemacht, die vom Programmieren keine Ahnung haben.<\/strong>[\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"

    [vc_row type=“in_container“ full_screen_row_position=“middle“ scene_position=“center“ text_color=“dark“ text_align=“left“ overlay_strength=“0.3″ shape_divider_position=“bottom“ bg_image_animation=“none“][vc_column column_padding=“no-extra-padding“ column_padding_position=“all“ background_color_opacity=“1″ background_hover_color_opacity=“1″ column_link_target=“_self“ column_shadow=“none“ column_border_radius=“none“ width=“1\/1″ tablet_width_inherit=“default“ tablet_text_alignment=“default“ phone_text_alignment=“default“…<\/p>\n","protected":false},"author":4,"featured_media":5767,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12],"tags":[],"_links":{"self":[{"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/posts\/3514"}],"collection":[{"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/comments?post=3514"}],"version-history":[{"count":0,"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/posts\/3514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/media\/5767"}],"wp:attachment":[{"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/media?parent=3514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/categories?post=3514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/glancr.de\/wp-json\/wp\/v2\/tags?post=3514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}