Remember the Milk Windows 7 Gadget

Da Microsoft ja dankenswerter weise seine Gadget Gallery abgeschaltet hat und mal wieder der Meinung ist, was völlig neues machen zu müssen, war das Remember the Milk Gadget nicht mehr herunter zu laden. Recherchen im Netz führten immer nur zur Windows Gadget Gallery. Etwas tiefer abgetaucht habe ich aber doch das Forum des Entwicklers gefunden, in dem es das aktuelle Release zum herunterladen gibt:

Ilab Windows Vista Sidebar gadgets

Und für die, die nicht das Forum durchsuchen wollen: Hier der direkte Link zum Download:

I forgot The Milk

Mit dem Telefon das Licht anmachen

Mein Telefon (Snom 870) mausert sich immer mehr zur Schaltzentrale. Da es in praktischer Reichweite befindet wollte ich es jetzt auch dazu nutzen meine Arbeitsplatzbeleuchtung einzuschalten. Dazu hat das Snom die Fähigkeit sogenannte Aktions-Url’s auf Funktionstasten zu legen. Ein bisschen PHP-Zauber auf dem Server abgelegt und schon kann ich damit in Verbindung mit dem Homeserver mein Licht ein- und ausschalten:

<?php

$ip_homeserver = '192.168.2.3';
$port_homeserver = '6600';

$commands = array('arbeitendecke',
                  'arbeitenlichtthomas',
                  'wohnendecke');

if(!in_array($_GET['do'], $commands))
{
  die('wrong command');
}

echo "Sende: " . $_GET['do'] . "\r\n";

$fp = pfsockopen( "udp://" . $ip_homeserver, $port_homeserver, $errno, $errstr );

if (!$fp)
{
    echo "ERROR: $errno - $errstr<br />\n";
}

socket_set_timeout ($fp, 10);

$write = fwrite( $fp, "homeserver," . $_GET['do'] . "\r\n" );

fclose($fp);
echo "<br>Connection closed ..<br>";

if (!$write)
{
    echo "error writing to port: 6600.<br/>";
}
?>

Die Aktions-URL für mein Telefon lautet dann: http://meinserver/homeserver/index.php?do=arbeitenlichtthomas. Damit sendet das PHP Script einen UDP-Befehl an meinen GIRA Homeserver. Dieser wiederum empfängt diesen, wertet in aus und sendet ein KNX-Befehl an meinen Aktor, der das Licht an oder aus macht. Funktioniert perfekt. Achja das Radio im Büro (Sonos) kann es auch schon ein- und ausschalten. Es zeigt mir auch das Videobild des Besuchers vor der Türe an, und telefonieren kann man damit natürlich auch :) .

SONOS mit GIRA Homeserver steuern

Ich steuere meine Sonos Player mittlerweile recht erfolgreich mithilfe eines kleinen PHP Skriptes, daß ich mal auf die schnelle geschrieben habe, über den Gira Homeserver. Damit kann man feine Dinge anstellen wie z.B. Radio An/Aus oder die Lautstärke auf einzelne Taster legen. Oder alle Radios beim Abschließen der Haustüre mittels eines Riegelschaltkontaktes ausgehen lassen.

Ich habe mich hauptsächlich der PHP – Sonos Klasse bedient, welche hier zu finden ist. Diese wurde von mehreren Leuten schon erweitert und mit allerhand Funktionen bestückt. Darum habe ich mir einen Wrapper gebaut, der die für mich relevanten Funktionen zur Verfügung stellt (die index.php). Dort müssen auch die einzelnen Player inkl. deren IP-Adresse eingefügt werden. Die Player verwenden normalerweise DHCP und müssen mittels DHCP Reservierungen auf feste IP Adressen gebracht werden.

Das Interessante ist, das mit diesem Script die Player auch ausgelesen werden und damit Funktionen wie Toggle Play / Pause oder Volume Up unabhängig deren letzten Status realisiert werden können (man muss nicht 2 x auf die Taste drücken weil der Player zwischenzeitlich mit einem anderen Gerät gesteuert wurde). Es können auch Ansagen abgespielt werden. Dabei wird das laufende Programm unterbrochen, die Ansage abgespielt und anschließend das Programm an der unterbrochenen Stelle wieder fortgesetzt.

Zur Installation einfach die beiden Dateien index.php und PHPSonos.inc.php auf einen PHP-fähigen Webserver kopieren. In der index.php die Player zusammen mit Ihrer IP-Adresse in das $zones Array (Zeile 13) eintragen. Zum Testen kann das Script einfach im Browser aufgerufen werden:

