Arduino Yun – Foto an Dropbox senden

Heute habe ich wieder einen sehr interessanten Beitrag für Sie. Ich zeige Ihnen wie man mit dem Arduino Yun ein Foto mit einer Webcam aufnehmen, dieses auf der SD Karte speichern und anschließend an seine Dropbox senden kann. Dabei lernen Sie, wie man eine Dropbox App erstellt und wie man vom Arduino Yun aus Befehle auf dem integrierten Linux ausführen kann. Also doch eine ganze Menge interessanter Informationen die Sie hier finden werden. Los gehts also mit dem Beitrag „Foto an Dropbox senden“

ArduinoTembooWebCamDropboxPreview

 

Was benötige ich?

  • Arduino Yun
  • Einen Button oder einen Sensor
  • Einen Dropbox Account
  • Einen Temboo Account

 

Dropbox App erstellen

Um eine Dropbox App zu erstellen loggt man sich zunächst in seinen Dropbox Account ein und ruft anschließend die Seite https://www.dropbox.com/developers/apps auf.

Auf dieser Seite klickt man zunächst oben rechts auf den Button „Create App“. Auf der nächsten Seite wählt man aus dass man eine Dropbox API app erstellen möchte. Setzen Sie ein Häkchen bei „Files and datastores“. Jetzt noch ein Häkchen bei „Yes“ setzen. Damit bestimmen Sie dass die App nur auf Daten innerhalb der App zugreifen darf. Zum Schluss vergeben Sie einen aussagekräftigen Namen für Ihre App.

Im nächsten Fenster können Sie Einstellungen für die neue App vornehmen. Außerdem sehen Sie hier schon den App Key und den App Secret Key, die wir im weiteren Verlauf noch brauchen.

Klicken Sie im Feld „OAuth2“ unter „Generated access token“ auf „Generate“um einen access token zu generieren, den wir im weiteren Verlauf ebenfalls noch benötigen werden.

Im Tab „Details“ können noch Angaben unter Publisher und Description gemacht, sowie eine Website und ein Programmsymbol angegeben werden. Diese Daten werden z.B. auf der Seite Sicherheitseinstellungen/Apps verknüpft in der Dropbox angezeigt. Speichern Sie Ihre Einstellungen.

 

Zugriff auf die App durch Temboo autorisieren

Melden Sie sich auf der Seite temboo.com an.
Klicken Sie links in der Liste der unterstützten Webanbieter auf „Dropbox
Klicken Sie rechts im Fenster unter Bundles auf „OAuth
Klicken Sie auf „InitializeOAuth

 

InitializeOAuth

Temboo - Dropbox - InitializeOAuth

 

Geben Sie oben im Fenster den zuvor in der Dropbox erzeugten DropboxAppKey und Ihren DropboxAppSecret Key ein und klicken Sie auf den Button „Run“. Anschließend wird eine Ausgabe generiert die alles weitere erklärt.

 

Temboo - Dropbox - InitializeOAuth - Output

 

Als erstes muss Temboo dazu autorisiert werden auf den erzeugten Dropboxordner zuzugreifen. Klicken Sie dazu auf „this URL“ im ersten blau umrandeten Feld. Aber Achtung: Wenn Sie sich zu viel Zeit lassen, werden Sie die Meldung erhalten dass die Session abgelaufen ist. Klicken Sie dann einfach noch einmal auf den Button „Run“. Sie sollten nun dieses Fenster zu sehen bekommen. Klicken Sie auf Zulassen und schließen Sie das Fenster das höchstwahrscheinlich sowieso nur aus einer leeren weißen Seite bestehen wird.

Temboo - Dropbox - OAuth - App zulassen

Notieren Sie sich noch die CallbackID und den OAuthTokenSecret und klicken Sie in einem der Ausgabefenster auf den Link „FinalizeOAuth„.

 

FinalizeOAuth

Temboo - Dropbox - FinalizeOAuth

Geben Sie nun oben erneut den DropboxAppKey und den DropboxAppSecret Key ein. Geben Sie die CallbackID und den OAuthTokenSecret Key, die auf der „InitializeOAuth“ Seite generiert wurden ein.
Klicken die auf den Button „Run“.

Auch hier gilt, wenn Sie sich zu viel Zeit lassen läuft die Session ab und die Eingabe wird ungültig. Wenn das passieren sollte (Fehlermeldung nachdem Sie auf „Run“ geklickt haben), gehen Sie noch einmal auf das Fenster „InitializeOAuth“ und klicken Sie dort einfach noch einmal auf den Button „Run“ um eine neue CallbackID, sowie einen neuen OAuthTokenSecret Key zu erzeugen.

Wenn alles geklappt hat, sollten Sie jetzt eine Ausgabe mit einem AccessToken, einem AccessTokenSecret und einer UserID sehen.

FinalizeOAuth - Dropbox - OUTPUT

 

Die folgende Ausgabe ist besonders wichtig da wir diese Angaben für das Python Script benötigen das die Fotos erst auf die SDKarte und anschließend in den Dropboxordner unserer eigenen zuvor erstellten App lädt. Notieren Sie sich also den AccessToken, den AccessTockenSecret und die UserID. In dem Pythonscript benötigen wir außerdem noch den Accountnamen, den Applicationnamen und den Key der in Temboo angelegten Application. Diese finden Sie in Ihrem Temboo Account unter Applications.

 

Python Script anlegen

