Der Bayer und der Würschtlmann

Von Würsten und Bayern

[Android Things] Der Anfang von ToboT

by tobonaut

Wie schon öfters hier im Blog erwähnt beschäftige ich mich aus Spaß an der Freunde in meiner Freizeit mit Googles Android Things, also der Variante des mobilen Betriebssystems für Internet-of-Things Geräte. So basiert zum Beispiel mein Firebase Pager ebenfalls auf einer Android Things Developer Preview.

Da es aber doch irgendwann eintönig wird immer nur nicht greifbare Software zu schreiben, werkle ich gerade an einem kleinen Vehicle welches auf dem Pimoroni STS-Pi Kit als auch einem Raspberry Pi mit aufgesteckten Explorer HAT aus dem gleichen Hause basiert. Natürlich kommt hier nicht das „empfohlene“ Raspbian zum Einsatz sondern wie sicherlich schon vermutet ebenfalls Android Things.

Getauft hab ich den kleinen Kerl „ToboT“ (Github) – da dieser noch viel mehr werden soll als nur ein ferngesteuertes Irgendetwas.

Dieses Projekt hat keine feste Roadmap als auch keine feste Zeiten, es soll mir einfach wieder meine fast Lieblingssprache Java näher bringen und vor allem, es soll einfach ein entspanntes Hacken in der Freizeit sein – ach wie schön.

Bereits erfolgte Schritte

Erstellen eines einfachen Managers zur Ansteuerung der Motoren

Als ich anfing waren mir Begriffe wie GPIO, oder PWM völlig unbekannt und bescherten mir doch die ein oder anderen Kopfschmerzen. Wohl deswegen, war ich umso stolzer als ich einen kleinen, simplen, jedoch ausreichenden Manager (Github) geschrieben habe, der durch Ansteuerung der GPIO-Pins des Explorer HATs mein Vehikel vor, zurück, links, rechts und – lesson Learned – auch wieder anhalten lässt. Yeah!

Da ich absolut keine Erfahrungswerte hatte, habe ich mich an der Python Implementierung eines solchen Helferlein von einem Blogbeitrag des Authors  orientiert.

Als besonders hilfreich um zu wissen was ich überhaupt ansteuern muss, empfand ich eine Schemazeichnung, in einem Erklärbeitrag von Microsoft rund um deren IoT Betriebssystem, um mit den vielen verschiedenen Namen der Pins auf einem Raspberry Pi klar zu kommen.

Um weitere hardwarenäheren Interaktionsmöglichkeiten, wie die kapazitiven Knöpfe des Explorer HATs, mit einbeziehen zu können konnte ich mich an den wirklich massenhaft vorhandenen offiziellen Beispielsprojekten von Android Things auf Github orientieren. Dort ist wirklich für jeden naheliegenden Anwendungsfall etwas dabei.

Fernsteuerung via integrierten Webserver

Ich experimentierte erst mit der wirklich toll funktionierenden Nearby API von Google um mit einem anderen Device mein ToboT fernsteuern zu können. Dies fühlte sich dennoch nicht wirklich dem Anwendungsszenario passend an. Da ich  vor allem erstmal die Komplexität niedrig halten wollte als auch es möglich einfach für mich gestallten wollte weitere Software andocken zu können habe ich mich dann dagegen entschieden.

Nach vielen hilfreichen Tipps aus der Android Things Google Plus Community habe ich mich für einen integrierten Webserver entschieden. Hierbei viel schlussendlich meine Wahl auf den nanoHttpd. Dieser ultrakompakte Webserver lässt sich einfach als Gradle Dependency einfügen und ist mit wenigen Zeilen Quelltext auch einsatzbereit.

Was hierbei auf den ersten Blick etwas beschränkend wirkt ist, dass man kein „Directory served“ sondern immer nur auf einem Request arbeitet. Man also selber eventuell verschiedene Dateien je nach Request vorbereiten ausspielen muss. Dafür lässt es den Raspberry Pi einfach vollkommen kalt – im wahrsten Sinn des Wortes.

