xingtwittersharerefreshplay-buttonpicture as pdflogo--invertedlinkedinkununuinstagram icon blackShapeGroup 3 Copy 2Group 2 Copydepartment_productdepartment_datascienceuserclosebasic clockblogShapearrows slim right copy 3arrows slim right copy 3arrows slim right copy 3

Party-Greeting-Machine - Raspberry Pi und die Foursquare Venue-Push-API

|

30. Jun 2013 |

- min Lesezeit

Party-Greeting-Machine - Raspberry Pi und die Foursquare Venue-Push-API
Als kleines Gimmick für unsere Einweihungsfeier wollten wir einen Teil der virtuellen mit ein bisschen Bastelarbeit in der realen Welt erlebbar machen. Okay, ich geb's ja zu, ganz so hehre Ziele hatten wir vielleicht nicht. Eigentlich wollten wir einfach schon immer mal was mit den machen, und ein , das gerade nicht wirklich in Gebrauch war, war auch schnell gefunden.

So war nach ein bisschen Brainstorming und Recherche folgende Idee geboren:

  • Checkins in der Foursquare-Venue unseres Büros werden von der Foursquare Venue-Push-API an eine kleine Node.js-Applikation auf dem Raspberry Pi geschickt
  • die Node.js-Applikation steuert einen der GPIO-Pins an
  • am GPIO-Pin hängt eine kleine Relaisschaltung
  • die Relais-Schaltung schaltet ein Signaldrehlicht

Vielen Dank an Roland und Stefan. Ihr habt beide wesentlichen Anteil am Gelingen dieses kleinen Experiments.

Hier möchte ich euch kurz beschreiben, was nötig war, um die Idee in die Tat umzusetzen.

Foursquare App

Um die Venue-Push-API benutzen zu können, haben wir erstmal eine Foursquare-App anlegen müssen. Dazu muss man noch ein paar URLs eintragen und natürlich die Push-API entsprechend auf Venue-Pushes konfigurieren.

Wichtig zu wissen ist, dass man einen Foursquare-Account benötigt, welcher Manager einer Foursquare-Venue ist, für die man Pushes erhalten möchte, und dass dieser Account die Foursquare-App dann auch ordentlich über OAuth2 autorisiert.

Manager einer Venue zu werden ist nicht schwer. Ein paar Klicks, eine PIN übers Telefon eingegeben, zur schnellen “jetzt-sofort” Verifikation $2. per Kreditkarte abgedrückt und schon war ich Manager der Foursquare-Venue “DieProduktMacher GmbH”. Wer 3-4 Wochen Zeit hat, kann die Verifikation im übrigen auch auf dem Postweg machen.

Netzwerk

Da die kleine Node.js-Applikation auf dem Raspberry Pi für Foursquare erreichbar sein muss, und unser DSL-Anschluss aktuell keine statische IP-Adresse hat, haben wir einfach eine Subdomain mit DynDNS-Update eingerichtet. Unser DSL-Modem haben wir dann entsprechen so konfiguriert, dass es die IP-Adresse für den DynDNS-Eintrag aktualisiert.

Weiters haben wir dem Raspberry Pi eine feste interne IP-Adresse zugewiesen und Port-Forwarding für den Standard-HTTPS-Port 44. auf die IP-Adresse des Raspberry Pi und Port 888. (da lauscht die Node.js-App) eingerichtet.

HTTPS wird deshalb verwendet, da über die Push-API personenbezogene Daten übermittelt werden, und um diese vor Zugriff durch unbefugte Dritte zu schützen, verlangt Foursquare zurecht, dass die Kommunikation per SSL verschlüsselt wird.

Node.js auf dem Raspberry Pi

Auf unserem Raspberry Pi läuft ein Raspbian, sprich ein Debian Wheezy, welches mit dem Nötigsten ausgestattet ist, um auf dem Raspberry Pi zu laufen und auch die diversen Anschlüsse zu unterstützen. Wie von Debian gewohnt sind auch die Node.js Pakete sehr stabil, aber leider nicht wirklich aktuell. Daher haben wir Node.js direkt aus den Sourcen auf dem Raspberry Pi gebaut. Im Github-Wiki von Node.js findet man eine entsprechende . Wie man sich denken kann, dauert das Kompilieren auf dem Raspberry Pi ein paar Minuten.

Node.js-Applikation

Die Ansprüche sind prinzipiell recht simple, und daher ist der Code auch ziemlich einfach gehalten.

Damit das ganze Handling von Routing, Parameter-Parsing etc. einfach und schnell von der Hand geht, haben wir eingesetzt. Zur Ansteuerung der GPIO-Pins war nach kurzer Suche ein einfaches Node.js-Modul namens gefunden.

Wie weiter oben bei der Foursquare-App erwähnt braucht man einen Foursquare-Venue-Manager-Account, der die App mittels OAuth2 autorisiert, damit Foursquare überhaupt Pushes irgendwo hinschickt. Auch wenn es eigentlich fürs Erste nur eine einmalige Aktion ist, haben wir zur OAuth2-Autorisierung entsprechend das Node.js-Modul eingebunden und konfiguriert.

Im Großen und Ganzen war dann der eigentliche Applikationscode ziemlich gerade aus und schnell runter getippt.

Wer mag, kann den aktuellen Code zur Applikation auf anschauen, runterladen, klonen, forken…

Im README ist etwas detaillierter beschrieben, wie man das zum Laufen bekommt.

Relais und Signaldrehlicht

Um nun mit dem GPIO-Pin des Raspberry Pi das zu schalten bedurfte es noch einer kleinen Relais-Schaltung, so dass die 3.3V(DC) des GPIO-Pin auch einen 220V(AC)-Verbraucher wie die Glühbirne und den Drehmotor schalten kann.

Dazu haben wir gekauft und kurzer Hand ins Anschluss-Kabel des Drehlichtes integriert. Beim Anschließen des Moduls an das Raspberry Pi einfach den 5V-Pin, den von der App angesteuerten GPIO-Pin und Ground des Raspberry Pi mit VCC, Ground und IN1 des Moduls verbinden und zu guter Letzt mit Hilfe des mitgelieferten Jumpers auf dem Relais-Modul COM mit Ground zusammenschließen.

Die originale Glühbirne des Drehlichts war uns leider etwas zu schwach, weshalb wir noch diese erstanden haben. Die brachte uns in der Tat ausreichend Lichtleistung, nur war sie leider etwas länger als das Original, so dass sie nicht mehr passte. Gut, dass ich mir erst vor Kurzem einen 3D-Drucker gekauft und gebaut hatte, so dass am Sonntag-Nachmittag vor der Party schnell die notwendigen Abstandsverlängerungen modelliert und in PLA gedruckt werden konnten.

Sprachausgabe

Buchstäblich in letzter Sekunde haben wir dann noch am Nachmittag vor unserer Einweihungsparty eine akustische Begrüßung mit Hilfe von Sprachausgabe über den OpenSource Text-To-Speech-Synthesizer eSpeak eingebaut. Um es etwas persönlicher zu machen, haben wir dabei den Vornamen des Foursquare-Users verwendet, und als Tüpferl auf dem i - ich weiß nicht ob oder wem es aufgefallen ist - haben wir noch eingebaut, dass männliche Besucher von einer weiblichen und weibliche Besucher von einer männlichen Stimme begrüßt werden.

An dieser Stelle herzlichen Dank an Mario, der uns auf die Idee mit der Sprachausgabe gebracht hat.

Schade ist nur, dass von dem Text-To-Speech-Synthesizer sogar vermeintlich “englische” Namen wie Henry wohl mit eher seltsamen Akzent ausgesprochen wurden.

Ergebnis

Hat mordsmäßig Spaß gemacht daran zu bauen und feilen, und ich freue mich jedes mal wie ein kleines Kind wenn das Ding losgeht ;).

Mal sehen, uns fallen bestimmt noch ein paar Erweiterungen ein. Oder wenn Ihr Ideen habt, lasst in den Kommentaren davon hören.

…and may the source be with you.


Ähnliche Artikel

Ähnliche Artikel