Donnerstag, 29. September 2011

FHEM - Website mit Eventhandler (notify) aufrufen

Ausgangspunkt für diese Beschreibung ist die Laborsoftware für die FRITZ!Box 7390 (84.05.07-20690) und das FHEM-Image (84.05.05-20538), was man beides über FRITZ!Labor bekommt.

Wenn man mittels FHEM auf Grund einen Events eine Webseite per GET aufrufen möchte, muss man wie folgt vorgehen:

1. 99_updatefhem.pm updaten
in der momentanen Version ist ein Fehler in der Funktion GetHttpFile den man auf jedenfall beheben muss. Dazu in der FHEM-Kommandozeile "fhemupdate 99_updatefhem.pm" bestätigen.

Anschließend in der FHEM-Kommandozeile "reload 99_updatefhem.pm" bestätigen, um die Änderungen wirksam werden zu lassen.

2. Eventhandler definieren
Dazu ruft man über das FHEM-Frontend Edit files -> fhem.cfg auf, und fügt folgende Zeile ein:


define nweb notify kse1:on.* { GetHttpFile("192.168.178.22:80", "/default.aspx");; 0 }

nweb - beliebiger Gerätename (sollte nach F5 im Frontend auch angezeigt werden)
kse1 - Gerät welches den Event auslöst
on - der Event, also hier wenn der Satus auf on gesetzt wird

Beim Server das Protokoll weglassen aber den Port nicht vergessen! Beim zweiten Parameter ist der Slash ebenfalls Pflicht.

FHEM - Website mit Eventhandler (notify) aufrufen

Ausgangspunkt für diese Beschreibung ist die Laborsoftware für die FRITZ!Box 7390 (84.05.07-20690) und das FHEM-Image (84.05.05-20538), was man beides über FRITZ!Labor bekommt.

Wenn man mittels FHEM auf Grund einen Events eine Webseite per GET aufrufen möchte, muss man wie folgt vorgehen:

1. 99_updatefhem.pm updaten
in der momentanen Version ist ein Fehler in der Funktion GetHttpFile den man auf jedenfall beheben muss. Dazu in der FHEM-Kommandozeile "fhemupdate 99_updatefhem.pm" bestätigen.

Anschließend in der FHEM-Kommandozeile "reload 99_updatefhem.pm" bestätigen, um die Änderungen wirksam werden zu lassen.

2. Eventhandler definieren
Dazu ruft man über das FHEM-Frontend Edit files -> fhem.cfg auf, und fügt folgende Zeile ein:


define nweb notify kse1:on.* { GetHttpFile("192.168.178.22:80", "/default.aspx");; 0 }

nweb - beliebiger Gerätename (sollte nach F5 im Frontend auch angezeigt werden)
kse1 - Gerät welches den Event auslöst
on - der Event, also hier wenn der Satus auf on gesetzt wird

Beim Server das Protokoll weglassen aber den Port nicht vergessen! Beim zweiten Parameter ist der Slash ebenfalls Pflicht.

Dienstag, 27. September 2011

FHEM - Auf der FRITZ!Box 7390 mit CULv.3.2 installieren

Nachfolgend der etwas hakelige Weg zu einer funktionierenden Installation.Ausgangspunkt ist die Laborsoftware für die 7390 (84.05.07-20690) und das FHEM-Image (84.05.05-20538), was man beides über FRITZ!Labor bekommt. Zuerst natürlich die Laborsoftware und dann das FHEM installieren, man sieht anschließend in der Fritz!-Oberfläche nichts Neues aber unter fritz.nas sollte es einen Ordner FHEM geben und natürlich sollte sich FHEM über http://fritz.box:8083/fhem starten lassen.

Mein CUL war neu, dass heißt keine Firmware drauf, also musste ich ihn flashen. Die meist beschriebene Methode mit dem (angeblich) im FHEM-Image enthaltenen dfu-programmer klappte nicht, weil er oder irgend etwas anderes nicht gefunden wurde.

CULflash CUL CUL_V3
führte zum Ergebnis:
sh: dfu-programmer: not found

Also Plan B mit FLIP, hier habe ich mir die Version 3.4.3 heruntergeladen und unter Windows 7 installiert.

Achtung: Die DLL (bei mir AtLibUsbDfu.dll) die nicht gefunden wird, muss man im Gerätemanager über Treiber aktualisieren... manuell nachinstallieren. Vorher sieht man bei eingesteckten CUL ein Ausrufezeichen am Gerät.

Jetzt noch die Firmware beschaffen, da bin ich hier fündig geworden. Ich habe die neueste Version (1.12) verwendet und dann den CUL geflasht.

Zum Funktionstest stand mir ein FS20 KSE (Klingelsignalerkennung) zur Verfügung, also CUL an die FB angesteckt, die LED blinkt nach erfolgreichen Flashen und Spannung an die KSE angelegt. Siehe da, der Status des automatisch erkannten Gerätes ändert sich beim Anlegen der Spannung.

Nützliche Links:
Home of FHEM
FHEM-Newsgroup

FHEM - Auf der FRITZ!Box 7390 mit CULv.3.2 installieren

