RPi-Projekt Twitternde Webcam Teil 2: Hallo Twitter

Im zweiten Teil dieser Artikelserie werde ich dem Raspberry Pi das Twittern beibringen.

Artikelübersicht

Teil 2: Hallo Twitter

Damit der Raspberry automatisch Tweets verschicken kann, benötige ich eine Bibliothek für eine Skriptsprache, die eine Anbindung an den Kurznachrichtendienst bietet. Das von mir genutzte Raspbian hat von Hause aus die Skriptsprache Python an Bord, die mit dem Modul Twython über eine entsprechende Schnittstelle verfügt. Um Twython zu installieren sind folgende Schritte notwendig. Vor der Installation mache ich vorsichtshalber noch ein Update, damit alle Pakete auf dem neuesten Stand sind.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install twython

Eine Twitter App registrieren

Um die Bibliothek nutzen zu können, muss man zunächst bei Twitter eine eigene App anlegen, über die man Zugriff auf sein Twitter-Konto über die API bekommt. Über diesen Link komme ich auf die entsprechende Seite zur Neuanlage einer App.

Twitter-App anlegen

Die Pflichtfelder müssen ausgefüllt werden. Der Name der App muss twitterweit eindeutig sein, hier muss man sich also einen einmaligen Namen ausdenken. ;-) Nachdem man die Bedingungen akzeptiert und den Neuanlage-Button geklickt hat, ist man schon in den Konfigurationsseiten der eigenen App.

Konfigseite Twitter App

Hier ist es wichtig, dass bei "Access-Level" die Einstellung "Read and Write" gesetzt ist. Wenn nicht, kann man dass über den Reiter "Permissions" noch ändern. Im Reiter "Keys und Access Tokens" kann man sich nun über den entsprechenden Button sein persönliches Access Token erstellen.

Twitter App Access Tokens

Diese Seite lasse ich geöffnet, da ich die Werte gleich beim erstellen meines Python-Skripts benötige.

Skript anlegen

Jetzt lege ich ein Verzeichnis an und erstelle dort ein Python-Skript.

mkdir raspitweet
cd raspitweet
nano raspitweet.py

Das Skript sieht folgendermaßen aus:

#!/usr/bin/env python
import sys
from twython import Twython
CONSUMER_KEY = '***************Deine Daten*****************'
CONSUMER_SECRET = '***************Deine Daten*****************'
ACCESS_KEY = '***************Deine Daten*****************'
ACCESS_SECRET = '***************Deine Daten*****************'

api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET) 

api.update_status(status=sys.argv[1])

Die Werte für die Keys und Secrets übernehme ich natürlich aus der oben geöffneten Webseite. Nach dem Speichern des Skripts mache ich es noch ausführbar:

chmod a+x raspitweet.py

Jetzt erzeugt ein

python raspitweet.py 'Basteln mit dem Rasperry Pi. :-)'

den folgenden Tweet.

Das klappt ja schon prima. :-) Da der Raspi ja auch Bilder twittern soll, muss das Skript noch etwas erweitert werden.

#!/usr/bin/env python
import sys
from twython import Twython
CONSUMER_KEY = '***************Deine Daten*****************'
CONSUMER_SECRET = '***************Deine Daten*****************'
ACCESS_KEY = '***************Deine Daten*****************'
ACCESS_SECRET = '***************Deine Daten*****************'

api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET) 

# upload the last photo taken by fswebcam
photo = open('/home/pi/raspitweet/image.jpg', 'rb')
response = api.upload_media(media=photo)

# finally we send the tweet
api.update_status(status='Der Raspi twittert jetzt auch Bilder.', media_ids=[response['media_id']])

Das Skript nimmt also das Bild mit dem Dateinamen "image.jpg" in unserem Skriptverzeichnis und lädt es zusammen mit einem Text zu Twitter hoch. Ein Start des Skripts mit

python raspitweet.py

hat nun diesen Tweet zur Folge.

Mario Hommel on Twitter

Jetzt habe ich alles, um erfolgreich das Bild der Webcam twittern zu können. Mittlerweile hatte ich noch überlegt, ob man vielleicht einige aktuelle Wetterdaten mit in den Tweet nehmen könnte. Also schaue ich in Teil 3 dieser Serie, ob und wie ich mit dem Raspi an Wetterdaten heran komme.

RPi-Projekt Twitternde Webcam Teil 1: Der Raspi macht Bilder

Vor einiger Zeit habe ich mal einen Tweet gelesen, ich habe ihn auf die Schnelle nicht wieder gefunden. Er ging ungefähr so: "Neue tolle Projektidee für den Raspberry Pi, Hardware bestellt, nie wieder angefasst." Auch bei mir liegen mittlerweile zwei Raspis herum, werden ab und an mal gestartet und mit einer anderen Distro bespielt, aber das wars dann auch schon.

Jetzt hatte ich nach Ostern ein paar Tage Urlaub und war in Bastellaune. Da kam mir die Idee, mit dem etwas ältern RPi Modell B und einer hier ebenfalls schon etwas angestaubten Webcam von Logitech eine Webcam aufzubauen, die ihre Bilder dann auch twittern kann. Eigentlich kein großes Ding, also hab ich mich mal daran gesetzt und das Ergebnis dokumentiere ich hier in dieser kleinen Artikelreihe.

Artikelübersicht

Teil 1: Der Raspi macht Bilder

Wie gesagt nehme ich für das Projekt einen Raspberry Pi Modell B und eine Logitech Webcam.

Raspberry Pi und Webcam

Als Betriebssystem habe ich zunächst das akutelle Raspbian-Image auf https://www.raspberrypi.org/downloads/ gezogen und auf die obligatorische SD-Karte übertragen. Das neue Image bootet automatisch in den grafischen Modus. Das ist für den späteren Betrieb unnötig. Im Terminal habe ich also zunächst mit

sudo raspi-config

die Konfiguration dahingehend geändert, dass der Raspi nur noch in den Textmodus startet. Bei dieser gelegenheit wurde gleich noch die Sprache, Tastaturlayout und Zeitzone auf deutsche Verhältinisse angepasst.

Damit bin ich auch schon bereit, den ersten Schritt anzugehen, nämlich mit der Logitech Kamera Bilder auf dem Raspi zu produzieren. Die Kamera wurde dazu an einen der beiden USB-Ports angeschlossen. Eine Softwarepaket, dass einfach Bilder mit einer Webcam erzeugt, war mit "fswebcam" schnell gefunden. Das Paket wird einfach mit

sudo apt-get install fswebcam

installiert. Die Nutzung ist denkbar einfach:

fswebcam image.jpg

sucht nach der ersten angeschlossenen USB-Kamera und mach ein Bild, das unter dem angegebenen Dateinamen abgespeichert wird. Dabei wird eine Default-Auflösung von 384x288 genutzt. Die Auflösung kann man über den Parameter "-r" ändern, so erstellt

fswebcam -r 800x600 image.jpg

ein solches Bild:

Raspberry Testbild

Wie man sieht, fügt fswebcam dem Bild automatisch ein Banner mit dem aktuellen Datum und der Uhrzeit hinzu (wie bei Webcams durchaus üblich). Dies kann man über den Parameter "--no-banner" aber auch ausschalten. fswebcam hat noch einige Parameter mehr zu bieten, diese kann man sich über die Manpage des Pakets zu Gemüte führen. Ich benötige zunächst nur die oben angegebene Variante für meine Zwecke.

Da das Aufnehmen von Bildern über die Webcam jetzt funktioniert, können wir uns im nächsten Teil der Artikelreihe damit befassen, dem Raspi das Twittern beizubringen.

Debian: Aus Iceweasel wird wieder Firefox

Die Linuxdistribution Debian führte den beliebten Internetbrowser Firefox bisher aus lizenztechnischen Gründen unter einem eigenen Fork mit dem Namen Iceweasel. Aufgrund der Updatepolitik von Debian wurde der Browser in den Paketquellen der stabilen Version auch nicht mehr auf höhere Majorversionen upgedatet. Debiannutzer, die eine Iceweasel-Version nutzen wollten, die der aktuellen Firefox-Version entsprach, mussten sich mit sogenannten Backports behelfen. Dazu ist die Seite http://mozilla.debian.net die Anlaufstelle. Dort erhielt man bisher nach Eingabe der genutzten Debian-Version und der gewünschten Variante von Iceweasel die Angabe der Paketquellen, die in die /etc/apt/sources.list eingetragen werden musste.

Seit einiger Zeit erzeugt die bisher funktionierende Backports-Adresse für Iceweasel allerdings bei Update einen Fehler. Der Grund hierfür ist, dass die Backports jetzt auf den originalen Firefox umgestellt wurden.

Aus meiner bisher unter Debian Jessie genutzen Paketquelle

deb http://mozilla.debian.net/ jessie-backports iceweasel-release

wird jetzt

deb http://mozilla.debian.net/ jessie-backports firefox-release

Nach der Umstellung kann ich dann mit

$ apt-get update
$ apt-get install -t jessie-backports firefox firefox-l10n-de

die aktuelle Firefox-Version samt deutscher Sprachpakete installieren.

Die nun nicht mehr aktuellen Iceweasel-Pakete habe ich noch mit

