Smarthome? Monitoring? Notifications mit altem Android Handy!

Heute morgen bin ich über die coolste App seit langem gestolpert. Es handelt sich um den Home24-MediaPlayer (Google Play oder direkter Download der APK).

Die App ist nicht etwa ein stupider Media Player wie der Name vermuten würde, sondern eine ziemlich geniale Möglichkeit um Benachrichtigungen zu verschicken. Die App – einmal gestartet – lauscht per HTTP auf Port 50000 und kann per GET Parameter angewiesen werden unterschiedlichste Dinge zu tun. Man kann das Handy vibrieren lassen, eine Nachricht in den Benachrichtigungen anzeigen lassen oder den Bildschirm anschalten.
Einzelne Kommandos können mit einer | getrennt verknüpft werden. Kommandos mit Parametern können per & verknüpft werden. Das angesprochene Beispiel ist:

curl "http://192.168.1.1:50000/statusbar=Hallo Welt|vibrate|screentimeout=3"

Deutlich cooler sind aber die weiteren Funktionen. So ist es zum Beispiel möglich eine auf dem Gerät vorliegende MP3 abzuspielen. Damit kann man mit simplen Mitteln einen Türgong realisieren. Beispiel:

curl "http://192.168.1.1:50000/track=gong.ogg"

Noch besser finde ich die Text-To-Speach Funktion:

curl "http://192.168.1.1:50000/tts=Alarm! Der Einbruchssensor beim Fenster im Schlafzimmer wurde ausgelöst!"

Aber man kann – eine SIM Karte im Gerät vorausgesetzt – auch SMS verschicken. Ganz einfach:

curl "http://192.168.1.1:50000/sms=017612345678&message=Es ist keiner Zuhause, das Schlafzimmerfenster ist offen und es gibt eine Unwetterwarnung vor starkem Gewitter."

Eine Übersicht der Möglichen Befehle gibt es auf der Webseite vom Home24-MediaPlayer.

Der Phantasie sind hier keine Grenzen gesetzt. Benachrichtigungen auf dem Smartphone wenn man Zuhause ist, SMS wenn man nicht Zuhause ist, Türgong über einen angeschlossenen Lautsprecher und so weiter. Und als Sysadmin ist das eine supersimple günstige einfache Möglichkeit auch Benachrichtigungen zu bekommen…. Genial!

Twitter to RSS Service – self hosted

Twitter hat bekanntermassen mit der Abschaltung der Version 1.0 der Twitter API dafuer gesorgt, dass man die Timeline eines Nutzers nicht mehr einfach per RSS Feed abrufen kann. Da ich das jedoch ueberaus praktisch finde, habe ich nach einer Moeglichkeit gesucht, wie man das nun wieder hinbekommt. Gelandet bin ich bei dem Projekt Tweetledee.

Tweetledee ist ein PHP basiertes Projekt, das Zugriff auf viele Twitterfunktionen bietet, Favoriten, Listen, Suchergebnissen, Timelines usw. Die Ergebnisse werden als RSS oder JSON zur Verfuegung gestellt.

Um Tweetledee zu installieren benoetigt man einen Webserver mit PHP 5.1 und libcurl. Fuer die Konfiguration muss man dann noch bei Twitter eine Applikation erzeugen, um an die OAuth Einstellungen zu kommen. Das wars. Funktioniert super, und laesst sich einwandfrei mit meinem webbasierten RSS Feedreader Tiny Tiny RSS nutzen.

Nagios: check Piwik Update Status

Wenn man Software nicht aus den Repositories einer Distribution, sondern von Hand installiert, muss man immer im Blick haben, ob fuer die Software nicht ein Update zur Verfuegung steht

Um sich dieses fuer Piwik zu vereinfachen habe ich dafuer ein sehr simples Nagios Plugin, check_piwik.sh, geschrieben:

#!/bin/bash
 
#####
#
# Simple Skript that checks if Piwik version from given URL is up to date
# 
# Usage: ./check_piwik.php http://example.net/piwik/ MYTOKEN
#
#####
 
## check if two parameters are given
if [ "$#" -lt "2" ]; then echo -e "ERROR: You need to give two parameter, first option is URL and second option Token . Aborting." >&2 exit 1; fi
PIWIKURL="$1"
TOKEN="$2"
 
## check if needed programs are installed
type -P curl &> /dev/null || { echo "ERROR: curl is required but seems not to be installed.  Aborting." >&2 exit 1; }
type -P sed &> /dev/null || { echo "ERROR: sed is required but seems not to be installed.  Aborting." >&2 exit 1; }
 
## get latest piwik version from piwik api
LATESTVERSION=$(curl -s http://api.piwik.org/1.0/getLatestVersion/)
 
## get piwik version from given url
LOCALURL="$PIWIKURL/index.php?module=API&method=API.getPiwikVersion&format=xml&token_auth=$TOKEN"
LOCALVERSION=$(curl -s $LOCALURL | sed -n -e 's/.*<result>\(.*\)<\/result>.*/\1/p')
 
## compare both strings
if [ "$LATESTVERSION" != "$LOCALVERSION" ]; then
  echo "A new version is available: $LOCALVERSION -> $LATESTVERSION"
  exit 2
else 
  echo "Your current version $LOCALVERSION is up to date"
fi

Es erwartet zwei Parameter, eine URL zu dem Piwik das ueberprueft werden soll, und den API Token fuer diese Installation. Dementsprechend muss in der command.cfg der Check wie folgt definiert werden:

define command {
        command_name    check_piwik
        command_line    $USER1$/check_piwik.sh $ARG1$ $ARG2$
}

Der Check selbst wird dann wie folgt in die entsprechende Konfigurationsdatei eingetragen:

define service {
        use                             my-service
        host_name                       example.net
        service_description             Piwik
        check_command                   check_piwik!http://example.net/piwik!abcdefghijklmnopqrstuvwxyz123
        }

Fertig eingerichtet bekommt man dann von seinem Nagios Auskunft ueber den Updatestatus der entsprechenden Installation: