Zehn Jahre on the Blogs

Ja, jetzt ist es soweit. Auch beim Hommel-Net hat das Blog-Zeitalter Einzug gehalten.

Mit diesen beiden Sätzen begann der erste Blogpost, den ich auf diesem Blog geschrieben haben. Und das war - ich kann es kaum fassen - genau vor zehn Jahren am 29. April 2006. Ein Jubiläum, das mir Gelegenheit gibt, mal auf die letzten zehn Jahre hier zurück zu blicken.

Der Anfang

Angefangen hat alles mit einem Kapitel im Buch "Webseiten programmieren und gestalten" von Mark Lubkowitz, das ich mir damals gekauft hatte und in dem ein Projekt zum Aufsetzen eines Blogs mithilfe der Blogsoftware Serendipity vorgeschlagen wurde. Und so wurde blog.hommel-net.de gebohren, mein kleines zu Hause im großen Internet, dem ich bis heute treu geblieben bin. Auch Serendipity bin ich bis heute treu geblieben, einer kleinen, komfortablen Blogengine, die alles bietet, was man (ich) zum Bloggen benötigt. Die kleine, aber sehr aktive und sympatische Community steht immer mit Rat und Tat zur Seite, wenn es ein Problem zu lösen gilt oder man einfach nur mal eine Idee umsetzen möchte.

Tatsächlich basiert dieses Blog immer noch auf der ursprünglichen Installation von 2006, natürlich mit regelmäßigen Updates. Lediglich die Datenbank wurde einmal beim Umstieg von MySQL4 auf MySQL5 mittels SQL-Dump auf eine andere übertragen. Auch daran sieht man, wie stabil und solide diese Software aufgebaut ist.

Aber zurück zum Bloggen. Dieses Blog ist ein reines Hobby-Projekt von mir. Ich veröffentliche unregelmäßig Artikel, habe mir keine feste Regel auferlegt, wie zum Beispiel "mindestens ein Post pro Woche". Bei anderen Verpflichtungen, die man als Familienvater so hat, steht das Blog auch mal hintenan und wenn ich mal keine Lust oder auch keine Inspiration zum Schreiben habe, liegt es auch mal ein paar Wochen brach.

Letzendlich kehre ich aber immer wieder hierher zurück um ein paar Gedanken festzuhalten, etwas lustiges aus meinem Arbeitsalltag als Administrator einer kleinen Genossenschaftsbank, ein Musikvideo, ein Fundstück aus den Weiten des Netzes. Ab und an gibt es auch mal einen technischen Artikel zu meinem Lieblingsbetriebssystem Linux sowie Anleitungen und Tipps zu diversen Computerthemen. Auch hier habe ich mich nie auf einen Schwerpunkt für das Blog festlegen können (oder wollen). Das, gepaart mit dem unregelmäßigen Erscheinen von Artikeln und der nicht vorhandenen SEO sorgt wohl dafür, dass es hier nicht gerade von Besuchern und Lesern so wimmelt. Die Besucherzahlen dümpeln in sehr überschaubarer Höhe (bzw. Tiefe) vor sich hin.

Trotzdem oder gerade deswegen freue ich mich über jeden Leser, der sich hierher verirrt und ich freue mich immer noch wie Bolle über jedes Feedback, das über die Kommentare oder andere Kanäle reinkommt. DANKE!

In 2013 lernte ich die Jungs von der BlackBerry-User-Group Kassel kennen und als die Idee aufkam, ein Blog für die Gruppe zu betreiben, war ich sofort Feuer und Flamme und habe mich für Installation und technische Betreuung der Seite bereit erklärt. Und so ging im Mai 2014 dann bbugks.de online. Die Seite läuft selbstverständlich auch mit Serendipity. ;-)

Seitdem schreibe ich nun für zwei Blogs Artikel, was der Veröffentlichungsfrequenz hier natürlich auch nicht immer förderlich ist, aber ich gebe mir weiterhin Mühe, auch mein Baby hier nicht zu sehr zu vernachlässigen.