Da ich kein Webentwickler bin und auch nun wirklich keiner werden möchte habe ich mich als Oberflächenhelferlein für die Webseite, welche als universelle Fernbedienung dienen soll, für das „Material Design Lite“ entschieden. Einfache, responsive Oberflächenelemente im der Material Design Gestaltungssprache.

Geplante, weitere Schritte

Fernsteuerung mittels Firebase

Da ich mit meinem Firebase Pager bereits gemerkt habe, wie verlockend einfach Firebase Realtime Database (FRD) als auch Firebase Cloud Messaging (FCM) in Applikationen integriert werden können möchte ich dieses Feature natürlich auch für ToboT nutzen. Wenn also ich nun das Vehikel beispielsweise mittels Update-Listender auf einer FRD fernsteuern lasse, kann ich das Gerät auch theoretisch einfach wieder zum Ausgangspunkt zurückfahren lassen.

Ob FCM auch genügend Realtime wäre müsste man ausprobieren – aber hey, experimentieren macht doch Spaß!

Objekterkennung

Dieser Schritt soll der Anfang sein, ToboT autonom fahren zu lassen – in diesem Fall zu mindestens gegen nichts im Weg stehendes fahren zu lassen. Hierfür ist bereits ein Pi Camera Kit verbaut nur noch nicht wirklich angebunden. Laut den Google Computing Platform Regeln darf ich als Deutscher leider diesen Service nicht als Privatperson nutzen. :'(.

Hierbei könnten dann die Cognitive Services von Microsoft etwaig eine Alternative sein. Falls jemand zu dieser Thematik mehr oder anderes Wissen hat, bitte via Twitter zu @tobonaut melden!

Dem Vehicle ein Gesicht verpassen

Android Things App sind in vielerlei Hinsicht normale Android Apps. Somit können diese auch eine native Oberfläche anzeigen. All dies ist relativ problemlos auch inklusive berührungsempfindlicher Steuern mittels Touchscreen lösbar. Auf diesem Display soll irgendwann Informationen rund um den Zustand des ToboT dargestellt werden. Idealerweise als illustriertes paar Augen welches beispielsweise durch den oben genannten Punkt „Objekterkennung“ den Benutzer erkennt, sich freu (Änderung der Augenanimation) und sich zu diesem hinbewegt.

und noch so viel mehr …

Wenn das Hacken an Freizeitprojekten Spaß macht, gibt es wohl wirklich einfach keine Grenzen. :)

Rückschläge

LEGO Gehäuse ist zu schwer und zu instabil

Um neben dem STS-Pi Kit auch noch ein Display und mehrer Akkupackete zu beherbergen habe ich mich an einem aus LEGO Bausteinen bestehendes Gehäuse versucht. Leider musste ich erstens feststellen, dass man bei LEGO nahezu keine „nur Steineboxen“ mehr kaufen kann – wer will denn bitte Star Wars wenn man einfach 1000 Platten, Steine und Verbinder haben kann!

Andererseits es sich nicht wirklich passend an das STS-Kit anbauen lässt damit es das Gewicht mit genügend struktureller Integrität halten kann.

Sehr schade. Hier muss wohl dich wieder der 3D-Drucker ran.

Es werden noch etliche folgen …

… da bin ich mir sicher – genau so wie auch noch viele glückliche, stolze und lustige Abenteuer bei diesem Projekt auf mich warten

Danke!

Merci an all die Leute die mir, trotz das ich blutiger Anfänger war und auch noch bin mir geholfen haben mit den noch so einfachsten Dingen. Merci an die super Google Plus Community (englischsprachig) von Android Things, merci an die beiden deutschen Googler Tim Messerschmidt und Dirk Primbs die mir wieder meinen Spirit am Development zurückgebracht haben als auch tolle Talks (z.B. zu Flutter) halten.

PS:

Falls irgendwer von euch eine offizielle Quelle oder Shop für Merci rund um Android Things und Flutter kennt, bitte melden. Da ist noch blankes Alu auf meinem MacBook sichtbar. xD

Advertisements

[Videotipp] Flutter Challenges – Dart und Flutter in realen Szenarien erleben

by tobonaut

Als Anschlussbeitrag zu meinem Post bezüglich dem, dass ich auf Googles Flutter gestoßen bin, hier nun ein Tipp zu einer Videoreihe um diese neue Art des Entwicklens für mobile Endgeräte in halbwegs produktiven Umgebungen zu sehen.

Bei der „Flutter Challenge“ auf dem noch sehr jungen YouTube Channel „Fluttery“ geht es pro Video darum, eine teils komplexe oder verspielte Oberflächenskizze von Dribble und Co. in Flutter funktionstüchtig nachzubauen.

Binnen den letzten zwei Wochen wurde wöchentlich ein Video hochgeladen welche jeweils gut über eine Stunde oder sogar die Zweistundengrenze knacken.

Die Videos sind gut kommentiert so das man sich viele Tipps und Kniffe eines erfahrenen Flutter und Dart Developers sich abschauen kann. So habe ich unter anderem gelernt, dass durch die harte Kapselung von Views (Widgets) man schnell seine App mit einfachen, farbigen Blöcken layouten kann und anschließend jeden Block durch das schlussendlich benötigte Widget ausgetauscht wird. Auch hier wieder: Dank dem „Hot Reload“-Feature sieht man sofort im Simulator oder auf einem angeschlossenen Gerät die Änderungen.

Notiert: Google’s Flutter klingt vielversprechend und fühlt sich spannend „neu“ an

by tobonaut

Nach dem ich ja erst vor wenigen Monaten auf Android Things aufmerksam wurde und dort erste, kleine Experimente wie den „Firebase Pager“ gebaut habe, bin ich nun auf noch was neueres aus dem Hause Google aufmerksam geworden.

Flutter, die Antwort aus Mountain View auf das von Microsoft aufgekauft Xamarin oder eventuell auch auf den ganzen, neumodische ReactNative Hype. Sprich, mit einer Quelltextbasis beide mobile Plattformen mit nativ anmutenden Oberflächen bespielen zu können.

Soweit ich bisher herumexperimentiert habe, fühlt sich Flutter spannend „neu“ an. Einerseits weil die UI als auch die Logik in einem Atemzug in Dart entwickelt wird, also auch, dass sich dank dem „Hot Reload“ Feature, wodurch Oberflächenänderungen sofort im iOS Simulator oder im Android Emulator sichtbar sind.

Als Entwicklungsumgebung kann man entweder bequeme IDEs wie IntelliJ oder das kostenfreie Android Studio verwenden, als auch leichtgewichtige Editoren wie den Visual Studio Code. Bei all dreien lässt sich Flutter (und Dart) mittels Plugins und Extensions leicht nachrüsten.

Ich werde mehr berichten sobald ich mehr mit Flutter und Dart experimentiert habe – es macht so oder so auf jeden Fall Spaß auf mehr!

Gefundene Ressourcen:

Ansonsten bleibt mir nur zu sagen, falls ich irgendwann mal mehr über Flutter erzähle, nenne ich die Präsentation „{ReactNative, Xamarin} Mach die Flutter!“. Für irgendwas muss es ja gut sein, ein deutschsprachiger Entwickler zu sein. xD

[Android Things] Google Firebase Cloud Messaging Pager mit Android Things

by tobonaut

Ich habe einmal meinen Weihnachtsurlaub genutzt um bisschen mit meinem Raspberry Pi und dem darauf installierten Android Things zu spielen.

Als kleines, Ein-Tages-Projekt kam dort eine App heraus welche Google Firebase Cloud Messaging (FCM) Mitteilungen auf dem Sieben-Segement-Display des Rainbow HATs anzeigt.

Schema

Hier wurde mir bewusst wie einfach ein Push Service unter Android funktionieren kann. Unter iOS ist dies absolut kein leichter Schritt da es Zertifikate, Registrierungen und Co. verlangt – also alles nicht gerade Maker- und Hobby-freundlich.