Nachfolgend der etwas hakelige Weg zu einer funktionierenden Installation.Ausgangspunkt ist die Laborsoftware für die 7390 (84.05.07-20690) und das FHEM-Image (84.05.05-20538), was man beides über FRITZ!Labor bekommt. Zuerst natürlich die Laborsoftware und dann das FHEM installieren, man sieht anschließend in der Fritz!-Oberfläche nichts Neues aber unter fritz.nas sollte es einen Ordner FHEM geben und natürlich sollte sich FHEM über http://fritz.box:8083/fhem starten lassen.

Mein CUL war neu, dass heißt keine Firmware drauf, also musste ich ihn flashen. Die meist beschriebene Methode mit dem (angeblich) im FHEM-Image enthaltenen dfu-programmer klappte nicht, weil er oder irgend etwas anderes nicht gefunden wurde.

CULflash CUL CUL_V3
führte zum Ergebnis:
sh: dfu-programmer: not found

Also Plan B mit FLIP, hier habe ich mir die Version 3.4.3 heruntergeladen und unter Windows 7 installiert.

Achtung: Die DLL (bei mir AtLibUsbDfu.dll) die nicht gefunden wird, muss man im Gerätemanager über Treiber aktualisieren... manuell nachinstallieren. Vorher sieht man bei eingesteckten CUL ein Ausrufezeichen am Gerät.

Jetzt noch die Firmware beschaffen, da bin ich hier fündig geworden. Ich habe die neueste Version (1.12) verwendet und dann den CUL geflasht.

Zum Funktionstest stand mir ein FS20 KSE (Klingelsignalerkennung) zur Verfügung, also CUL an die FB angesteckt, die LED blinkt nach erfolgreichen Flashen und Spannung an die KSE angelegt. Siehe da, der Status des automatisch erkannten Gerätes ändert sich beim Anlegen der Spannung.

Nützliche Links:
Home of FHEM
FHEM-Newsgroup

Freitag, 1. April 2011

Facebook: created_time mit Javascript formatieren


function formatFBTime(fbDate, long) {
//2011-02-26T18:04:11+0000
var arrDateTime = fbDate.split("T");
var arrDate = arrDateTime[0].split("-");
var arrTime = arrDateTime[1].split("+")[0].split(":");
var arrDay = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
var arrMonth = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

// TODO: Zeitzone hart (++arrTime[0])
var newDate = new Date(arrDate[0], arrDate[1], arrDate[2], ++arrTime[0], arrTime[1], arrTime[2]);

var strDay = newDate.getDate() > 10 ? newDate.getDate() : "0" + newDate.getDate();
var strWeekDay = arrDay[newDate.getDay()];
var strMonth = arrMonth[newDate.getMonth() - 1];
var strHours = newDate.getHours() > 10 ? newDate.getHours() : "0" + newDate.getHours();
var strMinutes = newDate.getMinutes() > 10 ? newDate.getMinutes() : "0" + newDate.getMinutes();

if(long)
return strWeekDay + ", " + strDay + ". " + strMonth + " " + newDate.getFullYear() + " um " + strHours + ":" + strMinutes;
else
return strDay + ". " + strMonth + " um " + strHours + ":" + strMinutes;
}

Facebook: created_time mit Javascript formatieren


function formatFBTime(fbDate, long) {
//2011-02-26T18:04:11+0000
var arrDateTime = fbDate.split("T");
var arrDate = arrDateTime[0].split("-");
var arrTime = arrDateTime[1].split("+")[0].split(":");
var arrDay = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
var arrMonth = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

// TODO: Zeitzone hart (++arrTime[0])
var newDate = new Date(arrDate[0], arrDate[1], arrDate[2], ++arrTime[0], arrTime[1], arrTime[2]);

var strDay = newDate.getDate() > 10 ? newDate.getDate() : "0" + newDate.getDate();
var strWeekDay = arrDay[newDate.getDay()];
var strMonth = arrMonth[newDate.getMonth() - 1];
var strHours = newDate.getHours() > 10 ? newDate.getHours() : "0" + newDate.getHours();
var strMinutes = newDate.getMinutes() > 10 ? newDate.getMinutes() : "0" + newDate.getMinutes();

if(long)
return strWeekDay + ", " + strDay + ". " + strMonth + " " + newDate.getFullYear() + " um " + strHours + ":" + strMinutes;
else
return strDay + ". " + strMonth + " um " + strHours + ":" + strMinutes;
}

Mittwoch, 16. Februar 2011

Facebook/Blogger: Like Button für jeden Blogeintrag

Wenn man im Blogdesign, unter "HTML bearbeiten" das Häkchen bei "Widget-Vorlagen komplett anzeigen" gesetzt hat, findet man im Quelltext den Abschnitt <data:post.body/>.
Hier kann man dann unterhalb einen der beiden gezeigten Codeschnipsel einsetzen.
Wichtig hierbei ist das Referenzieren des jeweiligen Eintrags, dass wird mit expr:href="data:post.url" gemacht.

Beispiel mit Javascript SDK - XFBML (empfohlen):Um dieses Codeschnipsel zu verwenden muss man das Javascript SDK von Facebook im Blog-HTML referenzieren.




Beispiel mit IFrame:

<iframe src="http://www.facebook.com/plugins/like.php?href=data:post.url&layout=standard&show_faces=true&width=450&action=like&font=arial&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>

Wenn man alles richtig gemacht hat, sieht es dann so aus wie hier, also ein Like Button für jeden Blogeintrag. Dass heisst unter anderem, ein Besucher des Blogs kann mit einem Klick, den Eintrag in sein Facebook-Profil posten.