http://deinWebserver/Pfad/zum/Script/index.php?zone=NameDerZone&do=TogglePlayStop

Dieser Aufruf ist an die Gegebenheiten anzupassen.

Die zur Verfügung stehenden Funktionen findet man in der index.php im $_GET['do'] switch ab Zeile 24. Die Interessantesten dürften sein:

index.php?zone=MeineZone&do=TogglePlayStop: schaltet um zwischen Play und Pause
index.php?zone=MeineZone&do=VolumeUp: Lautstärke wird pro Aufruf um 1 erhöht
index.php?zone=MeineZone&do=VolumeDown: Lautstärke wird pro Aufruf um 1 vermindert
index.php?zone=MeineZone&do=sendMessage&MesageId=1&Volume=30: Programm wird unterbrochen und Nachricht mit der ID 1 wird abgespielt. Die gewünschte Lautstärke wird über den Parameter Volume übergeben. Der Pfad zu den Nachrichten ist in Zeile 222 in der index.php anzupassen. Der Ordner muss vom Sonos aus erreichbar sein. Die Datei muss in folgendem Format dort gespeichert sein: MessageId.mp3 macht dann z.B. 1.mp3

Im Homeserver eine Webseitenabfrage wie auf den Screenshots dargestellt erstellen:

Download: Sonos.zip

neue Community für Fernstudenten – Fernstudenten.info

Zusammen mit Freunden bin ich gerade dabei eine neue Community für Fernstudenten vornehmlich der AKAD aufzubauen: Fernstudenten.info

Antreiber war unter anderem Jens, Co-Admin im Techniker-Forum und momentan Fernstudent bei der AKAD, und Daniel, der mich ebenfalls in diesem Anliegen kontaktiert hat.

Es gibt bereits ein Forum (fernstudenten.de) für Fernstudenten welches aber nicht administriert wird. So haben wir uns entschlossen das ganze besser zu machen.

Wir haben bereits einen Downloadbereich integriert, damit die Downloads nicht in den Themen untergehen. Das Forum kann dank Tapatalk nativ mit iPhone, Blackberry, Android und Nokia – Handies abgerufen werden. Eine feine Sache für Unterwegs.

kein Netzwerk im Windows XP Mode

Dieser Blogeintrag hat mir heute Abend den A…. gerettet: http://blogs.msdn.com/…services-while-virtual-pc-2007-install-on-vista-ultimate.aspx

Hintergrund: Die ETS ist ein Stück Steinzeitsoftware für 900 Euronen deren Dongle nicht unter Windows 7 64Bit läuft. Der für mich praktikable Weg bis die neue Version final ist, geht über den XP-Mode, da dieser USB und damit den Dongel unterstützt. Bis heute hat auch die Netzwerkverbindung zu meinem KNX-Router funktioniert. Naja bis heute eben. Aufeinmal zeigte das Mistding von XP nur noch “kein Netzwerk vorhanden”. Schuld an der ganzen Misere war wohl der Teamviewer, der mir wohl meinen Virtual PC-Netzwerkfiltertreiber zerschossen hat. Aber auch nach der Deinstallation von ‘Teamviewer ging es nicht mehr. Jetzt ging das googlen los…

Nach mehrere Versuchen und peniblem Einhalten der Vorgehensweise wie unter “Number 2″ beschrieben (man beachte die rote Zeile) konnte ich meine Netwerkkarte wieder dazu ermutigen sie mit dem XP-Mode wie bisher zu teilen. Und siehe da nun konnte ich auch wieder auf meinen KNX-Router zugreifen.

Festplatte unter Linux löschen

Da ich aktuell ein paar Platten unter Linux zu löschen hatte will ich hier kurz beschreiben, wie ich es gemacht habe.

Da es sich hierbei um einen länger laufenden Task handelt ist die Gefahr groß, zwischendurch die Verbindung zu verlieren. Als äußerst hilfreich hat sich dafür die Verwendung von screen einem Multiplexer für Konsolen. Damit ist es möglich, innerhalb einer ssh-Session verschiedene virtuelle Konsolensitzungen zu erzeugen und zu verwalten. Darüberhinaus können Sitzungen getrennt und später fortgeführt werden. Ich starte auf dem System also eine screen – Session mit

  screen -S NameDerSitzung