Das Python Script wird auf der SD Karte auf dem Arduino abgelegt. Aufgerufen wird es durch den Arduino selber wenn ein Button gedrückt oder z.B. ein Bewegungssensor ausgelöst wird. Dem Python Script wird der Pfad und der Dateiname des zuvor durch den Arduino auf der SD Karte gespeicherten Fotos übergeben. Anschließend wird das Foto an die Dropbox gesendet und in unserem App Verzeichnis gespeichert.

upload_picture.py

Hier fügen wir jetzt folgendes in die jeweilige Zeile ein.

Hier kommen die Daten aus dem Temboo Applications Fenster rein.
Zeile 17 = Accountnamen, Appnamen, Key

Hier kommen die Daten aus dem FinalizeOAuth Fenster rein
Zeile 24 = DropboxAppSecret
Zeile 25 = AccessToken
Zeile 27 = AccessTokenSecret
Zeile 28 =  DropboxAppKey

Die Datei upload_picture.py muss nun auf die SD Karte gespeichert werden. Dazu müssen wir die SD Karte gar nicht erst aus dem Arduino entfernen und am Rechner anschließen. Das geht auch komfortabler mittels ssh Zugriff.

Öffnen Sie auf Ihrem Rechner ein Terminalfenster und gehen Sie in das Verzeichnis, in dem Sie die Datei upload_picture.py liegen haben. Ich habe die Datei auf dem Dektop liegen, also springe ich mit folgendem Befehl zum Desktop.

 

Mit folgendem Befehl kopieren Sie die Datei schließlich auf die SD Karte auf dem Arduino. Die SD Karte wird bei mir übrigens als „sda1“ im Verzeichnis „/mnt“ gemountet.

 

Da wir gerade dabei sind Daten auf die SDKarte zu übertragen können wir uns noch um einen weiteren, ganz wichtigen Schritt kümmern. Damit das Script funktioniert benötigen wir nämlich noch die temboo-python-sdk auf unserer SD Karte. Laden Sei diese Datei also herunter und speichern Sie diese am besten gleich wieder auf dem Desktop. Danach entpacken Sie das Verzeichnis. Auf dem Desktop sollte sich im Anschluss ein Verzeichnis mit dem Namen temboo befinden.

Öffnen Sie erneut das Terminal und geben Sie folgenden Befehl ein um den kompletten Ordner temboo auf die SDKarte zu übertragen.

 

Arduino Sketch

Kommen wir zum letzten Schritt.
Ich habe das Sketch so geschrieben, dass jedes Mal wenn ich einen Button drücke, ein Bild von der am Arduino Yun angeschlossenen Webcam, aufgenommen und auf der SD Karte gespeichert wird. Anschließend wird das Bild an die Dropbox gesendet.

Ich habe ein paar Variablen angelegt mit denen sich der Programmablauf beeinflussen lässt.

testMode
true = Das Bild wird nur auf der SD Karte gespeichert jedoch nicht an die Dropbox gesendet.
false = Das Bild wird auf der SD Karte gespeichert und anschließend an die Dropbox gesendet

debugMode
true = Es werden Statusmeldungen in der Console ausgegeben. Wenn Sie nicht über WLAN auf den Arduino zugreifen müssen Sie Console durch Serial ersetzen
false = Es werden keine Statusmeldungen ausgegeben

delFromSD
true = das Foto wird auf der SD Karte gespeichert und zum Schluss gelöscht.
false = das Foto bleibt auf der SD Karte und wird nicht gelöscht.

 

 

So das war mal ein hartes Stück Arbeit.
Ich hoffe dass Ihnen auch dieser Beitrag gefallen hat und würde mich über Fragen oder Anregungen in den Kommentaren sehr freuen.

 

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

6 Kommentare zu “Arduino Yun – Foto an Dropbox senden

  1. Hi,
    danke für das tutorial. Sehr gut beschrieben. es klappt auch! … fast.
    In den Python script muss in Zeile 17 = Accountnamen, Appnamen, Key
    Unter meinen temboo account infos
    (https://www.temboo.com/account//applications )
    ist aber auch nach dem ganzen OAuth kram keine app bezüglich des yun,dropbox zu finden. Habe ich was übersehen?

    Viele grüße
    frank

    • Auf der Seite erscheint nichts was mit der Dropbox oder OAuth zu tun hat. Da stehen nur die Daten zu Deinem Temboo Account.Also Account, Application und Key. Das sollte also so passen.

  2. okay sorry, was ich meinte accountname und appname sind klar aber wo finde ich den key? wenn man z.b die choreos auf der seite testet gibt es da immer einen neuen key (z.b. bei dem text an dropbox beispiel)

    • Natürlich ändert sich der Key ständig wenn Du es testest.
      Speichere Deine Settings wie in de Beitrag beschrieben und der Key wird sich nicht mehr ändern.

  3. Hi okay es klappt jetzt.
    Man muss doch tatsächlich unter application eine app haben und diesen appnamen und key in seinem python script verwenden…

  4. Hallo,
    tolles Tutorial und habe dies erfolgreich umgesetzt. Ich baue momentan eine SLR Web Cam mit einer Canon 1200D. Angesteuert wird die Cam mit einem Yun und Gphoto2 – Programm, welches toll funktioniert. Über Gphoto2 werden die Cam- Einstellungen und der Bildintervall gesteuert. Die Bilder werden auf der Yun- SD Karte abgespeichert – funktioniert alles. Nur bekomme ich die Bilder nicht auf meinen Web Server geladen. Es sollte das aktuelle Bild an den Server gesendet und danach von der SD Karte gelöscht werden. Aber das Senden kriege ich leider nicht hin. Bitte um einen Tipp und vielen Dank – Karl