Im April haben Christian Ochsenkühn und ich (Tomasz Krajewski) an einem Internet of Things (IoT) Voice Hackathon mit dem Titel Voice meets IoT in München teilgenommen.

1_1

An dem großen Event haben 80 Entwickler aus ganz Deutschland teilgenommen, um Voice Skills für eine Vernetzung zwischen Smart Speakern und Dingen zu entwickeln.

Unsere Idee

Als aktive Menschen finden wir es wichtig Sport zu treiben! Sport ist entscheidend für die Gesundheit und das körperliche Wohlbefinden. Die Zahl der Menschen mit Übergewicht hat sich seit 1975 fast verdreifacht und im Jahre 2016 waren mehr als 1,9 Milliarden Erwachsene übergewichtig. Davon waren über 650 Millionen fettleibig. Mit nur 30 Minuten körperlicher Aktivität an 5 Tagen pro Woche ließen sich die gesundheitlichen Risiken, die durch Übergewicht und Bewegungsmangel entstehen, vermeiden. Daher haben wir uns entschieden einen Skill für den Smart Speaker Alexa zu entwickeln, der den Nutzern helfen soll ihr Körpergewicht zu kontrollieren und sportlich aktiver zu werden. Dazu haben wir eine handelsübliche Badezimmerwaage gehackt und mit einem Controller verbunden. Zusätzlich sollte der Controller die Anzahl an sportlichen Trainingseinheiten zählen. Da der Hackathon nur 24 Stunden umfasste, haben wir nur den ersten Teil unserer Idee umsetzen können.

Unsere Lösung soll den Nutzern helfen ihre Gewichtsdaten digital zu speichern. Mit Hilfe dieser Daten soll Alexa den Nutzer so zum Beispiel Ratschläge geben können, ob man mehr trainieren soll oder nicht. Alexa soll die Nutzer motivieren ihre Trainingseinheiten einzuhalten und nicht aufzugeben, wenn sich nicht sofort Ergebnisse feststellen lassen. Abnehmen und der Aufbau von Muskulatur braucht Zeit und damit ein gutes Durchhaltevermögen. Alexa kann dabei helfen die Motivation aufrechtzuerhalten.

Folgendes Showcase soll unsere Idee grafisch verdeutlichen:

HackathonDiagram(1)

Die folgenden Videos zeigen, wie der Skill funktioniert:

[youtube https://www.youtube.com/watch?v=5cpYPHzSBgw&w=560&h=315]

[youtube https://www.youtube.com/watch?v=Wu9Jj2EKUl0&w=560&h=315]

Der Benutzer definiert nur einmal seine Körperdaten. Beim nächsten Mal kennt Alexa alle Grunddaten über den Benutzer und man kann sofort die Waage benutzen und sein Gewicht ermitteln lassen.

Zur Entwicklung des Skills auf dem Hackathon

Die handelsübliche Badezimmerwaage haben wir mit HX-711 Kontroller und Arduino verbunden.

waage

Ein bisschen knifflig war der Aufbau. Wir haben nur die günstigsten Komponenten als auch die günstigste Waage (ca. 5 Euro) auf dem Markt gekauft. Wir hatten keinen Multimeter zur Hand und mussten sehr genau löten. Das war eine Herausforderung am Anfang! Nicht alle unsere Sensoren waren richtig verbunden und wir haben lange Zeit nur falsche Daten empfangen. Wir mussten auch HX-711 Sensor genau kalibrieren. Erst gegen 10 Uhr morgens  haben wir es geschafft, dass alle Komponenten richtig miteinander kommunizierten und mit der Waage korrekt verbunden waren. Diszipliniertes Arbeiten durch die ganze Nacht war notwendig; umso glücklicher waren wir, dass am Ende alles funktioniert hat.

Mit der Entwicklung unseres Skills haben wir den 4. Platz erreicht und waren damit im obersten Viertel. Wir haben sogar eine Kleinigkeit gewonnen, wie ihr im unteren Bild sehen könnt.

1_2

Zwei Kollegen in unserem Team waren Neueinsteiger hinsichtlich Arduino und Alexa Entwicklung. Sie  haben eine steile Lernkurve während des Hackathons absolviert und tatkräftig unterstützt. Leider musste Christian am Samstag früher nach Hause fahren, weil er eine wichtige Familienfeier hatte. Es war aber sehr nett von ihm, dass er uns trotzdem für ein paar Stunden unterstützen wollte. Das zeigt, was für engagierte Mitarbeiter wir bei Opitz Consulting haben!

Leider haben wir am Ende nicht alles Geplante zeigen können, was wir wollten. Die Hürden waren an einigen Stellen doch zu hoch. Dennoch hatten wir sehr viel Spaß in einem tollen Team.

Ich hatte das Glück dieses Mal eine koordinative Rolle miteinnehmen zu dürfen und habe dabei eine Menge gelernt. Einfach war es nicht;-) Ich hatte viel Stress und habe kaum geschlafen. Dennoch war dies für mich eine tolle Erfahrung, da ich so einige meiner Soft und Projektmanagement Skills erproben konnte. Mit dem vierten Platz bin ich mehr als zufrieden.

Als Team haben wir uns vorgenommen, dass wir in der gleichen Konstellation noch einmal auftreten wollen und uns als Team noch weiter verbessern wollen!

Unser Vorgehen und Projekt

Wir haben uns zuerst auf das Backend fokussiert und eine einfache und unabhängige continuous integration (CI) Server Umgebung aufgesetzt. Wenn man in einem Team einen Skill entwickelt, ist dies einfacher als alles erstmal lokal zu entwickeln. So lässt sich alles mit dem alexa-cli und dem CI Server erledigen! Der Ansatz war praktisch, richtig und lieferte für uns schnell Ergebnisse.

Wenn ein Teammitglied seine Ü„nderungen mit Hilfe des SCM Tools git pushed, wird unser Skill sofort deployed und unser Interaktions-Model wird zeitgleich im Developer Portal aktualisiert! Dadurch verliert man keine Zeit etwas händisch im Alexa Portal zu ändern und hat damit eine gute Zeitersparnis erreicht.

Die Umgebung haben wir mit einem Raspberry Pi aufgebaut. Im Folgenden eine kurze Beschreibung, wie wir dies gemacht haben.

Raspberry Pi Configuration

  1. Wir haben einen alten raspberry pi zero benuzt. Zuerst wäre gut alles zu aktualiesieren:
sudo apt-get update
sudo apt-get upgrade
  1. Man muss git-server installieren
sudo apt-get install git-core

Anlegen eines ersten Repositories

mkdir -p /home/pi/project/repository/hack && cd /home/pi/project/repository/hack
  1. Starten des git Repository
git init --bare

 

PC Konfiguration (Pushen)

  1. Ü–ffnen des Repository
git init
  1. Hinzufügen eines remote GiT Repository
git remote add hack pi@192.168.43.47:/home/pi/project/repository/hack
  1. Jetzt können wir Standard GiT Befehle starten
git add .
git commit -m "Our first commit"
git push hack master

PC Konfiguration (Clonen)

  1. Um die Files zu clonen schreiben wir in die Console
git clone pi@192.168.1.108:/home/pi/project/repository/hack

 

Jetzt können wir einen einfachen CI Konzept implementieren:

  1. Gehen wir zu unserem Repository:
cd ~/project/repository/hack/hooks
  1. Erstellen wir ein CI Skript
sudo nano post-receive
  1. Fügen wir hinzu:
#!/bin/bash
TEMP="/home/pi/project/temp"
TARGET="/home/pi/project/deployedSkillHackathon/"
REPO="/home/pi/project/repository/hack/"

while read oldrev newrev ref
do
    if [[ $ref =~ .*/master$ ]];
    then
        echo "Master ref received. Deploying master branch to production..."
                mkdir -p $TEMP
                echo "temp folder created"
                git --work-tree=$TEMP --git-dir=$REPO checkout -f
                echo "checking if I need to install npm modules"
                if cmp $TEMP/package.json $TARGET/package.json; then
                        echo "Ha you havent changed anything in node modules I have less work! "
                else

                        cd $TEMP
                        npm install

                fi
                echo "target folder deleted"
                rm -rf $TARGET
                mv $TEMP $TARGET
    else
        echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."
    fi
done
  1. Rechte hinzufügen
sudo chmod +x post-receive
  1. Wir sind fertig zu deployen!

In einem nächsten Blog Artikel werde ich Skill Eigenschaften genauer beschreiben und ich zeige auf einem neuen Video wie schnell man den Skill mit Raspberry Pi und einfachen CI Server deployen kann.

Alle Beiträge von tjkrajewski

Schreibe einen Kommentar