Das eigentliche Löschen der Festplatte erreiche ich, in dem ich die gesamte Festplatte mit Nullen vollschreibe. Dies erreiche ich mit dem Befehl dd:

  dd if=/dev/zero of=/dev/sda2 bs=65535

Wobei /dev/sda2 durch die zu löschende Festplatte zu ersetzen ist. Wie die zu löschende Platte bzw. Partition heist kann man sich mit fdisk -l anzeigen lassen.

Das dumme ist nur, das mir dd standardmäßig keinen Fortschritt anzeigt und der ganze Prozess je nach Platten- bzw. Partitionsgröße ewig dauern kann. Ich kann dd aber zur Ausgabe des Fortschrittes bewegen, wenn ich ihm ein Signal SIGUSR1 (10) schicke. Dazu mache ich mit [Strg] + [A] + [C] in meiner Screen – Session einfach eine neue Konsole auf. Dort angekommen muss ich erstmall die Prozess ID meines dd – Prozesses herausfinden:

  ps auxw | grep dd

Mit der Prozess ID kann ich das Signal in einer Endlosschleife absetzen:

  while /bin/true; do sleep 5; kill -USR1 HierDiePID; done

Mit [Strg] + [A] + [Leertaste] kann ich wieder in meine erste Session zurück wechseln und den Fortschritt meiner Löschaktion beobachten.

nützliche Exim Kommandos

Hier ein paar nützliche Exim Kommandos:

exim -bp

Queue anzeigen lassen

exim -q

Queue abarbeiten

exim -bpc

Anzahl der queued Messages anzeigen lassen

exim -Mt

Versenden von “Frozen” E-Mails

exiqgrep -o 86400 -i | xargs exim -Mrm

alle Mails aus der Queue löschen, die älter als 1 Tag sind (86400 Sekunden)

MySQL Backup mit mysqlhotcopy unter Debian

Da Datenbanken nicht einfach im laufenden Betrieb weg gesichert werden können (Inkonsistenzen, DB Zugriff während der Sicherung), hier ein einfacher Weg MySQL Datenbanken im laufenden Betrieb in ein Verzeichnis zu sichern. Dieses kann dann mit beliebiger Backupsoftware gesichert werden kann.

Zuerst die Ordnerstruktur herstellen:

/backup/
/backup/db/
/backup/db/files/

jetzt das Backupscript erstellen:

touch /backup/db/hotcopy.sh
chmod +x /backup/db/hotcopy.sh

mit folgendem Inhalt:

#!/bin/sh

rm -rf /backup/db/files/
mkdir /backup/db/files/

mysqlhotcopy "--regexp=.*" /backup/db/files/ --quiet --user=root

Passwort in User Profil speichern, damit es nicht im Script hinterlegt werden muss (diese Datei kann dann nur von root gelesen werden):

touch /root/.my.cnf
chmod 600 /root/.my.cnf

Inhalt für .my.cnf

[client]
password=deinGeheimesRootPasswortFürMySQL

cron anlegen in /etc/crontab:

50 2 * * * root /backup/db/hotcopy.sh

LAMP unter Debian 5 (Lenny) installieren

Hier ein kurzer Abriss einer kompletten LAMP (Apache, PHP, MySQL) Installation unter Debian 5 aka Lenny inkl. APC (Bytecodecache) und Ioncube Laoder:

Benötigte Packete installieren:

$ aptitude install apache2 libapache2-mod-php5 php5-cli php5-common php-pear
php5-dev apache2-prefork-dev build-essential imagemagick php5-gd php5-curl gs-gpl

APC installieren:

$ pecl install apc

Bei der Frage: Use apxs to set compile flags (if using APC with Apache)? [yes] : [Enter] drücken.

Datei /etc/php5/conf.d/apc.ini mit folgendem Inhalt anlegen:

extension=apc.so
apc.enabled=1
apc.shm_size=120

Apache neu starten

$ /etc/init.d/apache2 restart

Mit phpinfo() überprüfen ob APC läuft. Dazu eine PHP-Datei mit folgendem Inhalt erstelllen und aufrufen:

<?php
  phpinfo();
?>

Ioncube Laoder installieren

runterladen:

$ wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

Inhalt nach /usr/local/ioncube entpacken

in /etc/php5/apache2/php.ini und /etc/php5/cli/php.ini eintragen:

; IonCube Loader
zend_extension = "/usr/local/ioncube/ioncube_loader_lin_5.2.so"

Apache neu starten:

/etc/init.d/apache2 restart

Installation von MySQL 5

$ aptitude install mysql-server php5-mysql