Rocket Labs

Project Boomgate

Stellt Euch vor Ihr habt einen Parkplatz, kommt aber nicht ran, weil er von einer Schranke bewacht wird. Wenn man die Fernbedienung hat, ist das kein Problem. Aber was passiert, wenn diese gerade unterwegs ist? Ganz schön doof, vor allem wenn man den Kundenbesuch in Parkplatznot-Winterhude bitten muss 30 Minuten früher anzureisen, damit sie einen Parkplatz finden. Unser Pop Rocket Labs-Team machte sich auf die Suche nach einer Lösung für das “Project Boomgate”!

Boomgate

Es ist nun mal so, dass man im Leben nicht alles bekommt was man gern hätte. In unserem Falle bekamen wir für unser neues Büro nur eine Funkfernbedienung für die Parkplatz-Zugangsschranke, und leider ist eine Vervielfältigung derer nicht möglich. Da Teile unserer Belegschaft häufig motorisiert beritten zur Arbeit kommen, und abwechselnd für ihre Autos Zugang zum Innenhof benötigen, entstand schnell eine große Nachfrage nach der einzigen verfügbaren Funkfernbedienungseinheit. Vor allem aber unsere Kunden sollen unseren Parkplatz nutzen können, und so manches Mal suchte die Belegschaft zum rechten Zeitpunkt den Buzzer wie die Affen die Kokosnuss, wenn dieser nicht gerade out of office war. Fazit: Eine Lösung musste her.

“Lass uns doch das Ganze automatisieren und per SMS steuerbar machen!” – der Grundstein für das Projekt Boomgate war gelegt.

Von Heimautomatisierung, Hardware-Design und Raspberrys

Wir wollten also in der Lage sein über das Handy per SMS die Innenhof-Schranke zu öffnen, und Richard und meine Wenigkeit nahmen sich dem Projekt Anfang April an. Es war klar, dass ein Raspberry die Grundlage sein wird und dass wir mit diesem einen Servo-Motor betreiben möchten, der den stationär verbauten Funksender auslöst. Kuriose Ideen zu Roboterarmen, Leuchtdioden und Elektro-Kolbenstangen-Aparaturen hatten wir dann schnell auf die Nice-To-Have-Liste gesetzt und uns auf das Wesentliche konzentriert.

Das Projekt teilte sich in zwei Bereiche auf. Einmal den Teil der Softwareseitig die Abwicklung und Steuerung übernahm und zum anderen standen wir vor der konkreten Aufgabe eine Hardware-Design zu erarbeiten, welches die Signale der Software ausführen konnte.


 

Software

Nach kurzer Recherche standen wir bereits am ersten Scheideweg der Entwicklung: Echte Simkarte und GSM-Modem, oder virtuelle Handynummer verwenden?

Zum Zwecke der schnelleren, kostengünstigen Entwicklung entschieden wir uns eine virtuelle Handynummer zu verwenden. Hier kam der Dienstleister Twilio (www.twilio.com) ins Spiel. Über diesen Service ist es möglich eine Handynummer im deutschen Mobilfunknetz zu betreiben, ohne dabei eine physische Simkarte in einem Endgerät zu verwalten. Weiterhin bietet der Betreiber eine sehr gute und bequeme API an, welche bei eingehenden Nachrichten und Anrufen voreingestellte Events auslösen kann. Zwar gibt es noch weitere Anbieter (www.websms.de) und auch welche die in unserer Nachbarstraße angesiedelt sind (www.messagebird.de) aber für unsere Zwecke erschien uns das Preismodell und die API bei Twilio am attraktivsten.

Abgucken, aber nicht kopieren…

Prototyp

Proof of concept

Da ich bei uns als Producer tätig bin und Programmierung nicht zu meinem Tagegeschäft zählt, habe ich mich zunächst nach DIY-Projekten für Heimautomatisierung umgeschaut, an denen ich mich orientieren konnte. In diesem Bereich gibt es viele Ansätze für Garagenöffner und es scheint dass viele Hobby-Bastler genau das mit ihrer Garage machen wollen, was wir mit unserer Schranke vorhatten. Wir haben also mehrere Python-Projekte verglichen und deren Arbeitsweise und Funktionen analysiert, um schließlich eine Vorstellung davon zu haben, wie wir solch ein Programm aufbauen könnten. Ein gutes Beispiel dafür ist folgendes Instructable-Projekt (http://goo.gl/dCn674).

Rasch den Raspberry ans Netz gehangen, Datenbank installiert, weitere Abhängigkeiten gezogen und die Twilio-Anbindung aufgespielt. Und schon befinden wir uns mitten in der Entwicklung.

Während ich mich mit einer ersten unoptimierten Version des Clients beschäftigte, realisierte Richard den Proof of Concept der Motorsteuerung. Über die GPIO Schnittstelle des Raspberry wird dabei der Servo-Motor angesprochen und von der absoluten Position A zu Position B bewegt. Platziert man nun den Funksender so, dass der Arm am Motor den Knopf trifft, wird auch tatsächlich das Signal zum Öffnen der Schranke gesendet.

Um es kurz zu erklären was unser System macht:

Es verbindet sich mit Twilio und lauscht ab diesem Zeitpunkt auf eingehende SMS. Sobald eine SMS ankommt wird diese Nachricht gezogen und interpretiert. Das Programm vergleicht nun die einzelnen Bestandteile der SMS mit den Daten in unserer Datenbank. Zum Beispiel ob der Absender ein registrierter Nutzer ist (Das ist wichtig: Denn genau wie beim Original-Sender sind nur wir dazu in der Lage die Schranke zu öffnen), und auch ob die Nachricht wirklich neu ist. Stimmen alle Angaben wird der in der Nachricht enthaltene Text ausgewertet. Entspricht er auch dem Kommando zum Öffnen der Schranke, so wird der angeschlossene Servo-Motor angesteuert. Anschließend benachrichtigt das System uns per E-Mail, dass die Schranke nun geöffnet wurde und beginnt wieder mit dem Lauschen nach einer neuen SMS.

Der Test


 Mit Dremel, Metall und Phantasie zum Ziel…

Gehäuse

Abluft muss nachgerüstet werden

Innenleben von Boomgate

Aufbau innerhalb der Blackbox

Hardware:

Nachdem wir einen funktionierenden Prototypen hatten, war es an der Zeit sich Gedanken um ein zukunftssicheres Gehäuse zu machen. Dazu haben wir einen Metallbaukasten, einen “Schulbaukasten” um genau zu sein, und entsprechendes Werkzeug bestellt, und begonnen eine Reihe von Designs zu durchdenken und auch wieder zu verwerfen.

Mit der Perfektion wie IKEA vor ihren Kunden die Poeng-Sessel im Dauertest vorführt, haben wir uns in Gedanken um Torsionskräfte, Langlebigkeit von Kleinteilen und Wärmehaushalt den Kopf zerbrochen. Einige Anläufe später fand der Raspberry, der Servo-Motor und auch eine Einsatzschiene für den Funksender in einer Blackbox Platz. Hier haben wir letztend Endes auf die pragmatische Lösung mit Heißkleber und nachträglicher Feinjustierung gesetzt und bis auf Weiteres ist dies auch ein solider Aufbau.

Verworfene Hardwaredesigns

Verworfene Hardwaredesigns

Für den Transport der Abwärme sorgen nun Lüftungsschlitze an der Unterseite und den oberen Seiten des Gehäuses und durch die Aussparung am Deckel lässt sich der Funksender weiterhin einfach entnehmen und manuell verwenden. Ein Zugang für die Stromzufuhr wurde ausgefräst und mit Schrauben und Heißkleber der Aufbau montiert. Nach etwaiger Feinjustierung ausführlichen Trockenübungen hielten wir einen schwarzen Kasten in der Hand, welcher die Zielvorgabe für das Projekt zu 100% erfüllte.


 

Fazit & Ausblick

Also: Python-Client programmieren, kurz ‘bissl’ Plastik zusammenkleben und das ganze ans Internet anschließen. Klingt einfach, oder?

Aber das Gefühl, wenn man ein Signal in den Himmel schickt und ein selbstgebauter Kasten eine physische Reaktion in unserer realen Welt auslöst ist grandios. Im Kopf stand ich schon mehrere Male mit meinem Handy in der Hand da und machte Ausrufe wie FUS RO DAH oder beschwor die Macht von Grayskull.

13vxci

Und auch unseren Stress- und Langzeittest überlebte unsere Boomgate-Box. Nur wenige einzelne Mankos mussten wir im Nachgang noch einmal adressieren. So mussten wir z.B. den 24-Stunden-Disconnect unseres Providers überbrücken und auch die Anfragefrequenz an den SMS-Dienstleister etwas anpassen, um Ressourcen und Traffic zu reduzieren.

Alles in Allem also ein funktionierendes, erfolgreiches Projekt. Was will man mehr?

(KUNSTPAUSE)

Ohhhhhh, “Mann” will einiges MEHR. Zum Beispiel:

  • Eine Weboberfläche, um Nutzer in die Datenbank eintragen zu können
  • Ein Code-Generator, um einmal gültige Befehle an Besucher austeilen zu können
  • Status-LEDs zur visuellen Ausgabe der Systemzustände
  • Einen Sicherheits-Funkauslöser, um unabhängig vom SMS-Dienstleister zu sein
  • Anbindung eines eigenen GSM-Modems
  • Möglichkeit per Anruf die Schranke zu öffnen
  • etc…

Die Liste ist lang und wenn man solch ein Projekt mal angeht, sieht man wie schnell es wachsen kann und auch die Ansprüche dazu formuliert werden.

Probleme, Stolpersteine & Learnings

Im Rahmen des Berichts will ich nicht auslassen, dass wir auch so manche Herausforderung zu meistern hatten. So ist z.B. die Anbindung von Whatsapp-Nachrichten über inoffizielle APIs nicht so einfach wie man es sich vorstellt, und Whatsapp scheint sehr interessiert daran zu sein Accounts, die nicht ihren eigenen Client verwenden, direkt zu blocken.

Auch im Bereich Hardware sind uns erste Designvorschläge um die Ohren geflogen, da sie zu komplex oder zu einfach waren. Der Mittelweg ist oftmals die richtige Lösung.

Learnings:

  1. Python ist eine schöne Sprache. Leerzeichen spielen hier eine große Rolle (und ich schreibe diese Zeile mit einem Quant Nervosität und einem irren Blick in den Augen).
  2. Wow kann man viel mit einem Raspberry machen. Voll cool!
  3. Kleine Features → großer Aufwand.
  4. Auch kleine Projekte muss man wie die Großen behandeln und niemals Dokumentation und Post Mortem außen vor lassen

Hier noch eine Liste an Dingen die man braucht, um solch ein Projekt umzusetzen:

Einkaufsliste:

  • Raspberry Einheit inkl. WLAN-Dongle
  • Servo-Motor
  • Twilio-Account für das SMS-Handling
  • Werkzeug (Drehmel, Heißklebepistole, Metalbaukasten)

Verwendete Software:

  • Frische Installation von Raspbian auf dem Raspberry
  • Python Paket für GPIO-Steuerung
  • MySQL Datenbank
  • Twilio-Libraries
  • Gmail-Account für den Versandt von Emails (Logging)