Weitere Informationen und der Source ist auf Github.com verfügbar.

#dankesagen für das aufregende Jahr 2017

by tobonaut

Es ist einmal wieder die staade und besinnliche Zeit angebrochen in derer ich immer versuche, das vergangene Jahr Revue passieren zu lassen. Im Laufe der Zeit, wenn alles hektisch und ein Rennen nach der Uhr ist , übersieht man leicht die Dinge, die man erreicht und erlebt hat, oder vergisst solch Moment viel zu schnell, in denen man besonders stolz und glücklich war.

Aus diesem Grund möchte ich einfach einmal #dankesagen an all diejenigen die ich dieses Jahr neu kennen gelernt habe, wieder kennen gelernt habe oder einfach mir neue Dinge aufgezeigt haben. Seien es meine Freunde

Danke Microsoft (-Community)

Wer diesen – ok recht ruhigen Blog – bisschen verfolgt hat über die letzten paar Monate wird festgestellt haben, dass sich hier nun viel mehr um Themen aus dem Entwicklungsökosystem von Microsoft dreht. Sei es C#, Xamarin oder wunderschöne Events an dene ich teilnehmen durfte. Trotz meiner sprachlichen Einschränkung habe ich so schnell Anschluss gefunden wie selten wo. ein wunderschönes Gefühl. Ohne eine gezielte Reihenfolge zu haben, danke an:

  • Maik Wlodarczyk (@m_wlod) – Ein herzensguter Mensch mit dem man einfach auf jeden Event Selfies (versuchen) machen sollte.
  • Raphael Köllner (@ra_koellner) – Mehr Microsoft Community als Privatperson geht nicht.
  • Robin-Manuel Thiel (@robinmanuelt) – Super sympathischer Kerl, der auch einem bei kleinen, Newbie-Fragen sowas von super weiterhilft.
  • Magdalena Rogl (@LenaRogl) – Eine so liebevolle Person, die trotz des Head of Digital Channels Titels einem per Namen und Lächeln grüßt.
  • Anna-Lena Müller (@froileinmueller) – Ohne sie hätte ich mich wohl nie mehr mit dem Thema Microsoft aus einander gesetzt.

Danke Apfeltalk (-Community)

Meine Heimat ist und bleibt doch der goldene Käfig von Apple. Dies gepaart mit einer der leidenschaftlichsten und professionellsten geleiteten Communities die ich kenne hat mir in 2017 etliche schöne Augenblicke beschert. Auch wenn ich mich zeitlich gesehen weniger einbringen konnte als ich gehofft habe, war das Team immer für mich da. Die fortschreitende Entwicklung einer solchen Gemeinschaft mitzuerleben, wie neue Wege gegangen werden, neue Dinge ausprobiert werden die sich entweder durchsetzen oder nicht, will ich einfach nicht mehr missen. Im Rahmen eines Tourstopps der Apfeltalk Apple Store Tour konnte ich neben etlichen Mitgliedern der Community auch zwei der Schirmherren des Ganzen in (sehr imposanter) Realität treffen. Vielen vielen Dank:

  • Michael Reimann (@MCReim ) – Große Schale, sehr liebevolles Herz.
  • Jeder Frommherz (@jesfro) – Ein Unikum welches man sich am liebsten in Beton gießen lassen würde um in den Garten zu stellen.

Danke anfema

Ich habe das große Glück gehabt in 2017 mit vielen erfahrenen und hochgradig begabten Menschen in Projekten zusammen zuarbeiten und von diesen lernen zu dürfen. Dennoch hatte ich Gelegenheiten auch mich selbst entfalten können. Es ist schön zu wissen, dass man so akzeptiert und für voll genommen wird wie man ist, ohne sich ein Business-Jocker-Face aufsetzen zu müssen. Einfach nur schön.

Auf nach 2018!

Nun nehme ich diese tollen Ergebnisse mit nach 208 um hoffentlich genauso tolle wenn nicht sogar mehr Erfahrungen im kommenden Jahr zusammen.