$ apt-get remove iceweasel

deinstalliert.

Wer weiter Iceweasel nutzen möchte, kann bis zur aktuellen Stable von Debian die originalen Pakete der Distribution nutzen. Dort wird die ESR38 von Iceweasel noch weiter gepflegt. Einen älteren Backport von Iceweasel weiter zu nutzen ist nicht unbedingt empfehlenswert, da hier natürlich keine Fehler und Sicherheitslücken mehr gefixt werden.

Instagram sperrt API-Zugiff auf den User Stream ab dem 1. Juni 2016

Schlechte Nachrichten für Nutzer von alternativen Apps für das Fotonetzwerk Instagram. Im Entwickler-Blog kündigte das zu Facebook gehörende Netzwerk an, den API-Zugriff auf die Endpunkte /users/self/feed und /media/popular abzuschalten. Neue Apps bekommen jetzt schon keinen Zugriff mehr, für bestehende Apps ist am 1. Juni Schluss.

So bekam ich heut in der iOS-App Flow die folgende Meldung nach dem Start angezeigt:

Flow Meldung

Flow schaltet aufgrund der Änderung ab sofort alle kostenpflichtigen Features für alle frei, am dem 1.6. wird die App nicht mehr funktionieren.

Nach der Ankündigung, den Stream in Zukunft nicht mehr chronologisch, sondern nach einem Algorythmus zu sortieren, ist dies ein weiterer tiefer Einschnitt bei der Nutzung des sozialen Netzwerks.

Meiner Meinung nach keine schöne Entwicklung, da die Nutzer hierdurch unnötig bevormundet werden. Was meint ihr dazu?

Ein wenig Kosmetik

Im nächsten Monat wird mein kleiner Blog hier tatsächlich schon 10 Jahre alt. Grund für mich, im Vorfeld des "Jubiläums" ein wenig an der Optik zu schrauben.

So habe ich das Template auf das "Next"-Theme von Matthias umgestellt. Dieses ist an das bisher hier genutzte Standardtemplate "2k11" angelehnt, ist aber grundlegend modernisiert.

Offensichtlich ist, dass ich mich von der dreispaltigen Ansicht verabschiedet habe. Auch möchte ich mal eine Schrift mit Serifen ausprobieren, da solche Schriften sich nach meinem Empfinden etwas besser am Bildschirm lesen.

Die bisherigen Seitenleistenelemente sind weiterhin vorhanden, allerdings nun alle in der rechten Seitenleiste.

Die Änderungen sind nicht radikal. Ich hoffe, dass euch die neue Optik gefällt. Wenn es irgendwo hakt oder etwas komisch aussieht, lasst es mich bitte in den Kommentaren wissen.

Twitter Client Oysttyer mit kleinem Update

Vor kurzem berichtete ich über den Twitter Client Oysttyer, der aus einem einzelnen Perl-Skript besteht und das Twittern auf einer Textkonsole ermöglicht.

Jetzt gab es ein kleines Update, dass einige Verbesserungen und Fehlerbehebungen mitbringt.

Changes in version 2.6.1:

  • Add the ability to share tweets via direct message with the /qdm command (Work towards of 2.7 milestone)
  • Use the Twitter account in the prompt instead of oysttyer when showusername is true.
  • Add ':large' to Twitter image URLs when largeimages is true.
  • Add a space between tweets when doublespace is true.
  • Fixed an issue where retweeted tweets displayed the wrong timestamp.
  • Fixed an issue where tco were not destroyed in threads
  • Display link to video file instead of link to video thumbnail in tweets
  • Display video files in /entities
  • Bring /entities back into Twitter TOS compliance and make it only open tco links (I.e. make it behave worse. Sorry)
  • Add tab expansion for like and retweet (missed from 2.5.1)

Interessant finde ich besonders den neuen Parameter "doublespace", der eine Leerzeile zwischen die einzelnen Tweets zaubert. Das macht den Stream nach meiner Meinung besser lesbar.

So sieht der Stream ohne "doublespace" aus:

oysttyer ohne ds

Und so mit:

oysttyer mit ds

Mir gefällt das so wesentlich besser, weshalb meine .oysttyerrc jetzt so aussieht:

# Die Daten für meine erstellte Twitter-App
oauthkey=XXXXX
oauthsecret=XXXXXX
# Farbe für ansifähige Terminals einschalten
ansi=1
# Neue Zeilen in Tweets erlauben
newline=1
# Nach 120 Zeichen umbrechen (je nach Bildschirmgröße verwenden)
wrap=120
# Pflicht, sonst geht die Twitter-API nicht
ssl=1
# Nutzung des Echtzeit-Streamings
dostream=1
# Beim Start auf neue Version prüfen
vcheck=1
# Leerzeile zwischen den Tweets
doublespace=1