Die Zeit mit dem Blog möchte ich nicht missen. Ich habe viele Menschen kennengelernt, die ich sonst nicht kennengelernt hätte. Auch habe ich viel gelernt und lerne noch. Ich finde es großartig, dass durch Blogs heutzutage jeder in der Lage ist, einfach Texte oder anderen Content im Internet zu veröffentlichen und somit einer riesigen Öffentlichkeit zur Verfügung zu stellen. Die Menschen konnten und können dadurch weltweit enger zusammenrücken und das lange bevor es die großen sozialen Netzwerke wie Facebook, Twitter und Konsorten gab. Ich finde übrigens Twitter großartig und treibe mich dort auch gern herum. Ich glaube aber trotz aller Unkenrufe, dass ein eigenes Blog auf dem nur ich Herr meines Contents bin, durch kein soziales Netzwerk ersetzt werden kann.

Ich werde also weiter bloggen und zwar hier in meinem kleinen Reich. Auch wenn das bedeutet, dass weniger Menschen meine Texte lesen, das ist es mir wert. Allerdings wird das hier auch immer ein Hobby-Projekt bleiben, das bei Bedarf auch mal vernachlässigt werden kann. Das ist zumindest der Plan, aber man kann ja nie wissen.

In diesem Sinne sage ich nochmals herzlich Danke an alle Leser, die mich die letzten Jahre begleitet haben und hoffentlich auch in Zukunft dabei bleiben. Ich freue mich auf die kommenden Jahre hier auf dem Hommel-Net Weblog (und frage mich gerade, ob ich mir damals nicht einen etwas eingängigeren Namen hätte aussuchen können, Past-Me).

To infinity and beyond.

Mario

S9YCamp 2016

Nachdem mir das Treffen von Serendipityentwicklern und -nutzern im letzten Jahr total viel Spaß gemacht hatte, war ich auch in diesem Jahr froh, dass ich wieder zum S9YCamp fahren konnte. Also machte ich mich am 22. April auf den Weg nach Essen ins Linuxhotel.

Linuxhotel

Nachdem ich mich durch den Freitagabendverkehr im Ruhrgebiet gekämpft hatte, kam ich zusammen mit Matthias im Hotel an. Und wenig später kamen dann mit Dirk, Malte, Garvin und Bernd auch die restlichen Teilnehmer unseres kleinen Treffens an.

Bis auf Bernd - den wir aber aus dem S9Y-Forum und diversen sozialen Medien auch schon kannten -  waren alle schon im letzten Jahr dabei. Das Linuxhotel war mit seinem tollen Angebot für Opensource-Projekte wieder eine hervorragende Location.

Tux im Park

Den ersten Abend nutzten wir dann ausgiebig zum Klönen und Pläne für das Wochenende schmieden. Es gab wieder die (fast schon) traditionelle Pizza und auch Bier und Rotwein. :-) Außerdem stellten wir fest, dass FreeBSD lauter als Serendipity ist. Nach einer entsprechend kurzen Nacht, bewacht von unserem Zimmer-Tux, ging es dann ans Arbeiten.

Zimmer-Tux

Am Samstag hatten wir uns dann ein stattliches Arbeitsprogramm vorgenommen, dass nur von diversen Nahrungsaufnahmen unterbrochen wurde. So konnten wir weiter an der neuen Projekthomepage inklusive Dokumentation arbeiten, die nun hoffentlich auch zeitnah verlöffentlicht werden kann.

Wie die meisten anderen Opensource Projekte konnten wir auch einen "Code of Conduct" verabschieden, der in Zukunft dem Umgang und das Miteinander im Projekt regeln soll.

Die offenen Issues des anstehenden 2.1er Releases wurden gesichtet, bewertet und zum Teil auch behoben.

Am Abend ging es dann nochmal, wie sollte es anders sein, auf einen schnellen Snack zum Dönertempel.

Musik-Klingel

Der Sonntag war dann nochmal gemütlich, je nachdem wann die Rückreise geplant war, verliessen die Teilnehmer nach und nach die Runde, natürlich nicht ohne ein leckeres Frühstück und eine letzte Arbeitsbesprechung in unserem Seminarraum.

Als wir dann nicht mehr vollständig waren, bemerkten wir: Wir hatten das Gruppenfoto vergessen! /o\ Das wird dann im nächsten Jahr nachgereicht.

Gegen Mittag machte ich mich dann auch auf die Heimreise. Es war wieder ein sehr schönes Wochenende. Es ist toll, wenn man sich mal mit ein paar Leuten unserer kleinen Community "in echt" treffen und miteinander quatschen, arbeiten und einfach eine gute Zeit verbringen kann. Was mich betrifft, ich komme nächstes Jahr gern wieder.

Über das S9YCamp schrieben auch:

(to be continued)

Einbahnfrei

Endlich mal wieder ein lustiges Support-Ticket. :-)

Support-Ticket

BBUGKS-Live #8

BBUGKS-Live Logo

 

Oliver und ich haben mal wieder eine Folge unseres BlackBerry-Podcasts aufgenommen. Diesmal sind es über eineinhalb Stunden geworden. Wir hatten viele Themen zu besprechen, wie das Ende von Facebook und WhatsApp auf den OS10-Geräten oder die Quartalszahlen, die am 1. April bekannt gegeben wurden. Außerdem hatten wir ein paar Fragen unserer Hörer, auf die wir eingehen könnten.

Den Podcast könnt ihr wie immer auf dem Blog der BlackBerry-User-Group Kassel anhören und natürlich dort auch abonnieren.

RPi-Projekt Twitternde Webcam Teil 4: Aufbau und fertig

Nachdem ich jetzt alle Einzelkomponenten zusammen habe, wird die Webcam jetzt am vorgesehenen Ort positioniert und in Betrieb genommen.

Artikelübersicht

Teil 4: Aufbau und fertig.

Zunächst habe ich in einem Python-Skript den Part für die Wetterabfrage und das Absetzen des Tweets zusammengeführt:

#!/usr/bin/env python
# -*- coding: utf8 -*-

# This script gets the current temperature from worldweatheronline.com
# and send it to twitter with an aktual Webcam Picture.
# written by Mario Hommel
# Last Update: 31.03.2016

# imports
import urllib
import json
import serial
from time import sleep
import sys
from twython import Twython

# First we get the current temperature in Bad Zwesten
# using the worldweatheronline.com api
url = "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=[DeinenKeyEinfuegen]&q=Zwesten, Germany&format=json&num_of_days=1"

try:
    response = urllib.urlopen(url)
except:
    print ("Error getting foreign weather")

object = json.load(response)

# putting temperature in cTemp
cTemp = int(object["data"]["current_condition"][0]["temp_C"])
hTemp = int(object["data"]["weather"][0]["maxtempC"])

# now we get the complete text for the tweet
ttext = "Täglicher Blick über Bad Zwesten bei " + str(cTemp) + " Grad. Die erwartete Höchsttemperatur beträgt heute " +str(hTemp) + " Grad. #fb"

# lets start with twitter
# first we define the api
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=ttext, media_ids=[response['media_id']])

Wie man sieht, habe ich die Wetterdaten noch um die vorhergesagte Höchsttemperatur des aktuellen Tages erweitert. Das Skript ist weiterhin darauf ausgelegt, dass vor seinem Ablauf ein aktuelles Bild mit dem Namen "image.jpg" von der Webcam gespeichert wird. Man könnte das auch in diesem Python-Skript mit abhandeln, aber ich hatte mich ja für die Nutzung von fswebcam entschieden.

Als nächstes schreibe ich ein kleines Bash-Skript "webcam-tweet.sh", dass das Foto macht und das Python-Skript aufruft.

#!/bin/bash

fswebcam -r "800x600" /home/pi/raspitweet/image.jpg

python /home/pi/raspitweet/rpit-bild.py

Das Skript wird natürlich mit

chmod a+x webcam-tweet.sh

ausführbar gemacht. Danach gilt es noch, den richtigen Platz für die Webcam zu finden. Der Raspi hat im "Echtbetrieb" außer der Stromquelle nur noch die Webcam angeschlossen. Die weitere Steuerung erfolgt komplett über ssh. Als Standort habe ich mir ein Fenster ausgesucht, von dem ein recht netter Blick über meinen Wohnort möglich ist und die Webcam dort "montiert" (man beachte die professionelle Ausführung der Montage :-) ).

Webcam-Montage

Und ja, das Fenster muss dringend mal wieder gestrichen werden.

Zum Schluss muss ich nur noch dafür sorgen, das mein Skript automatisch - sagen wir einmal am Tag - ausgeführt wird. Das erledigt der Cron-Dämon für mich. Mit

crontab -e

wird die Cron-Tabelle des aktuellen Users (pi) aufgerufen und kann bearbeitet werden.

# m h  dom mon dow   command
15 13   *     /home/pi/raspitweet/webcam-tweet.sh

Nach dem Speichern ist es dann soweit. Zur eingestellten Uhrzeit (in diesem Fall jeden Tag um 13.15 Uhr) macht die Webcam ein Bild und der Raspi twittert es artig mit den dazugehörigen Wetterdaten.

Das lasse ich jetzt mal ein paar Tage so laufen und schaue, ob es zuverlässig funktioniert. Ich würde mich freuen, in den Kommentaren Feedback zu bekommen und vielleicht auch den ein oder anderen Link auf eure eigenen Raspi-Projekte.

RPi-Projekt Twitternde Webcam Teil 3: Wie ist das Wetter

Nachdem das mit dem Twittern des Webcambilds funktioniert, hatte ich noch die Idee, nicht immer nur einen statischen Text dazu zu twittern, sondern noch etwas individuelles wie zum Beispiel die aktuelle Temperatur hinzuzufügen. In diesem Teil des Artikels schreibe ich, wie ich das gemacht habe.

Artikelübersicht

Teil 3: Wie ist das Wetter?

Ok, wo bekomme ich die aktuelle Temperatur her? Die eine Möglichkeit wäre, einen Temperaturfühler an den Raspi anzuschliessen. Oder ich könnte die Temperatur von einem Wetterdienst im Internet beziehen. Ich habe mich zunächst für die zweite Variante entschieden (aber was nicht ist, kann ja noch werden).

Ich möchte die API von worldweatheronline.com nutzen. Sie bietet viele Wetterdaten und es gibt eine kostenlose Version. Nach der Anmeldung bei dem Dienst erhalte ich zunächst eine Trial-Version der Premium-API, die ich erstmal zwei Monate lang nutzen kann. Danach werde ich auf die freie Version umsteigen, die für meine Zwecke völlig ausreichend ist.

Mit der Anmeldung erhält man einen API-Key, den man dann für Abfragen im XML- oder JSON-Format nutzen kann. Ich nutze das JSON-Format und frage das ganze über die entsprechenden Bibliotheken in Python ab. Das Skript dazu sieht folgerndermaßen aus:

#!/usr/bin/env python
# -*- coding: utf8 -*-

# imports
import urllib
import json
import serial

# let's start by getting the current temperature in Bad Zwesten
# using the worldweatheronline.com api
url = "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=[DeinenKeyEinfuegen]&q=Zwesten, Germany&format=json&num_of_days=1"

try:
    response = urllib.urlopen(url)
except:
    print ("Error getting weather info.")

object = json.load(response)

cTemp = int(object["data"]["current_condition"][0]["temp_C"])

ttext = "Täglicher Blick über Bad Zwesten, heute bei " + str(cTemp) + " Grad."

print ttext

Ich frage erstmal aus dem ganzen JSON-Objekt nur den Wert der momentanen Temperatur in Celsius ab. Die Ausgabe des Skripts sieht so aus:

Täglicher Blick über Bad Zwesten, heute bei 6 Grad.

Gern könnt ihr auch mal einen Blick in das komplette JSON-Objekt werfen, hier seht ihr alle Werte, die man über die API erhält.

Ich denke, jetzt habe ich alles zusammen, was ich für den Aufbau des Projekts brauche und im vorerst letzten Teil dieser Artikelserie werde ich dann beschreiben, wie ich alles zusammenfüge und fertigstelle.

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.

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.