// Jahresrückblick: Wettergraphen 2014

Die Wetteraufzeichnen von Weather.chrisge.org reichen mittlerweile 3 Jahre zurück. Deshalb gibt es dieses Jahr zusätzlich zu den traditionellen Wettergraphen ein kurzer Kommentar zum Wetterjahr 2014.
Leider gibt es dieses mal keine Jahres-Timelapse wie in den beiden letzten Jahren. Dies liegt vor allem daran, dass die Qualität der Webcambilder bereits letztes Jahr erheblich nachgelassen hat (Lichteinstrahlung auf die Webcam). Ein anderer Grund ist aber auch die wiederholte starke Absenkung der „Kamerahalterung“. Bis ich keine bessere Position für die Kamera gefunden habe, werde ich gegen dieses Problem aber nicht mehr vorgehen.

Das Wetter 2014

Doch nun zum Wetter! Der diesjährige August war insgesamt recht kalt, dafür vielen die ersten Juniwochen sehr warm aus. Der September war wie der ganze Herbst sehr mild. Der Herbst war im Vergleich zum letzten Jahr wärmer und zog sich gefühlt bis Ende Dezember hin. Erst in der letzten Woche dieses Jahres wurde es kälter und es viel tatsächlich mal wieder Schnee.
Die Durchschnittstemperatur war auf allen gemessenen Sensoren (und der externen Referenzquelle) höher als die Jahre zuvor, dies bestätigen auch externe Quellen, 2014 gilt als das bisher wärmste Jahr seit Beginn der Wetteraufzeichnungen.

Jahresraffer 2012 & 2013

Hier nochmal die Jahresraffer der letzten beiden Jahren.

  • Timelapse No.9 – One Year in Schutterwald II auf Vimeo
  • Timelapse No.8 – One Year in Schutterwald auf Vimeo

// Wacom Intuos Pen & Touch unter Linux nutzen

Ich habe mir vor kurzem ein Wacom Intuos Pen & Touch S (CTH-480M-N) zugelegt. Die Wacom Grafiktabletts werden dank dem Linux Wacom Project sehr gut von Linux unterstützt (siehe auch hier). In aktuellen Versionen von Ubuntu (in meinem Fall Ubuntu Gnome 14.04) laufen auch die neueren Versionen der Grafiktabletts out of the box, so auch das Intuos P&T. Es ist sogar ein kleines graphisches Einstellungstool in der Standardinstallation enthalten.
In dem folgenden Beitrag werde ich unter anderem darauf eingehen, wie man mit dem CLI-Tool xsetwacom weitere, nicht in der GUI enthaltene Einstellungen vornimmt und (Grafik-)Anwendungen aufzählen, die mit etwas Konfigurationsarbeit die Funktionen des Grafiktabletts unterstützen.

Benutzung von xsetwacom

Das Tool besitzt im wesentlichen die Schalter list, mit dem neben den verfügbaren Geräten auch die möglichen Einstellungen ausgegeben werden können und get sowie set, mit denen die Einstellungen gesetzt oder abgerufen werden können. Eine vollständige Liste der möglichen Einstellungen erhält man so z.B. mit xsetwacom list parameters.

$ xsetwacom 
Usage: xsetwacom [options] [command [arguments...]]
Options:
 -h, --help                 - usage
 -v, --verbose              - verbose output
 -V, --version              - version info
 -d, --display "display"    - override default display
 -s, --shell                - generate shell commands for 'get'
 -x, --xconf                - generate xorg.conf lines for 'get'
 
Commands:
 --list devices             - display detected devices
 --list parameters          - display supported parameters
 --list modifiers           - display supported modifier and specific keys for keystrokes
 --set "device name" parameter [values...] - set device parameter by name
 --get "device name" parameter [param...]  - get current device parameter(s) value by name

Bei mir wird neben dem Radierer und dem Stift das Pad selbst und die Touchfunktion erkannt.

$ lsusb
Bus 001 Device 008: ID 056a:0302 Wacom Co., Ltd
(...)
$ xsetwacom list
Wacom Intuos PT S Pen stylus    	id: 15	type: STYLUS    
Wacom Intuos PT S Pen eraser    	id: 16	type: ERASER    
Wacom Intuos PT S Finger touch   	id: 17	type: TOUCH     
Wacom Intuos PT S Finger pad    	id: 18	type: PAD 

Um nun zum Beispiel den Parameter TapTime des Touchpads abzurufen, zu verändern und ggf. die Änderung zu kontrollieren, gehe ich wie folgt vor.

$ xsetwacom get "Wacom Intuos PT S Finger touch" TapTime              # Wert abrufen
250
$ xsetwacom set "Wacom Intuos PT S Finger touch" TapTime 200          # Wert ändern
$ xsetwacom get "Wacom Intuos PT S Finger touch" TapTime              # Wert nochmal abrufen => wurde geändert
200

Buttons belegen

Das Intuos P&T verfügt über vier Harwarebuttons, die glücklicherweise belegt werden können. Die Buttons sind mit 1, 3, 8 und 9 indizierbar. Eine Liste der möglichen „Modifiers“, also möglichen Tasten erhält man mit xsetwacom list modifiers. Leider klappte die Belegung mit + und - nicht. Im Folgenden ein Beispiel für Inkscape und Firefox.

# Beispiel für Inkscape
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 1 "key ctrl y"
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 3 "key ctrl shift z"
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 8 "key ctrl down"
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 9 "key ctrl up"
 
# Beipsiel für Firefox
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 1 "key ctrl tab"
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 3 "key ctrl shift tab"
#xsetwacom set "Wacom Intuos PT S Finger pad" Button 8 "key end"
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 8 "key ctrl w"
$ xsetwacom set "Wacom Intuos PT S Finger pad" Button 9 "key home"

Gerade Linien zeichnen

Wie hier ausführlich ausgeführt, wirken den Linien, die mit den Standardeinstellungen gezeichnet wurden, etwas zittrig. Abhilfe schaffen die folgenden Einstellungen.

$ xsetwacom set "Wacom Intuos PT S Pen stylus" RawSample 9
$ xsetwacom set "Wacom Intuos PT S Pen stylus" Suppress 10
$ xsetwacom set "Wacom Intuos PT S Pen eraser" RawSample 9
$ xsetwacom set "Wacom Intuos PT S Pen eraser" Suppress 10

Feintuning am Touchpad

Um die Touchfunktion besser nutzen zu können, habe ich noch weitere Parameter angepasst.

$ xsetwacom set "Wacom Intuos PT S Finger touch" ScrollDistance 40
$ xsetwacom set "Wacom Intuos PT S Finger touch" ZoomDistance 200
$ xsetwacom set "Wacom Intuos PT S Finger touch" TapTime 200

Noch mehr?

Weitere Beispiele finden sich im Wiki des Projekts.

Anwendungen mit Unterstützung für Grafiktabletts

Das Grafiktablett lässt sich dańk der Touchfunktion sehr gut in den täglichen Workflow (z.B. Browser, PDFs, Bildbetrachter, usw.) integrieren. Die eigentliche Funktion, also Zeichnen/Illustrieren lässt sich mit den meisten Linux Standardanwendungen für Grafik & Co. natürlich auch nutzen. Dabei wird sowohl Drucksensitivität als auch der Wechsel zwischen Radierer und Stift unterstützt.
Im Folgenden eine kleine Übersicht über Software und die nötigen Einstellungen.

Anwendungnötige Einstellungen
XournalUnter Optionen die Optionen Radiererspitze und Drucksensitivität aktivieren
MyPaintkeine Einstellungen notwendig
InkscapeUnter DateiEingabegeräte die Optionen (…) Pen stylus und (…) Pen eraser aktivieren (jew. auf Bildschirm), außerdem Hacken bei Druckempfindliches (…) verwenden
GimpUnter BearbeitenEingabegeräte im Dropdown bei (…) Pen stylus und (…) Pen eraser von Deaktiviert auf Bildschirm setzen

