DSLR & Telegram

Der Titel mag vielleicht etwas verwirren, doch ich meine tatsächlich: Eine Kamera mit einem Messenger steuern.

Für alle, die Telegram nicht kennen, es ist das Pendant zum weitaus bekannteren Whatsapp. Auf die Vorzüge von Telegram will ich hier nicht eingehen, hierfür haben sich schon andere Blogger die Mühe gemacht -> siehe hier.

Noch eine Sache, bevor wir beginnen! Was in den folgenden Zeilen steht ist eine reine Spielerei. Eine Kamera mit einen Messenger steuern ist nicht gerade praktikabel, als netter Zeitvertreib jedoch sicherlich angebracht.

Get Telegram

Zu Beginn benötigt man natürlich Telegram. Neben der App am Smartphone verweise ich auch auf die PC/Mac-Version. Es ist überaus praktisch, dem Bot über den PC aufzusetzen, als über das Handy.

Danach gibt man in das Suchen-Feld den Namen BotFather ein. Dies ist der Manager aller Bots auf Telegram. Bei ihm sucht man um einen neuen Bot an.

Search_Botfather

Nachdem ihr den BotFather mit /start aufgerufen habt, erstellt ihr einen neuen Bot nach dem gleichen Schema wie im Bild unten gezeigt.

Talk_To_BotFather.PNG

Ist der Vorgang abgeschlossen, so erhält man einen eindeutigen Token. Dieser ist später im Programm wichtig!

Get Components

Euer Bot ist nun bereit. Doch um ihm zum Leben zu erwecken benötigt es einen Körper. In diesem Fall das Raspberry Pi 2 Model B (mit aktiver Internetverbindung).

Raspberry Pi.jpg

Im Grunde ist das auch alles was man benötigt. Ich arbeite jedoch nicht direkt am Raspberry, sondern via Terminal mit PuTTY. Die Daten schicke ich dem Pi per FileZilla.

Pre-Code

Bevor man das Programm, welches sich wie immer auf GitHub befindet starten kann, benötigt man ein paar Zusätze.

Telepot

Telepot erlaubt es mit dem Telegram-Bot via Python zu kommunizieren. Es ist denkbar einfach, Telepot auf sein Raspberry zu hohlen. Man muss lediglich folgende Commands in die Kommandozeile eingeben:

$ sudo apt-get install python-pip
$ sudo pip install telepot
$ sudo pip install telepot --upgrade  # UPGRADE

gPhoto2

gPhoto2 sorgt für die Kommunikation zwischen Raspberry und angeschlossener Kamera. Hier werden beinahe alle am Markt verfügbaren Kameras unterstützt (Eine Liste gibt es hier) . Man hohlt es sich wiederum durch den Befehl:

$ wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh && chmod +x gphoto2-updater.sh && sudo ./gphoto2-updater.sh

Nun zum Test. Einfach die Kamera via USB an das Raspberry anschließen und sich diese dann im Terminal anzeigen lassen.

Dazu öffnet man zuerst den Terminal am Raspberry und tippt folgenden Befehl ein:

sudo --gphoto2 --auto-detect

Auto_Detect.PNG

Hat dies funktioniert, so kann man zum nächsten Schritt weiter gehen.

Der Code

Wie bereits erwähnt befindet sich das Programm auf GitHub und wurde mit Python 2 programmiert.

Token & User ID

Nun kommt der Token, welchen ihr vom BotFather bekommen habt, ins Spiel. Im Bereich des Beginns des Programms findet man die Zeilen

Bot_Name = "CameraBot"
Bot_Token = "INSERT TOKEN HERE"

Der Botname ist jener Name, welcher in den Nachrichten angezeigt wird, sofern ihr ihn mit Hilfe des BotFathers geändert habt (/setname). Der Token ist die eindeutige Kennung für den Bot.

Nun könnt ihr das Programm starten. Dazu muss man wieder über das Terminal den Startbefehl geben, oder man nutzt die auf Raspbean vorinstallierte Python 2 IDLE. Nutzt man das Terminal, und befindet man sich mit diesem im richtigen Verzeichnis, so muss startet man das Programm mit dem folgenden Befehl:

python DSLR_Telegram.py

Die Admin-ID

