- Mitglied seit
- 18 Jun 2005
- Beiträge
- 74
- Punkte für Reaktionen
- 0
- Punkte
- 6
InfoFrame
Inspiriert und begeistert vom WG-Putzplan von Tobias Weis (http://www.infolexikon.de/blog/samsung-spf-83v/), habe ich mir den dort verwendeten Bilderrahmen ebenfalls angeschafft (ca. 70-80¤ bei eBay) und mein eigenes Anwendungsszenario damit umgesetzt. Herausgekommen ist dabei ein abseits der typischen Belange einer Studenten-WG einsetzbarer Status-Monitor für die ganze Familie ;-) Da ich das Ergebnis eigentlich zu schade finde, um es bei mir zu Hause verstauben zu lassen, wollte ich euch daran teilhaben lassen. Vielleicht findet es ja der ein oder andere von euch nützlich oder besitzt schon einen kaum genutzten WLAN-Bilderrahmen von Samsung, alle anderen ignorieren bitte diesen Thread. Der WAF für dieses Projekt ist übrigens bei meiner Frau überdurchschnittlich hoch ausgefallen ;-) Da Bilder bekanntlich mehr sagen als tausend Worte, hier erstmal worum es überhaupt geht:
Features
1. Voraussetzungen
Digitaler Bilderrahmen mit WLAN, getestet: Samsung SPF-83V
Das Prinzip ist einfach: Der Bilderrahmen hat die Funktion Fotos von Online-Fotoalben wie Picasa, Flickr oder sonstigen Webseiten anzeigen zu können. Ein Webserver generiert nun in regelmäßigen Abständen eigene JPGs mit den gewünschten Infos, die der Bilderrahmen herunterlädt und anzeigt.
Funktionieren müssten neben meinem getesteten SPF-83v auch Samsungs SPF-72V, SPF-85V oder SPF-105V, da diese alle verwandte Firmwares besitzen. Bilderrahmen anderer Hersteller mit Internet-Foto-Anzeige via WLAN könnten auch funktionieren, allerdings ist mir dort (wie bei den Samsungs) kein Weg bekannt eine erzwungene Aktualisierung des angezeigten Bildes per Skript auszulösen, was aber besonders für den Anrufmonitor Voraussetzung ist. Meistens aktualisieren diese Bilderrahmen ihre Internet-Fotos nur alle 30 Minuten. Für die Wetter oder Kalender-Anzeige ist das noch OK, für Mails/RSS/Anrufe wäre das schon wieder zu lange.
Webspace mit PHP & MySQL
Die Erzeugung der Bilder geschieht auf einem Webserver mittels der PHP GD-Library. D.h. ihr benötigt erst einmal einen vernünftigen Webspace-Anbieter mit PHP und MySQL. Mit vernünftig meine ich, dass es hier i.d.R. kein Free-Hoster tut, da die Scripte etwas höhere Anforderungen an die auf dem Webserver verfügbaren PHP-Module und Funktionen stellen (zumindest habe ich bisher keinen Freehoster gefunden, bei dem alles funktioniert hat). Auf jeden Fall ist es schwer vorherzusagen, ob der Webserver auch wirklich für unsere Anwendungszwecke taugt (Im Zweifelsfall immer erst mal einen Test-Account besorgen). Prinzipiell gelten schon mal folgende Voraussetzungen:
Fritz!Box mit USB-Host, getestet: 7270
Auf der Fritz!Box muss Freetz 1.1 installiert sein. Sollen Anrufe auf dem Display angezeigt werden, ist noch das Freetz-Paket "Callmonitor" Voraussetzung. Die Skripte lagern auf einem USB-Stick, daher benötigt man eine Box mit USB-Host Anschluss.
2. Einrichtung
Webserver einrichten
Wenn das Kalender-Plugin verwendet werden soll, muss die Google Data API (eine Teilmenge des Zend-Frameworks) auf dem Server installiert werden. Das Framework gibt es unter http://framework.zend.com/download/gdata zum Download. Die letzte mir bekannte Version die auf PHP 5.2.0 läuft ist "Zend Gdata 1.8.4 patch 1", alle neueren Versionen erfordern PHP 5.2.4 oder höher. Das Framework entpacken und auf den Webserver in ein Verzeichnis eurer Wahl hochladen und den absoluten Pfad des Verzeichnisses notieren.
Dann den Inhalt des Pakets infoframe-web.zip auf den Webserver in ein Verzeichnis eurer Wahl kopieren. Damit nicht jeder später eure generierten Bilder ansehen kann am besten das Verzeichnis per .htaccess mit Benutzernamen und Passwort schützen. Außerdem bitte noch prüfen, ob das "cache"-Verzeichnis von den Zugriffrechten her vom Webserver-Dienst erreichbar ist, so dass dieser dort Dateien erstellen kann.
Webanwendung konfigurieren
Im infoframe-Verzeichnis liegt die config.ini über welche ihr die Konfiguration der InfoFrame-Anwendung vornehmen könnt. Bei "zendfw_path" tragt ihr den oben notierten Pfad zum Zend GData Framework inlusive dem Unterverzeichnis "library" ein. Außerdem müssen Host, Name, Benutzer und Passwort zur MySQL-Datenbank dort konfiguriert werden. Die restlichen Einstellungen betreffen die Plugins und sollten auch alle nach euren Bedürfnissen angepasst werden. Bei Bedarf kann ich hier nochmal die einzelnen Optionen genauer beschreiben. Bis dahin müsst ihr euch anhand der Kommentare durchschlagen.
Soll ein Plugin komplett deaktiviert werden kommentiert einfach die dazugehörige Section [in eckigen Klammern] mit Semikolons aus. Das ist auch für die Fehlersuche ganz nützlich: erst alle Plugins deaktivieren und dann Stück für Stück wieder aktivieren um herauszufinden welches den Fehler verursacht.
Nachdem alles erfolgreich konfiguriert wurde, könnt ihr die index.php im Browser aufrufen und das Ergebnis-Bild bestaunen.
Fritz!Box konfigurieren
Bitte das Paket infoframe-fbox.zip im Root eures USB-Sticks entpacken (so dass im Root das Verzeichnis "infoframe" mit den 3 Dateien refresh.sh, setup.sh und error.jpg liegt). Dann die Datei refresh.sh mit einem Texteditor öffnen und als Wert für die Variable "serverscript" den vollständigen Pfad zum PHP-Skript eures Webservers eintragen (inkl. htaccess Benutzer und Passwort, falls vorhanden). Außerdem bitte für die Variable "samsung_ip_address" die richtige IP-Adresse eures WLAN-Bilderrahmens eintragen.
Nun müsst ihr auf die Weboberfläche von Freetz gehen (fritz.box:81) und dort die rc.custom editieren (Einstellungen -> rc.custom). Das ist nötig, damit nach dem Boot-Vorgang der Box das setup.sh-Skript auf dem USB-Stick ausgeführt wird. Bitte dort folgendes eintragen:
Damit nun das refresh-Skript jede Minute aufgerufen wird, richten wir einen Cronjob ein. Dazu folgende Zeile unter Einstellungen -> Crontab ergänzen:
Anschließend bitte noch den Starttyp des Cron-Deamons auf automatisch stellen (Einstellungen).
Soll der Anrufmonitor zum Einsatz kommen muss zu guter Letzt nun auch noch das Callmonitor-Skript auf der Box konfiguriert werden. Dazu bitte unter "Einstellungen -> Listeners" den folgenden universellen Listener hinzufügen (ja, wirklich alles in eine Zeile):
Dadurch lösen alle Callmonitor-Events ein Aufruf des refresh.sh Skriptes aus.
Nachdem alle diese Arbeiten abgeschlossen sind, sollte nun im Webbrowser eurer Wahl unter der Adresse http://fritz.box:5050/ das vom Webserver generierte Bild (bereitgestellt vom Fritz!Box-Webserver) zu sehen sein.
Bilderrahmen einrichten
Im Browser die Weboberfläche zur Konfiguration des Bilderrahmens aufrufen (http://[ip-des-rahmens]:5050). Dort unter Web-Fotos einen neuen Feed mit folgender Adresse einrichten: http://fritz.box:5050/ (unbedingt den abschließenden Slash anhängen!)
Unter der Registerkarte "Speicherung" muss der Cache für diesen Feed aktiviert sein (sollte standardmäßig bereits aktiviert sein, dennoch bitte prüfen).
Unter der Registerkarte Einstellungen muss außerdem die Kennwortabfrage für die Benutzeroberfläche deaktiviert werden.
Dann direkt am Bilderrahmen den soeben neu eingerichteten Foto-Feed starten. Außerdem stellt ihr den Bildwechselintervall auf den größtmöglichen Wert (20 Sekunden) und deaktiviert die Überblendeffekte.
Digitale Zeitschaltuhr
Die Firmware des Bilderrahmens hat leider einen etwas nervigen Bug. Wird das anzeigte Bild minütlich aktualisiert, so erscheint nach ca. 13-14 Stunden ein "OutOfMemory"-Fehler des dem Bilderrahmen zugrundeliegenden Windows CE. Dem wirke ich mit einer simplen Digitalen Schaltuhr von Aldi für ca. 4 EUR entgegen, welche dem Bilderrahmen alle 12 Stunden für 1 Minute den Strom entzieht. Keine schöne Lösung, aber sie funktioniert. Nachdem der Bilderrahmen wieder Saft hat startet die Wiedergabe übrigens automatisch.
3. Weiterentwicklung
Prinzipiell bin ich mit dem aktuellen Stand soweit zufrieden und er läuft bei mir nun auch schon seit einigen Monaten recht unverändert und stabil (von einigen Ausfällen meines Webhosters abgesehen). Für eine Weiterentwicklung fehlt mir aktuell schlicht die Zeit. Den Code selbst habe ich unter die GPL gestellt. Was mich Prinzipiell reizen würde, mir aber neben der Zeit auch das Know-How dazu fehlt, ist folgendes:
Update am 28.05.2011:
- Das Wetter-Plugin wurde aktualisiert (Google hatte die Dateinamen und URLs der Icons geändert), details hier
Update am 29.05.2011:
- nochmal 3 Wetter-Icons ergänzt (cloudy, drizzle, dust)
Update am 06.06.2011:
- Google spielt Wetter-API-Roulette: die alten Icons sind wiederhergestellt
Inspiriert und begeistert vom WG-Putzplan von Tobias Weis (http://www.infolexikon.de/blog/samsung-spf-83v/), habe ich mir den dort verwendeten Bilderrahmen ebenfalls angeschafft (ca. 70-80¤ bei eBay) und mein eigenes Anwendungsszenario damit umgesetzt. Herausgekommen ist dabei ein abseits der typischen Belange einer Studenten-WG einsetzbarer Status-Monitor für die ganze Familie ;-) Da ich das Ergebnis eigentlich zu schade finde, um es bei mir zu Hause verstauben zu lassen, wollte ich euch daran teilhaben lassen. Vielleicht findet es ja der ein oder andere von euch nützlich oder besitzt schon einen kaum genutzten WLAN-Bilderrahmen von Samsung, alle anderen ignorieren bitte diesen Thread. Der WAF für dieses Projekt ist übrigens bei meiner Frau überdurchschnittlich hoch ausgefallen ;-) Da Bilder bekanntlich mehr sagen als tausend Worte, hier erstmal worum es überhaupt geht:
Features
- Datum/Uhrzeit (yeaaaaah!)
- Wetter (aktuell und der nächsten 3 Tage)
- Anrufe (ankommende, verpasste und gerade geführte Gespräche inkl. Rückwärtssuche (über Callmonitor-Skript))
- E-Mails (Anzeige von Absender/Betreff der ungelesenen Mails mehrerer IMAP-Konten, POP3 funktioniert eingeschränkt)
- Kalender (alle mit einem Google-Konto verknüpften Google-Kalender)
- RSS-Feeds (z.B. Stau, Blitzer, Nachrichten, filterbar nach Alter des Eintrags oder des Titels über RegEx)
1. Voraussetzungen
Digitaler Bilderrahmen mit WLAN, getestet: Samsung SPF-83V
Das Prinzip ist einfach: Der Bilderrahmen hat die Funktion Fotos von Online-Fotoalben wie Picasa, Flickr oder sonstigen Webseiten anzeigen zu können. Ein Webserver generiert nun in regelmäßigen Abständen eigene JPGs mit den gewünschten Infos, die der Bilderrahmen herunterlädt und anzeigt.
Funktionieren müssten neben meinem getesteten SPF-83v auch Samsungs SPF-72V, SPF-85V oder SPF-105V, da diese alle verwandte Firmwares besitzen. Bilderrahmen anderer Hersteller mit Internet-Foto-Anzeige via WLAN könnten auch funktionieren, allerdings ist mir dort (wie bei den Samsungs) kein Weg bekannt eine erzwungene Aktualisierung des angezeigten Bildes per Skript auszulösen, was aber besonders für den Anrufmonitor Voraussetzung ist. Meistens aktualisieren diese Bilderrahmen ihre Internet-Fotos nur alle 30 Minuten. Für die Wetter oder Kalender-Anzeige ist das noch OK, für Mails/RSS/Anrufe wäre das schon wieder zu lange.
Webspace mit PHP & MySQL
Die Erzeugung der Bilder geschieht auf einem Webserver mittels der PHP GD-Library. D.h. ihr benötigt erst einmal einen vernünftigen Webspace-Anbieter mit PHP und MySQL. Mit vernünftig meine ich, dass es hier i.d.R. kein Free-Hoster tut, da die Scripte etwas höhere Anforderungen an die auf dem Webserver verfügbaren PHP-Module und Funktionen stellen (zumindest habe ich bisher keinen Freehoster gefunden, bei dem alles funktioniert hat). Auf jeden Fall ist es schwer vorherzusagen, ob der Webserver auch wirklich für unsere Anwendungszwecke taugt (Im Zweifelsfall immer erst mal einen Test-Account besorgen). Prinzipiell gelten schon mal folgende Voraussetzungen:
- PHP >=5.2.x
- Gdlib (>=2.0) mit Freetype, PNG und JPG support
- php_imap (für das Mail-Plugin)
- simpleXML
- openssl
Fritz!Box mit USB-Host, getestet: 7270
Auf der Fritz!Box muss Freetz 1.1 installiert sein. Sollen Anrufe auf dem Display angezeigt werden, ist noch das Freetz-Paket "Callmonitor" Voraussetzung. Die Skripte lagern auf einem USB-Stick, daher benötigt man eine Box mit USB-Host Anschluss.
2. Einrichtung
Webserver einrichten
Wenn das Kalender-Plugin verwendet werden soll, muss die Google Data API (eine Teilmenge des Zend-Frameworks) auf dem Server installiert werden. Das Framework gibt es unter http://framework.zend.com/download/gdata zum Download. Die letzte mir bekannte Version die auf PHP 5.2.0 läuft ist "Zend Gdata 1.8.4 patch 1", alle neueren Versionen erfordern PHP 5.2.4 oder höher. Das Framework entpacken und auf den Webserver in ein Verzeichnis eurer Wahl hochladen und den absoluten Pfad des Verzeichnisses notieren.
Dann den Inhalt des Pakets infoframe-web.zip auf den Webserver in ein Verzeichnis eurer Wahl kopieren. Damit nicht jeder später eure generierten Bilder ansehen kann am besten das Verzeichnis per .htaccess mit Benutzernamen und Passwort schützen. Außerdem bitte noch prüfen, ob das "cache"-Verzeichnis von den Zugriffrechten her vom Webserver-Dienst erreichbar ist, so dass dieser dort Dateien erstellen kann.
Webanwendung konfigurieren
Im infoframe-Verzeichnis liegt die config.ini über welche ihr die Konfiguration der InfoFrame-Anwendung vornehmen könnt. Bei "zendfw_path" tragt ihr den oben notierten Pfad zum Zend GData Framework inlusive dem Unterverzeichnis "library" ein. Außerdem müssen Host, Name, Benutzer und Passwort zur MySQL-Datenbank dort konfiguriert werden. Die restlichen Einstellungen betreffen die Plugins und sollten auch alle nach euren Bedürfnissen angepasst werden. Bei Bedarf kann ich hier nochmal die einzelnen Optionen genauer beschreiben. Bis dahin müsst ihr euch anhand der Kommentare durchschlagen.
Soll ein Plugin komplett deaktiviert werden kommentiert einfach die dazugehörige Section [in eckigen Klammern] mit Semikolons aus. Das ist auch für die Fehlersuche ganz nützlich: erst alle Plugins deaktivieren und dann Stück für Stück wieder aktivieren um herauszufinden welches den Fehler verursacht.
Nachdem alles erfolgreich konfiguriert wurde, könnt ihr die index.php im Browser aufrufen und das Ergebnis-Bild bestaunen.
Fritz!Box konfigurieren
Bitte das Paket infoframe-fbox.zip im Root eures USB-Sticks entpacken (so dass im Root das Verzeichnis "infoframe" mit den 3 Dateien refresh.sh, setup.sh und error.jpg liegt). Dann die Datei refresh.sh mit einem Texteditor öffnen und als Wert für die Variable "serverscript" den vollständigen Pfad zum PHP-Skript eures Webservers eintragen (inkl. htaccess Benutzer und Passwort, falls vorhanden). Außerdem bitte für die Variable "samsung_ip_address" die richtige IP-Adresse eures WLAN-Bilderrahmens eintragen.
Nun müsst ihr auf die Weboberfläche von Freetz gehen (fritz.box:81) und dort die rc.custom editieren (Einstellungen -> rc.custom). Das ist nötig, damit nach dem Boot-Vorgang der Box das setup.sh-Skript auf dem USB-Stick ausgeführt wird. Bitte dort folgendes eintragen:
Code:
# Wait until we have a network connection.
# Script can be disabled by removing network cable
# At least one of the web sites must must respond to ping before we continue
SITE_1=web.de
SITE_2=www.google.com
while !(ping -c 1 $SITE_1>/dev/null) && !(ping -c 1 $SITE_2>/dev/null); do
sleep 15
done
# Wait until drive has been mounted
while !(mount | grep -q /var/media/ftp); do
sleep 15
done
#Look for start script on usb disk
BASEDIR=/var/media/ftp/*/infoframe
for f in $BASEDIR; do
cd $f
if [ -x setup.sh ]; then
./setup.sh
fi
done
Damit nun das refresh-Skript jede Minute aufgerufen wird, richten wir einen Cronjob ein. Dazu folgende Zeile unter Einstellungen -> Crontab ergänzen:
Code:
* * * * * /var/tmp/infoframe/refresh.sh
Anschließend bitte noch den Starttyp des Cron-Deamons auf automatisch stellen (Einstellungen).
Soll der Anrufmonitor zum Einsatz kommen muss zu guter Letzt nun auch noch das Callmonitor-Skript auf der Box konfiguriert werden. Dazu bitte unter "Einstellungen -> Listeners" den folgenden universellen Listener hinzufügen (ja, wirklich alles in eine Zeile):
Code:
*:* ^ ^ /var/tmp/infoframe/refresh.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&dst_name=$(urlencode "$DEST_NAME")&dst_address=$(urlencode "$DEST_ADDRESS")&duration=$DURATION"
Nachdem alle diese Arbeiten abgeschlossen sind, sollte nun im Webbrowser eurer Wahl unter der Adresse http://fritz.box:5050/ das vom Webserver generierte Bild (bereitgestellt vom Fritz!Box-Webserver) zu sehen sein.
Bilderrahmen einrichten
Im Browser die Weboberfläche zur Konfiguration des Bilderrahmens aufrufen (http://[ip-des-rahmens]:5050). Dort unter Web-Fotos einen neuen Feed mit folgender Adresse einrichten: http://fritz.box:5050/ (unbedingt den abschließenden Slash anhängen!)
Unter der Registerkarte "Speicherung" muss der Cache für diesen Feed aktiviert sein (sollte standardmäßig bereits aktiviert sein, dennoch bitte prüfen).
Unter der Registerkarte Einstellungen muss außerdem die Kennwortabfrage für die Benutzeroberfläche deaktiviert werden.
Dann direkt am Bilderrahmen den soeben neu eingerichteten Foto-Feed starten. Außerdem stellt ihr den Bildwechselintervall auf den größtmöglichen Wert (20 Sekunden) und deaktiviert die Überblendeffekte.
Digitale Zeitschaltuhr
Die Firmware des Bilderrahmens hat leider einen etwas nervigen Bug. Wird das anzeigte Bild minütlich aktualisiert, so erscheint nach ca. 13-14 Stunden ein "OutOfMemory"-Fehler des dem Bilderrahmen zugrundeliegenden Windows CE. Dem wirke ich mit einer simplen Digitalen Schaltuhr von Aldi für ca. 4 EUR entgegen, welche dem Bilderrahmen alle 12 Stunden für 1 Minute den Strom entzieht. Keine schöne Lösung, aber sie funktioniert. Nachdem der Bilderrahmen wieder Saft hat startet die Wiedergabe übrigens automatisch.
3. Weiterentwicklung
Prinzipiell bin ich mit dem aktuellen Stand soweit zufrieden und er läuft bei mir nun auch schon seit einigen Monaten recht unverändert und stabil (von einigen Ausfällen meines Webhosters abgesehen). Für eine Weiterentwicklung fehlt mir aktuell schlicht die Zeit. Den Code selbst habe ich unter die GPL gestellt. Was mich Prinzipiell reizen würde, mir aber neben der Zeit auch das Know-How dazu fehlt, ist folgendes:
- Auf einen externen Webserver verzichten und die PHP-Skripts direkt auf der Fritz-Box laufen lassen (Wenn es jemand hinbekommt Apache+PHP mit allen benötigten Modulen für die Box zu kompilieren, so dass die Skripte darauf laufen, wäre klasse. Dann würde ich mich auch bereiterklären meine Anwendung so anpassen, dass keine MySQL-Datenbank auf der Box benötigt wird, sondern die Daten in einfachen Textdateien gespeichert werden).
- Oder noch besser: Eine .NET Compact-Framework-Anwendung, die direkt auf dem Bilderrahmen läuft, dann bräuchte man weder Webserver noch Fritz!Box und ist völlig unabhängig. Auf dem Bilderrahmen läuft ein Windows CE 5.0 Embedded mit .NET Compact-Framework 2.0. Die Original-Anwendung von Samsung (imdframe.exe) ist auch mit .NET CF 2.0 entwickelt (einfach mal durch einen Dekompiler jagen, ist recht interessant), allerdings müsste man die dann entwickelte Anwendung in ein neues WinCE-Firmware-Image packen und dann flashen, und da hörts bei mir auf...
Update am 28.05.2011:
- Das Wetter-Plugin wurde aktualisiert (Google hatte die Dateinamen und URLs der Icons geändert), details hier
Update am 29.05.2011:
- nochmal 3 Wetter-Icons ergänzt (cloudy, drizzle, dust)
Update am 06.06.2011:
- Google spielt Wetter-API-Roulette: die alten Icons sind wiederhergestellt
Anhänge
Zuletzt bearbeitet: