Twitter ist wohl der Kurznachrichtendienst mit den meisten aktiven Usern. Wobei nicht hinter jedem Konto ein Mensch steht – die meisten sind einfache Bots, die automatisch Nachrichten veröffentlichen. Durch die Twitter API ist es einfach seinen eigenen Raspberry Pi Twitter Bot zu erstellen.
In diesem Tutorial wollen wir genau das tun. Unser Twitter Bot soll nicht nicht einfache Nachrichten sondern auch Bilder veröffentlichen können. So können Follower über das eigene Projekt auf dem Laufenden gehalten werden oder man selbst von überall bspw. immer seine CPU Temperatur überwachen.
Zubehör
Der Raspberry Pi Twitter Bot benötigt nicht viele Komponenten. Lediglich ein Raspberry Pi 3 und eine stabile Internetverbindung ist nötig. Darüber hinaus kann aber so ziemlich jedes Modul oder Sensor genutzt und dessen Daten veröffentlicht werden. Hier einige einfache Beispiele:
- Raspberry Pi Kamera (für Überwachungsbilder)
- Gassensor
- Temperatursensor
- uvm.
Das Einbinden der entsprechenden Module ist sehr einfach.
Einrichtung des genutzten Zubehörs
Falls du einfach nur Text posten willst, kannst du dieses Kapitel überspringen. Falls du allerdings Daten (wie Bilder oder Sensorwerte) veröffentlichen willst, so müssen die Module zunächst eingerichtet werden. Zu fast allen Modulen findest du auf dieser Seite Tutorials (Suchfunktion), daher hier nur eine kleine Auswahl an Möglichkeiten. In den Kommentaren kannst du gerne posten, welche Daten du vor hast per Twitter zu veröffentlichen:
- Luftfeuchtigkeit und Temperatur messen
- Helligkeit (Licht) messen
- Gaswerte auslesen
- Übersicht vieler weiterer Sensoren
Die meisten Tutorials nutzen die Programmiersprache Python um Daten auszulesen, daher werden wir dies auch im Folgenden nutzen, um die Twitter API zu füttern. Falls du mittels C++ o.ä. Daten ausließt, so ist mit Python auch möglich die Skripte aus dem Code aufzurufen.
In meinem Fall nutze ich die Kamera. Dazu verbinde ich die Kamera zunächst mit dem CSI Port auf dem Raspberry Pi (Beschriftung: Camera). Danach muss sie noch aktiviert werden. Dies geht indem wir uns per SSH verbinden und die das Konfigurationsmenü aufrufen:
sudo raspi-config
Unter „Interfacing Options“ -> „Camera“ aktivieren wir das Modul. Danach ist ein Neustart des Raspbian Systems nötig. Wie hier erklärt, kannst du die Kamera anschließend testen:
raspistill -o image.jpg
Im (Home)Verzeichnis sollte ein Bild abgelegt worden sein.
Kontoeinrichtung für den Raspberry Pi Twitter Bot
Um die Twitter API nutzen zu können, müssen wir natürlich ein Twitter Konto haben. Falls noch nicht geschehen, erstellen wir zunächst einen Twitter Account. Wichtig ist, dass der Account eine hinterlegte Mobilnummer hat, denn ohne die darf die API aus Missbrauchsgründen nicht genutzt werden.
Anschließend gilt es eine sog. „App“ / Anwendung zu erstellen. Darüber bekommen wir Zugangsschlüssel, die wir in unserem Programm verwenden werden. Wir öffnen die Twitter Seite und füllen Sie mit unseren Daten.
Was genau eingetragen wird, ist nicht all zu wichtig. Ich habe dies eingetragen:
- Name: Tutorials-RaspberryPi.de Bot (Name darf nicht bereits existieren)
- Description: Mein Raspberry Pi Bot zum Posten von automatischen Nachrichten
- Website: http://example.com
Wir wechseln danach auf „Key and Access Tokens“, wo API Key und API Secret stehen. Stelle sicher, dass „Read and Write“ Rechte vorhanden sind.
Darunter befindet sich der Absatz „Your Access Token“. Hier erstellen wir einen, indem wir „Generate“ drücken. Die Daten werden gleich benötigt.
Installation & Testen des Raspberry Pi Twitter Bot (Python)
Um mit der Twitter API kommunizieren zu können, nutzen wir ganz einfach da Twython Package. Dies installieren wir zunächst, falls es noch nicht vorhanden ist:
sudo apt-get install python-setuptools python-pip sudo pip install twython
Nun erstellen wir ein Beispielskript. Dies kann in verschiedener Weise verändert werden – je nachdem was man damit anstellen möchte.
sudo nano twitterbot.py
Das Skript bekommt den folgenden Inhalt. Die Keys müssen entsprechend angepasst werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#!/usr/bin/env python import sys, time from twython import Twython from picamera import PiCamera CONSUMER_KEY = 'Vt4ngwEPyUnXOsoOSFXuybaR4' CONSUMER_SECRET = '4pA3YUSfsvx4Nw2tBLu1LuXUqilx0nSLTiUwXYEobabgiUKP70' ACCESS_KEY = '4289514991-wWhq79UPOiF0zk6E4ItpSdQLon5yTR8KRxvXYOO' ACCESS_SECRET = 'tl3rX4j3lGvSu4F0rnKOnw5QLvWTJIUAEuGKfn6f2t5NQ' twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET) # Send text #twitter.update_status(status='Raspberry Pi Twitter API Test') # Take picture and post it my_file = open('twitter_image.jpg', 'wb') # open for write camera = PiCamera() camera.resolution = (1024, 768) camera.start_preview() # Camera warm-up time time.sleep(2) camera.capture(my_file) my_file.close() my_file = open('twitter_image.jpg', 'rb') # open for read response = twitter.upload_media(media=my_file) twitter.update_status(status='Raspberry Pi Twitter API Post', media_ids=[response['media_id']]) |
Wenn du die Kamera nicht nutzt, so kannst du den unteren Teil streichen (picamera ist Teil von Raspbian).
Nach dem Speichern und beenden des Editors (STRG+O sowie STRG+X), führen wir das Skript aus:
sudo python twitterbot.py
Damit wird automatisch dein Post gesendet. Es ist übrigens auch möglich Videos zu senden.
Hier mein automatischer Post:
Raspberry Pi Twitter API Post pic.twitter.com/p5PgxBn89Y
— TutorialsRaspberryPi (@tutorialsRPi) 26. Januar 2018
Raspberry Pi Twitter Bot automatisch Nachrichten senden lassen
Unser Twitter Bot ist nun einsatzbereit und kann jegliche Daten auf Abruf versenden. Der Zweck eines Bots ist aber, dass dieser eben die Daten nicht nur Abruf sondern automatisch versendet. Daher ist es sinnvoll das Skript in den Autostart zu setzen.
Dazu kannst du entweder einfach Crontab nehmen, oder aber ein Autostart Skript schreiben, welches beim Hochfahren gestartet wird. Über Cron lassen sich hingegen Aktionen zu bestimmten Zeiten oder zu bestimmten Ereignissen (wie das Booten) ausführen.