// PiFace CAD: Erste Versuche mit MPD

Wie bereits berichtet habe ich vor mit dem PiFace Control and Display (CAD) und MPD einen kleinen Musikplayer aus einem Raspberry Pi Model B zu basteln. Zum PiFace CAD existiert eine offizielle Python Library, die über die Raspbian Paketquellen nachinstalliert werden kann. Mit dieser kann man auf recht einfache Weise alle Funktionen der Erweiterungsplatine nutzen. Da sich meine Python Kenntnisse aber eher gering waren, habe ich mich in letzter Zeit ein bisschen in Python eingearbeitet. Sollte mein Programmierstil also noch etwas suboptimal sein, schrecke bitte nicht vor einem Kommentar zurück!

Vorbereitung

Zunächst habe ich das Board mit dem Raspberry Pi (Model B) in das passende Gehäuse eingebaut, welches es beispielsweise beim Distributor Farnell element14 gibt. Dies geht am besten, wenn zuerst der Pi und anschließend die Erweiterungsplatine in das Case gesteckt wird.

Auf das Model B+ passt das CAD zwar, allerdings liegt es aufgrund der neuen USB-Buchsen wie in den Bildern erkennbar etwas schief auf. Wenn die Kontaktstellen mit etwas Isolierband abgeklebt werden und sichergestellt wird, dass die GPIOs gut verbunden sind, dürfte dies aber kein Problem darstellen. Da ich aber ein „altes“ Model B verwende, bleiben mir diese Probleme erspart.

MPD installieren & konfigurieren

Auf die Installation und Konfiguration von MPD will ich hier nicht weiter eingehen, dazu gibt es zahlreiche Ressourcen. Statt dessen will ich kurz erläutern, welche Änderungen für den Pi notwendig sind und einen groben Einstiegspunkt liefern.
Nachdem die Pakete mpd und mpc installiert sind und die gröbsten Anpassungen in /etc/default/mpd und /etc/mpd.conf gemacht sind, kann mit raspi-config festgelegt werden welche Audioausgang verwendet werden soll. Diese Option findet sich unter Punkt 8 Advanced Options → Punkt A6 Audio. Ebenfalls unter Punkt 8 Advanced Options kann bei A5 SPI noch SPI, was später für das CAD benötigt wird, aktiviert werden.

Ich verwende für meinen Versuch die 3.5'er Klinke. Reicht die oft krtitisierte Qualität der Klinkenbuchse nicht aus kann ein HDMI Audio Extractor oder eine externe USB-Soundkarte verwendet werden. Im folgenden eine für den Pi gut funktioniernde MPD Audioconfig. Soll statt der internen Soundkarte eine externe USB-Soundkarte verwendet werden, muss noch Alsa konfiguriert werden.

audio_output {
        type            "alsa"
        name            "My ALSA Device"
        mixer_control   "Master"
        mixer_type      "software"
}

Nun kann die MPD Konfiguration überprüft werden, dazu aktualisiere ich zunächste mit mpc update die Datenbank, füge alle Titel der Wiedergabewarteschlange hinzu und starte die Wiedergabe. MPD sollte nun beginnen die Playlist, also alle verfügbaren Titel abzuspielen.

$ mpc update
# warten bis MPD die Datenbank aktualisiert hat (mit mpc status checken)
$ mpc add /
$ mpc play

MPC ist ein kleiner CLI Client für MPD. Eine Übersicht über die zur Verfügung stehenden Optionen liefert mpc help.

PiFace CAD einrichten

Auf mein.homelinux.com habe ich bereits eine Kurzanleitung zum PiFace CAD erstellt. Dort findet sich auch ein Abschnitt zur Einrichtung. Die Eckpunkte meines Vorgehens zu Einrichtung des CADs, die im Übrigen sehr gut auf der offziellen Seite dokumentiert sind:

  • SPI aktivieren (siehe weiter oben)
  • python{,3}-pifacecad (die offizielle Python 2 bzw. 3 Library) installieren und anschließend den Pi neustarten
  • sysinfo.py (eine Systemstatusanzeige) ausprobieren
  • den IR-Receiver bzw. LIRC einrichten