Ich bin gespannt, was die nächsten Versionen von Oysttyer noch so bringen. Zum Updaten wird einfach die aktuelle Version von Github gezogen und die oysttyer.pl mit der neuen Datei überschrieben.

BBUGKS-Live #7

BBUGKS-Live Logo

Endlich haben Oliver und ich es geschafft, eine neue Folge unseres Podcasts aufzuzeichnen. In der ersten Folge in 2016 berichten wir über unser Treffen im Februar. Leider ist auch das Thema "Quo Vadis BlackBerry?" wieder mal ein Thema. Schlechte Nachrichten wie z.B. auch die Einstellung von WhatsApp für BlackBerry lassen uns besorgt über die Zukunft unserer Lieblingsgadgets reden.

Viel Spaß beim Hören der siebten Folge, die ihr drüben im BBUGKS-Blog anhören oder herunterladen könnt.

Und wer den Podcast abonnieren möchte, findet den RSS-Feed hier.

Musik: Words

Weil ich gerade in so einer Stimmung bin.

Tired of words, words, words
Don't want 'em anymore
Words, words, words
How could I deal with them before?
It's like they've taken over and there's nowhere I can hide
What good do they bring? Never fixed anything
So as you can see that's why I'm not speaking
Words.

Bitte schön.

Der Peter Lustig von Löwenzahn

Peter LustigSonntag Mittag, kurz nach dem Mittagessen. Schnell noch beim Abwasch geholfen, dann ging es ins Wohnzimmer und im Fernsehen Löwenzahn anschauen. Spannende Geschichten und Experimente liefen da mit Peter Lustig, dem Mann im Bauwagen, der alles so gut herausfinden und dann erklären konnte. Und am Ende der Sendung hieß es immer "Und ihr, ihr könnt jetzt abschalten." Und das taten wir dann auch (manchmal) und gingen raus zum Spielen, oder das Gesehene wurde direkt in die Praxis umgesetzt.

Das sind die - sicherlich etwas verklärten - Erinnerungen, die ich mit Peter Lustig und seiner Sendung Löwenzahn (ich habe Sie auch schon zu der Zeit gesehen, als sie noch "Pusteblume" hieß) verbinde.

Gestern ist Peter Lustig im Alter von 78 Jahren gestorben und ich bin traurig. Aber auch dankbar für viele schöne Kindheitserinnerungen und einiges an Wissen, das er mir und vielen anderen Kindern gegeben hat.

Auch meine eigenen Kinder schauen ab und zu die alten Folgen, wenn sie im Fernsehen wiederholt werden und ich stelle fest, dass sie zeitlos schön sind.

Neben vielen Videoschnipseln, die ihr auf Youtube finden könnt, gibt es im ZDF am Wochenende vom 27. auf den 28.2. eine lange Löwenzahnnacht und am Sonntagmorgen gibt es einige alte Folgen im Kindervormittagsprogramm.

Wer übrigens noch die Gerüchte darüber im Kopf hat, das Lustig angeblich keine Kinder mochte, dem sei der Artikel in der Zeit ans Herz gelegt, in dem der "Schuldige" nochmal darstellt, wie es zu diesen Gerüchten kam und dass da tatsächlich nichts dran ist.

Danke Peter, machs gut.

Einbruch bei Linux Mint: ISOs vom 20.2.2016 teilweise kompromitiert

Linux Mint

Wie die Entwickler der beliebten Linuxdistribution Mint in ihrem Blog bekannt gaben, kam es zu einem Einbruch in deren Server, wobei die zum Download zur Verfügung gestellten ISOs der Cinnamon Edition kompromitiert wurden. Die Installations-Abbilder enthalten Schadsoftware, die eine Backdoor für Botnetze öffnen.

Laut Chefentwickler Clement Lefebvre sind nur Downloads betroffen, die am Samstag, den 20. Februar 2016 durchgeführt wurden. Besitzer solcher Dateien sollten die im Blogpost angegebenen Checksummen prüfen und, falls mit einem betroffenen Abbild installiert wurde, diese Installation umgehend löschen.

Außerdem wurde das Benutzerforum des Servers ausgelesen. Die Benutzerdaten inklusive verschlüsselten Passwörtern werden bereits zum Verkauf angeboten. Dies hat Zack Whittaker von ZDNET in einem verschlüsselten Chat vom mutmaßlich verantwortlichen Hacker mit dem Pseudonym "Peace" erfahren. Die Erkenntnisse aus dem Chat sind in seinem Artikel bei ZDNET nachzulesen.

tweetbackcheck