Momentan existiert kein Admin-User! Wie ihr vielleicht im Programm bemerkt habt, ist als Admin-ID eine Reihe Nullen eingetragen. Um die ID eures Telegram-Accounts herauszufinden, müsst ihr den Bot auf Telegram mit eurem Handy oder dem PC starten.

Dies erreicht man, indem man nach ihm im Suchen-Feld sucht. Gebt dazu den Namen des Bots ein. Achtet auf das @ vor dem Namen. Achtung! Der Name des Bots ist nicht jener, den ihr vielleicht mit /rename erzeugt habt, sondern der, den ihr ganz am Anfang gewählt habt!

Habt ihr den Bot gestartet, so wird die Meldung „Access denied.“ erscheinen. zusätzlich seht ihr im Terminal am Raspberry, dass ein Zugriff passiert ist. Darin findet ihr neben euren Namen auch eure ID. Brecht nun das Script ab und fügt die ID in das Programm in der Zeile

Admin_Users = [00000000] # INSERT USER ID !

ein. Startet das Script neu. Nun seht ihr, dass euch der Bot eine Startnachricht gesendet hat.

Nutzer Hinzufügen

Wollt ihr einen Nutzer hinzufügen, so muss dieser dem Bot das Keyword /start schreiben. Daraufhin schickt die ID des Nutzers an den Admin-User – euch.

Schickt nun dem Bot auf Telegram folgende Nachricht: /addUser ID Vorname Nachname

Achtet auf die Leerzeichen und lasst nichts aus. Wenn der Nachname unbekannt ist, oder wenn ihr eine Gruppe hinzufügt, schreibt (unknown) oder (group) statt dem Nachnamen. Der Bot ist nicht auf Eingabefehler abgesichert. Eine falsche Eingabe könnte zum Programmabsturz führen.

Ja, in der Hinsicht war ich Faul.

Kameraliste abrufen

Die Kameraliste bekommt ihr, indem ihr /getCam dem Bot mitteilt.

Get_Cam.PNG

Einstellungen abrufen und setzen

Mit diesem Script könnt ihr drei Einstellungen anpassen. ISO, Blende und Belichtungszeit. Wie die Syntax genau lautet seht ihr im Programm, oder indem ihr dem Bot die Nachricht /info schreibt.

Den ISO-Wert kann man mit /getISO abrufen. (Da ich die Werte in ein Dictionary schreibe und ich mir nicht die Mühe des Sortierens machen wollte, sieht die Liste etwas ungeschickt aus)

Get_ISO.PNG

Und mit /setISO Zahl könnt ihr den ISO-Wert setzen. Hier wieder auf das Leerzeichen achten!

Set_ISO.PNG

So geht man auch mit den beiden anderen Werten um.

  • /getAV und /setAV Zahl für die Blende
  • /getTV und /setTV Zahl für die Belichtungsdauer

Kamera auslösen

Zum Schluss will man natürlich noch ein Bild gesendet bekommen. Dies erreicht man über /pic

Pic.PNG

Noch eine kleine Anmerkung: Ich musste die Bildqualität weit nach unten setzen, da die Datei ansonsten zu lange zum senden dauert. Niemand will 10 Minuten auf ein Bild warten.

Resümee

Mit Telegram ein Bild gesendet zu bekommen ist nun nicht gerade das Neueste. Doch ich dachte mir, als mein erstes Raspberry-Script wollte ich 2 Fliegen auf einmal erwischen.

Telegram-Bots sind eine tolle Idee, um sich den Alltag zu erleichtern, etwa ein Erinnerungs-System für Gruppen. So kann niemand einen Termin vergessen.

Dann ist da noch die Möglichkeit, eine Kamera einfach via Python zu bedienen. Dies kommt mir bei Kamera-Projekten sehr gelegen, sei es beim Fotografieren von Wassertropfen oder beim Erstellen von Time-Lapse-Aufnahmen.

Vielleicht habe ich ja den einen oder anderen auf den Geschmack gebracht, und es entstehen mehr und mehr spannende Projekte!

Für nicht-Python User ist es vielleicht schwer, dem Programm zu folgen, wer dazu Fragen hat: Ein Kommentar ist immer erwünscht!

.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s