Stay hungry, Stay foolish

[Videotipp] Musik ist mehr als Audio – Gebärdendolmetscherin bei den Red Hot Chilli Peppers

by tobonaut

Vor einiger Zeit habe ich über einen Auftritt einer taubstumme Sängerin bei America Got Talent geschrieben. Für mich war es damals etwas völlig neues, dass Menschen die weder sich nicht andere hören können überhaupt Spaß an der besten Sache der Welt – Musik – haben können. Ich lag völlig falsch.

Durch Zufall bin ich auf ein Abschnitt (Ab 1h 14m 35s) eines Konzertes der Red Hot Chilli Peppers gestoßen welches simultan von einer Gebärdendolmetscherin übersetzt wurde. Diese Energie, diese Vibes, einfach genial!

Musik ist eben viel mehr als Audio, es ist das Gefühl von Bass, von positiver Energie und von Leidenschaft.

[.NET Standard 2.0] Nomster.NET – Ein Experiment was mittlerweile an shared Code möglich ist

by tobonaut

tl;dr

(von Github )

The long version Is a active, experimental playground for myself to play around with the new .net (Core 2.0) ecosystem and build an UI once, and use it everywhere. The solution contains not only two Xamarin projects for iOS and Android but also a macOS and a asp.net Core web project. An Azure connection is in deveopment but it’s too confusing for my at the moment.

Die ausführliche Version

Jeder Entwickler träumt davon, einmal Quelltext – egal ob Oberfläche oder Logik – zu schreiben, diesen überall ausführen zu können und diesen dabei auch noch native aussehen zu lassen.

Genau so weiß jeder Entwickler, dass dies eine Utopie ist. Es gibt und gab viele verschiedenen Ansätze, seien es eingebettete Webseiten oder althergebrachte Bibliotheken wie Qt. Alles geht irgendwie, nur nicht so wirklich richtig.

Microsoft versucht diesen Markt, meiner Ansicht nach, mit aller Energie aufzumischen und ihre Technologien zu platzieren. Mit ihren Bemühungen,  .NET  Standard als auch Xamarin.Forms auf jegliches Betriebssystem zu bringen als auch Oberflächen mittels Xamarin.Forms (XAML) plattformübergreifend darzustellen, haben die Redmonder wieder Schwung in diese eingeschlafene Thematik gebracht.

Kurz um, Nomster.NET war mein Test in wie weit dies mittlerweile schon möglich ist und wo noch der ein oder andere Schuh klemmt.

 

Nomster iOS

Nomster iOS

Nomster Android

Nomster Android

Nomster macOS

Nomster macOS

Nomster Console

Nomster Console

Nomster Web

Nomster Web

 

Angemerkt sei, dass die Web-Variante nur den zur Logik gehörenden Quelltext teilt. Die Oberfläche wurde mit asp.net Core 2 und Razor Pages realisiert.

Fazit

Es hat mich überrascht, wieviel mittlerweile schon relativ gut funktioniert. Allerdings hackt es an vielen Stellen einfach auch noch an der Kompatibilität und Funktionsumfang in der Oberflächengestaltung.

Weiterführende Informationen und Quelltext

Weitere Informationen und sämtlicher Quelltext zu diesem Projekt sind im entsprechenden Github Repository hinterlegt.

Grund des Abbruches

Weswegen das Projekt nur ein Experiment blieb war, dass in Xamarin.Forms gerade so viel Bewegung herrscht, dass es ein viel zu hoher Wartungsaufwand wäre dies zu pflegen. So soll mit XAML Standard 2 endlich auch eine Vereinheitlichung des XAML-Syntaxes zwischen Xamarin.Forms und der Microsoft UWP Apps kommen.
Als eine Person die sich damit nur in ihrer Freizeit beschäftigt sind diese Schritte natürlich sehr willkommen. So bald sich diese ganze Situation beruhigt und vor allem stabilisiert hat, wird eventuell auch Nomster.NET funktionsfähig weiter entwickelt.