Der Bayer und der Würschtlmann

Von Würsten und Bayern

[Google Assistant & Firebase Function & Database] Fahrtrichtung von ToboT via Stimme steuern

by tobonaut

Wieso? Weshalb Warum?

Darum.

ToboT ist und bleibt mein Wochenende-Projekt was absolut nichts mit meinem sonstigen Entwicklerleben zu tun hat. Ein auf Android Things und Raspberry Pi basierendes Vehicle. Dafür kein iOS, keine Deadlines, einfach der Spaß an der Freude an moderner Technik.

Das ich mich jetzt aber wirklich einmal mit dem Thema der „Sprachsteuerung“ beziehungsweise der Funktionsweiße des Google Assistant gewidmet habe, nach dem ich von der Erstellung von Skills für Alexa recht enttäuscht wurde, ist Tim Messerschmidt von Google Deutschland geschuldet.

Als ich mit stolzer Brust den damaligen Stand von Tobot (siehe Blogeintrag) mit Mr. Flutter auf Twitter teilt, gab er den Hinweiß doch mal was mit Actions on Google (Assistant) zu machen. Ich fand die Idee eines „DIY Knight Rider“ Autos sehr amüsant. Somit verbrachte ich den Tag der Arbeit mit Spaß(-Arbeit).

Das Schöne ist, dass dieses Projekt zwar niemals Produktivstatus was Security, Fehlersicherheit und die Eleganz des Quelltextes anbelangt, es aber wirklich mit einer meiner Lieblingsdinge ist, welche ich jemals selbst für mich geschrieben habe. Hach, IT – wie schön ist es mit dir.

Übersicht des Techstacks

Der Techstack beruht diesmal maßgeblich und absichtlich nur auf Produkten von Google. Google Assistant zur Benutzerinteraktion, Google Firebase Function und Realtime Database zum Datenhandling und Google Android Things als Exekutive auf dem Raspberry Pi.

Google Assistant

Die Konfiguration meiner Action war relativ schnell gemacht. Das Wording wie „Intents“ oder „Entity“ in diesem Kontext kamen mir aus meiner CEP-Vorlesung an der Universität bekannt vor als auch, dass es unendlich viele Ressourcen auf der Produktseite von developer.google.com gibt.

Hierbei stellte ich fest, dass wenn man „nur“ experimentieren möchte, man eventuell noch nicht die API v2 nutzen sollte. Hierfür wurden etliche Tutorials noch nicht angepasst. Für mein Rumgespiele habe ich da jetzt aber auch keinerlei Nachteile gesehen – wie gesagt, das Projekt hat keinerlei Ambitionen „produktiv“ zu sein.

Firebase Function

Als Fulfillment Target bei meiner Action habe ich eine simple Firebase Function angegeben. Diese nimmt das auf sie geworfene JSON erst auseinander um schlussendlich die gewonnen Informationen in ein Firebase Database INSERT Statement verwandelt. Die Javascript Funktion ist kein Hexenwerk und wurde jetzt auch nicht von mir erfunden sondern aus verschiedenen Tutorials zusammen ge-frankenstein-ed.

Hätte mir da bisschen mehr integrierte Logik ala „ich gebe dir das Objekt mit ID nach einem INSERT zurück“ gewünscht. Eventuell hab ich es aber auch einfach nicht richtig verstanden. Alles ist möglich.

Node.js und ich werden einfach keine Freunde.

Firebase Database

Als Mittelsmann zwischen dem Devices der Aussenwelt und meinem ToboT Vehicle nutze ich immer noch die Real Time Database von Firebase.

Das Prozedere ist wirklich einfach erklärt. Ich füge neue Einträge über die Firebase Function oder andere Requester in die Datenbank hinzu, das Vehicle hört aktiv  auf Changes in genau dieser Datenbank und führt diese aus. Falls alles klappt bewegt sich das Gefährt in die gewünschte Richtung.

Ich wiederhole mich, dies würde man niemals in einer Produktionsumgebung machen. Beim Spaß haben ist (fast) alles erlaubt.

Picture or it didn’t happen

Ein Video sagt mehr als tausend Worte. Muss zugeben, als Person mit einem zeitweißen Sprachfehler sind solche Videos doch immer wieder eine starke Überwindung. Im Nachhinein ist man dennoch froh und stolz darauf.

 

Was kommt noch?

Mal sehen.

Auf jedenfalls Github Readme aktualisieren mit allen neuen was nun möglich ist. Eine Flutter Compagnien App wäre für mich persönlich wohl am naheliegensten. Falls ich vermehrt Lust auf Java und Android habe eventuell auch eine Anbindung an einen Bluetooth Controller einer gängigen Konsole. Mal sehen.

Warten wir aber mal noch die Google I/O 208 ab – eventuell kommt da ja noch was viel tolleres was man an den ToBot anflanschen kann.

 

Danke quobodup an via openclipart für das Roboterkopf Icon.

Advertisements

[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

[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.