Die ersten Versuche

Zum PiFace CAD existiert eine offizielle Python Library, über die alle Funktionen des Boards in Python genutzten werden können. In der Dokumentation zur Library finden sich einige gut erklärte Beispiele, sodass auch ein Python Neuling wie ich etwas damit anfangen kann. Hin und wieder lohnt sich auch ein Blick in die Referenz.
Die wichtigsten Funktionen der Lirbrary habe ich hier kurz zusammengefasst. Dort finden sich auch einige kleine Beispiele, die im Endeffekt meine ersten Versuche waren.
Dieser Code nutzt zum Beispiel „Interrupts“ und gibt den gerade gedrückten Button auf das Display aus, dies ist besonders praktisch, wenn einem die Buttonbelegung noch nicht bekannt ist.

import pifacecad
 
# Init the CAD    
def initCad():
	cad.lcd.blink_off()
	cad.lcd.cursor_off()
	cad.lcd.clear()
	cad.lcd.backlight_on()
 
# Handle pushed pins
def handlePin(event):
	event.chip.lcd.clear()
	event.chip.lcd.write("Pressed button:")
	event.chip.lcd.set_cursor(0, 1)
	event.chip.lcd.write(str(event.pin_num))
 
cad = pifacecad.PiFaceCAD()
initCad()
listener = pifacecad.SwitchEventListener(chip=cad)
 
for i in range(8):
	listener.register(i, pifacecad.IODIR_FALLING_EDGE, handlePin)
 
listener.activate()

Für den Anfang habe ich mich entschieden vorerst kein LIRC zu verwenden. Ich will zuerst eine funktionierende Steuerung nur mit den Buttons realisieren.

MPD ansteuern

MPD lässt sich ganz einfach aus der Shell mit dem CLI Client mpc steuern. In Verbindung mit der Fähigkeit von Python Shell Befehle zum Beispiel mit os.system() auszuführen, ergibt sich hieraus eine sehr einfache Möglichkeit MPD zu kontrollieren:

$ python3
>>> import os
>>> os.system("mpc next")      # nächster Titel

Um nun auch die Ausgaben von mpc parsen zu können, kann subprocess.check_output() verwendet werden:

$ python3
>>> import subprocess
>>> status = subprocess.check_output("mpc status", shell=True, stderr=subprocess.STDOUT)      # Achtung: Python3 => binary string
>>> status = status.decode()
>>> status.find("%")

Mit diesen Hilfsmitteln habe ich nun versucht eine einfach Steuerung zu realisieren:

  • Eine erste naive Umsetzung: Mein erster Versuch, in dem das Display nicht wirklich verwendet wird, ist hier ersichtlich. Der Code nutzt den Status (Play/Pause) von MPC nur bedingt.
  • Erweiterte Realisierung: In diesem Code berücksichtige ich die Ausgaben von mpc zur Titelanzeige, Volumenanzeige und zur Ermittlung des Statuses (Play/Pause). Außerdem habe ich die Steuerung von MPD in eine eigene Klasse ausgelagert.

Wie gehts es weiter?

Der Code kann bis jetzt nur die Basisaufgaben, so aktualisiert sich die Anzeige noch nicht. Pin/Taster 0 ist eigentlich noch unbelegt und soll später dazu verwendet werden zwischen den einzelnen Funktionen des erweiterten Mediaplayersumzuschalten.
Bis jetzt habe ich neben der MPD Steuerung noch eine Uhr- und Wetteranzeige, eine Netzwerk bzw. Statusfunktion und die Möglichkeit den Raspberry Pi herunterzufahren oder zu rebooten in Planung. Diese zusätzlichen Funktionen werde ich nach und nach implementieren und hier über meinen Fortschritt berichten.

// Raspberry Pi: Basteln mit dem PiFace Control and Display

Neulich bin ich auf das PiFace Control and Display aufmerksam geworden. Die Erweiterungsplatine für den Raspberry Pi verfügt neben einem bequem mit Python programmierbaren Display über einen IR-Receiver, 5 Taster und einen Navigationsschalter. Die Dokumentation des Boards ist sehr ausführlich und enthält zahlreiche Beispiele.
Ich habe vor mit dem Board (und natürlich einem Pi) ein auf dem Musik Player Demon (MPD) basierenden Musikplayer zu basteln. Da ich die Hardware erst bestellt habe und noch nicht in den Händen halte, kann ich in diesem Post leider nur die beiden Komponenten – den Musikserver und das Erweiterungsboard – vorstellen und ein wenig auf die Möglichkeiten eingehen.

Hardware – PiFace Control and Display

Der IR-Receiver kann von LIRC verwendet werden, was die Hardware äußerst interessant macht. So kann der Pi prinzipiell von jeder IR-Fernbedienung aus gesteuert werden. Damit ist z.B. ein Musikplayer sehr gut realisierbar – von überall im Raum kann die Playlist gewechselt, die Musik pausiert oder die Lautstärke verändert werden.
Auch Timer (etwa nach 10min Pause) oder gar Weckzeiten könnte man damit einstellen. Mit den zusätzlich auf dem Board angebrachten Schaltern und Tastern lässt sich dies natürlich auch direkt am Pi erledigen.
Auf dem Displays des Boards können zusätzlich zahlreiche Informationen wie Musiktitel, Künstler, Lautstärke und Dauer dargestellt werden.

Musikserver – Musik Player Demon (MPD)

Musik höre ich in den eigenen 4 Wänden mit dem Musikserver Musik Player Demon (MPD). Die Software ist als Client/Server aufgebaut, wobei MPD eigentlich nur den Server bereitstellt.

  • Der Server (MPD) gibt die Musik wieder und verfügt über die Musiksammlung. Da der Server wenn möglich immer verfügbar sein sollte, macht es Sinn hier einen kleinen sparsamen Rechner zu verwenden, der außerdem passiv gekühlt/leise ist. Der Raspberry Pi erfüllt genau diese Eigenschaften und verfügt auch gleich über ein Audiointerface.
  • Der Client, der nun z.B. die Playlists erstellt und auswählt, die Lautsärke regelt, die Musik pausiert und fortsetzt, kann dann ein anderer Rechner mit entsprechender Software oder ein Smartphone mit passender App sein.

Aber auch eine Steuerung direkt auf dem Pi ist möglich und genau hier kommt nun das PiFace Control and Display zum Einsatz. Durch die zahlreichen Mensch-Maschine-Schnittstellen (IR-Fernbedienung, Taster/Schalter, Display) bietet es sich sehr gut zur Steuerung von MPD und zur Präsentation der relevanten Daten an.

Vorausblick – Wie gehts weiter?

Genug geschrieben, in der nächsten Zeit werde ich mich (sobald ich die Hardware habe) mit der Steuerung von MPD mit dem PiFace Control and Display beschäftigen …und mich in Python einarbeiten :-)
Zunächst habe ich vor einzelne Aktionen wie Pausieren der Musik oder Anpassung der Lautstärke über die Taster und später dann natürlich auch per IR-Fernbedienung zum Laufen zu bekommen. Das Display werde ich dann nach und nach einbinden. Wobei ich hier noch gespannt bin, wie das alles läuft.
Interessant ist auch die Anzeige des Wetters (siehe Beispiel) oder die Integration einer Weckerfunktion. Doch dazu in den nächsten Wochen mehr!

Hello World!

This is the personal website of Christoph Winkler.
Here you will find a sort of blog and some information about me and my projectshave fun!

Recent Comments
QR-Code: aktuelle Seiten-URL
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported