InfoFrame: Digitaler Bilderrahmen (Anzeige von Anrufen, E-Mails, Termine, Wetter...)

Ich habe die Sache für den Kodak Rahmen jetzt so weit konfiguriert daß, wenn ich fritz.box:5050 im Firefox eingebe ein InfoFrame Feed angezeigt wird. Habe die Dateien von Ktw2003 aus Beitrag #750 für mich angepasst.
Nach dem aufrufen von fritz.box:5050 wird mir folgender Feed angezeigt:
IF
Medien Dateien
info.jpg

IF2
Medien Dateien
info_clone.jpg

IF3
Medien Datei
info1.jpg

usw.

Wenn ich jetzt auf einen der info.jpg Link oder IF3 Link klicke kommt aber immer :404 Not Found
The request URL was not found.

Eigentlich sollte doch dann im Firefox auch ein Bild angezeigt werden, oder ?
Die Dateien (info1.jpg usw. gibt es, zumindest namentlich, auch im Verzeichniss var/tmp/infoframe)
So sieht meine rc.custom aus:
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
SITE_3=192.168.178.100
while !(ping -c 1 $SITE_1>/dev/null) && !(ping -c 1 $SITE_2>/dev/null) && !(ping -c 1 $SITE_3>/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
Hier sind meine Dateien die einmal im Web Ordner auf dem QNAP gespeichert sind, sowie die Dateien vom USB Stick (uStor01) der FritzBox.
Anhang anzeigen Infoframe.zip

Vielleicht kann sich ja ein "alter Hase" mal die Dateien ansehen und findet den Fehler. Ich als Noob kann eigentlich nur anhand von Beispielen vergleichen. So langsam lerne ich aber immer mehr. Die weiteren Fehler (Benzinpreis usw.) probiere ich dann später zu korrigieren.
Erst mal sehen ob noch jemand Hilfe für den Kodak W1030 geben kann, da dort kein Webmenü zum eintragen eines rss-feed verfügbar ist,
oder ob ich mir was neues suchen muss.
 
Hi ralalla!
Das sieht doch erst mal gut aus. Der Firefox ist doch auch kein RSS-Reader. Zur Anzeige deines Bildes im Firefox solltest du es über den Apache auf dem QNAP aufrufen. Die RSS-Datei soll ja dein W1020 abarbeiten. Mit diesem Rahmen habe ich mich aber mangels Masse noch nicht beschäftigt.
 
Mal sehen wie das mit dem Apache funktioniert ? Wie gesagt eigentlich ein Noob auf dem Gebiet, probiere aber viel und bin hartnäckig wenn was nicht funktioniert.

Habe momentan einen Kodak W1030 (nicht 1020). Damit scheint es aber nicht zu funktionieren da man keinen RSS-Feed eingeben kann.
 
Hi ralalla!
Leider hat das Benutzerhandbuch von dem QNAP (es heißt übrigends TS-219 PII) 674 Seiten! Da liest man sich nicht so schnell ein. Ist aber ein geiles Teil. Das hat doch Speicher ohne Ende, da stellt sich doch die Frage, was du mit einem Stick an der 7390 für InfoFrame sollst? Und den Webserver/MySQL stellt QNAP doch auch.
 
Ja klar. Der Webserver und MySQL läuft ja auch schon auf dem QNAP.
Wenn ich im Browser die IP vom QNAP aufrufe bekomme ich ja auch schon das Bild zu sehen wie es sein soll.
Dachte nur um den Callmonitor zu nutzen und das Bild auf den Rahmen zu bekommen muss das über die FritzBox laufen.

Denke ht81 kann mir vielleicht weiterhelfen ?

Wer sieht sich oben die Dateien noch mal an ?
Finde den Fehler beim BenzinPlugin nicht wirklich. Aktualisiert sich nicht. Und wenn ich auf 1 Station umstelle bekomme ich nur noch ein weißes Bild. Bei 2 gehts wieder.
Ebenso wird die Uhrzeit immer noch doppelt bzw. sehr seltsam angezeigt.
 
edit:

Habe es nun so eingebunden und funktioniert

Code:
// copy (resized) webcam image on background
$webcamimagefile = 'http://xxxx.eu/xxxx/cambild.jpg';
$bg = @ImageCreateFromJpeg ($webcamimagefile); /* Versuch, Datei zu öffnen */
if ($bg) {
	imagecopyresampled($im, $bg, 15, 165,  0,  0, 400, 300, imagesx($bg), imagesy($bg));
}

hatte gerade erst einen kleinen gedankenfehler

danke für deine hilfe

gruß

Hi web-ranger!
Das Bild der IP-Cam ruft man genauso auf wie auch das Hintergrundbild.
Also in der index.php ab den Zeilen $bgimagefile= bzw. $webcamimagefile=, nur das man als Bildquelle das von der Webcam gelieferte Bild eingibt z.B. bei meiner Kamera 'http://<IP-Adresse-der-Kamera>/loginfree.jpg') und die Abmesungen in imagecopyresampled entsprechend konfiguriert.
 

Anhänge

  • infoframe.JPG
    infoframe.JPG
    70.6 KB · Aufrufe: 97
Zuletzt bearbeitet:
Habe die Sache nun angepasst so das es ohne Stick funktionieren sollt. Komme zumindest nach dem Aufruf von fritz.box:5050 wieder auf die "Feed Seite".
Kann sich noch mal jemand die Codes ansehen ob das passt bzw. ob noch was geändert werden muss ?

rc.custom
Code:
# Make directory for QNAP and copy files
mkdir /var/tmp/infoframe
cd /var/tmp/infoframe
wget ftp://user:[email protected]/Web/Setup/setup.sh
wget ftp://user:[email protected]/Web/Setup/download.sh
wget ftp://user:[email protected]/Web/Setup/refresh.sh
wget ftp://user:[email protected]/Web/Setup/wait.sh
wget ftp://user:[email protected]/Web/Setup/error.jpg

       sh ./setup.sh

done

setup.sh
Code:
#!/bin/sh
# setup infoframe handling


# create webserver on port 5050 for serving images to picture frame
httpd -p 5050 -h /var/tmp/infoframe/ -r InfoFrame


# make clone
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_clone.jpg

# make more clones
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_1.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_2.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_3.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_4.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_5.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_6.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_7.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_8.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_9.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_10.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_11.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_12.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_13.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_14.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_15.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_16.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_17.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_18.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_19.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_20.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_21.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_22.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_23.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_24.jpg
ln -s /var/tmp/infoframe/info.jpg /var/tmp/infoframe/info_25.jpg

# refresh picture for first time
sh /var/tmp/infoframe/wait.sh &

Doch wieder auf Standard (QNAP, Stick an FritzBox geändert) da so nicht funktioniert.
 
Zuletzt bearbeitet:
Hat Google eigentlich was geändert die letzten Tage am Kalender?

infoframe2.JPG

Warum steht da jetzt bei ganztägigen ereignissen (von 23.00 bis 23.00)

Das war doch vorher nicht!
 
@ralalla: Ich melde mich sobald ich Daheim bin. Ist gestern etwas spät geworden....
 
Habe immer noch das Problem mit der RSS-Feed Seite. Wenn ich meine fritz.box:5050/ aufrufe bekomme ich im Firefox die Seite mit den info.jpg Links.
Wenn ich dann einen anklicke kommt die 404....... Meldung. (siehe oben)

Habe die setup.sh noch mal ausgeführt. Das Ergebniss sieht dann so aus:
Code:
sh ./setup.sh
mkdir: can't create directory '/var/tmp/infoframe': File exists
httpd: bind: Address already in use
cp: can't stat '/var/tmp/qnap/error.jpg': No such file or directory
ln: /var/tmp/infoframe/info_clone.jpg: File exists
ln: /var/tmp/infoframe/info_1.jpg: File exists
ln: /var/tmp/infoframe/info_2.jpg: File exists
ln: /var/tmp/infoframe/info_3.jpg: File exists
ln: /var/tmp/infoframe/info_4.jpg: File exists
ln: /var/tmp/infoframe/info_5.jpg: File exists
ln: /var/tmp/infoframe/info_6.jpg: File exists
ln: /var/tmp/infoframe/info_7.jpg: File exists
ln: /var/tmp/infoframe/info_8.jpg: File exists
ln: /var/tmp/infoframe/info_9.jpg: File exists
ln: /var/tmp/infoframe/info_10.jpg: File exists
ln: /var/tmp/infoframe/info_11.jpg: File exists
ln: /var/tmp/infoframe/info_12.jpg: File exists
ln: /var/tmp/infoframe/info_13.jpg: File exists
ln: /var/tmp/infoframe/info_14.jpg: File exists
ln: /var/tmp/infoframe/info_15.jpg: File exists
ln: /var/tmp/infoframe/info_16.jpg: File exists
ln: /var/tmp/infoframe/info_17.jpg: File exists
ln: /var/tmp/infoframe/info_18.jpg: File exists
ln: /var/tmp/infoframe/info_19.jpg: File exists
ln: /var/tmp/infoframe/info_20.jpg: File exists
ln: /var/tmp/infoframe/info_21.jpg: File exists
ln: /var/tmp/infoframe/info_22.jpg: File exists
ln: /var/tmp/infoframe/info_23.jpg: File exists
ln: /var/tmp/infoframe/info_24.jpg: File exists
ln: /var/tmp/infoframe/info_25.jpg: File exists
root@fritz:/var/tmp/qnap# Connecting to 192.168.178.100 (192.168.178.100:80)
wget: server returned error: HTTP/1.1 404 Not Found
Connecting to 192.168.178.100 (192.168.178.100:80)
wget: server returned error: HTTP/1.1 404 Not Found
mv: can't rename '/var/tmp/infoframe/tmp.jpg': No such file or directory

normal müsste das doch funktionieren ?

Wie kopiere ich den eine Datei aus /var/tmp/infoframe nach /var/media/ftp/uStor01

wenn ich eingebe:

ls -s /var/tmp/infoframe/info_1.jpg /var/media/ftp/uStor01/info_1.jpg

bekomme ich immer die Meldung "No such file or directory"

Kann es sein das die Datei Info.jpg die vervielfältigt wird leer ist und das deshalb nicht funktioniert ?
Wo bzw. mit welcher Datei bzw. Befehl wird die Datei info.jpg erzeugt ?

Ist hier jemand mit einem QNAP und einem Kodak Rahmen der mir seine Files mal zusenden kann ?
 
Zuletzt bearbeitet:
Probier mal cp /var/tmp/infoframe/info_1.jpg /var/media/ftp/uStor01/info_1.jpg
 
Hi ralalla!
Du mußt dir noch mindestens darüber klar werden, dass du mit freetz einen Webserver auf der FRITZ!Box hast, der unter fritz!box:5050 läuft. Dieser liefert dir auch wie in den Dateien eingestellt die rss-Datei mit den leeren Bildern. Diese werden ja auch vom Apache auf dem QNAP (192.168.178.100:80 ?) erzeugt. Vielleicht kann dir jemand entsprechende Dateien zusenden.
 
Da hast du recht. Wenn ich im Browser 192.168.178.100:80 aufrufe bekomme ich ja auch ein Bild angezeigt so wie ich es gerne hätte.
Die FritzBox soll sich dieses besagte Bild info.jpg ja dann holen und für den Kodak Rahmen verfielfältigen, so das in jedem Link das selbe Bild steht denke ich.

Das Problem ist halt das da irgend etwas nicht funktioniert, die FBox bekommt das Bild nicht und legt leere Links an.
Deshalb auch die Ausgabe oben wenn ich die Setup.sh ausführe.
 
Hi!
Was soll die FRITZ!Box denn mit dem Bild anfangen? Du schreibst vervielfältigen, wozu? Hängt das mit der Übertragung an den Rahmen zusammen? Wie erfolgt die Übertragung an den Rahmen, mittels einer RSS-Datei wie bei mir?
Die setup.sh-Datei dient ja zum einrichten nach einem Neustarten der FRITZ!Box, Ansonsten wird das Bild ja mit der refresh.sh erneuert.
Da du genauso wie ich Webserver und Datenbank auf einem anderen Gerät laufen haben müssen die Scripte auch eher dort eingebunden werden. Leider stelle ich mich mit dem konvertieren ungeschickt an. Ich benötige es auch nur um den Callmonitor zu nutzen.
Für das Zusammenspiel von Bildern und Datenbank reicht bei meinem Rahmen die RSS-Datei aus. Auch die Aktualisierung der Bilder (mehrere, nicht gleicher Inhalt da nicht alle Informationen iiin ein Bild passen) funktioniert über die RSS-Datei einwandfrei.
 
So wie ich es eingerichtet habe steht es hier im Forum beschrieben für einen Kodak Rahmen.

Mit dem W1030 geht es wohl nicht. Bekomme aber die Tage einen 1020 zum testen. Dann sehe ich wie es praktisch funktioniert.
 
So ich denke wenn ich diesen Fehler behoben habe, hoffentlich mit eurer Hilfe, läuft mein Infoframe auch auf dem Kodak.
Ich denke das Problem ist, das die download.sh bzw die refresh.sh nicht ausgeführt bzw geholt werden kann und damit auch kein Bild erzeugt wird und auch nicht auf die Box geholt wird.
Die download.sh sieht so aus:
Code:
#!/bin/sh
# refresh infoframe image
wget "http://user:[email protected]/web/index.php" -O /dev/null
wget "http://user:[email protected]/web/cache/info.jpg" -O /var/tmp/infoframe/tmp.jpg

# rename to info.jpg
mv /var/tmp/infoframe/tmp.jpg /var/tmp/infoframe/info.jpg

exit 0

Die download.sh sieht so aus:
Code:
#!/bin/sh
# refresh infoframe image for a call

wget "http://user:[email protected]/Web/index.php?$1" -O /dev/null
sh /var/tmp/infoframe/download.sh
exit 0

Was muss ich bei den Zeilen mit http:// user:pass@.......... eingeben ?
Muss ja auf mein QNAP zugreifen um an die Dateien ran zu kommen, da hängt es glaube ich.
 
Zuletzt bearbeitet:
Das geht ja nicht, schon probiert.

In der refresh.sh oben bei serverscript greift der Code doch auch auf die "Index.sh" zu die auf dem QNAP liegt ?
Was muss den dort eingetragen werden ? Wäre doch eigentlich das selbe was da hin kommt wie das was ich oben probiert habe ?
 
So wie es aussieht gehts jetzt.
Werde, wenn der W1020 da ist mal testen ob es geht und dann die Dateien hier und im neuen WIKI posten.

Was noch nicht funktioniert bzw. was bisher Nebensache war ist der Benzinpreis.
Dieser wird nicht aktualisiert. Die Uhrzeit und das Datum davon schon.
Ebenso scheint sich der Sonnenauf und Untergang nicht zu ändern.

Das werde ich mir aber später ansehen, für heute ist Schluß.info.jpg

Danke erst mal, vor allem ht81 der mich sehr gut unterstützt hat.
 
Zuletzt bearbeitet:
Habe in den Weiten des Internet ein Script gefunden.
Da ich aber, wie schon geschrieben, nicht ganz so viel Ahnung habe kann ich damit nicht so viel anfangen. Sollte aber evtl. ein Teil für die Lösung für die Pulse Serie sein ?
So wie ich das deute horcht das Script auf Port 80 &443 und leitet die Anfragen des Rahmens auf eine Adresse um so das die Daten dann von dort gelesen werden ?
Kann mir hier jemand weiterhelfen, wie das genau funktioniert und was man noch alles benötigen würde ?

Code:
<?php

/**
 *
 * kodak-pulse-picture-frame-server.php V1.02
 *
 * Kodak Pulse Picture Frame Server (KCS Kodak Cloud Services) Emulator
 *
 * (C) Hajo Noerenberg 2010
 *
 * http://www.noerenberg.de/hajo/pub/kodak-pulse-picture-frame-server.php.txt
 *
 * Proof-of-concept code, you'll quickly get the idea about how the protocol works.
 *
 * Tested with a W730 model and firmware version '02/23/2010'.
 *
 * +++ WARNING +++
 * MODIFYING YOUR DEVICE WILL VOID YOUR WARRANTY! IT IS
 * POSSIBLE TO BRICK YOUR DEVICE! USE AT YOUR OWN RISK!
 * I AM NOT LIABLE FOR ANY DAMAGES TO YOUR SYSTEM OR
 * ANY LOSS OF DATA!
 *
 *
 * KODAK and PULSE are trademarks of Eastman Kodak Company, Rochester, NY 14650-0218.
 *
 *
 * - Setup
 *
 * Apache Web Server, listening on port 80 and 443 (SSL), config file:
 * RewriteRule /DeviceRest.* /kodak-pulse-picture-frame-server.php
 *
 * iptables -t nat -I PREROUTING -d device.pulse.kodak.com -p tcp --dport  80 -j DNAT --to <APACHE IP>
 * iptables -t nat -I PREROUTING -d device.pulse.kodak.com -p tcp --dport 443 -j DNAT --to <APACHE IP>
 *
 * (alternatively, you can re-route device.pulse.kodak.com via DNS)
 *
 *
 * - GUIDs/IDs used in this emulator
 *
 * ba538605-038e-b8ee-02c4-6925cad67189 = 'secret' Kodak API key
 * 55555555-deaf-dead-beef-555555555555 = device (picture frame) activation ID
 * 22222222-1234-5678-9012-123456789012 = user 'admin' profile ID
 * 13333337-1337-1337-1337-424242424242 = session auth token
 * 66666666-5555-3333-2222-222222222222 = user 'collection author' profile ID
 * 77777777-fefe-fefe-fefe-777777777777 = (picture) collection ID
 * 99999999-1111-2222-3333-420000000001 = entity (picture) ID (Example Pic 1)
 * 99999999-1111-2222-3333-420000000002 = entity (picture) ID (Example Pic 2)
 *
 * KCMLP012345678 = frame serial number (printed on the device)
 * NXV123456789 = activation code (printed on package)
 * 123789 = PIN (website activation)
 *
 *
 * - Security 
 *
 * There is a serious security issue with the official Kodak API Server (details
 * are not disclosed here). As of today, I strongly suggest not to
 * upload any personal data to Kodak's server.
 *
 *
 * - Download firmware image
 *
 * curl -v 'http://www.kodak.com/go/update?v=2010.02.23&m=W730&s=KCMLP012345678'
 * curl -v -O 'http://download.kodak.com/digital/software/pictureFrame/autoupdate_test/2010_09_06/Kodak_FW__Fuller.img'
 *
 *
 * - Misc details
 *
 * The picture frame uses the AVOS OS ('AVOS/1.1 libhttp/1.1'),
 * the MatrixSSL client lib and ZyDAS WLAN.
 *
 */

$r = $_SERVER['REQUEST_URI'];

$e = '<?xml version="1.0" encoding="UTF-8"?' . '>';

if ('/DeviceRest/activate' == $r) {

    /**
     *
     * Step 1: The picture frame connects to https://$deviceActivationURL and
     *         requests activation status and auth URL. Fortunately, the picture
     *         frame does not validate the SSL certificate's hostname.
     *
     * $deviceActivationURL is hardcoded into the firmware and thus
     * cannot be changed (at least, until someone decodes the fw image ;-))
     *
     * curl -v -k -d '<?xml version="1.0"? >
     *     <activationInfo>
     *         <deviceID>KCMLP012345678</deviceID>
     *         <apiVersion>1.0</apiVersion>
     *         <apiKey>ba538605-038e-b8ee-02c4-6925cad67189</apiKey>
     *         <activationCode>NXV123456789</activationCode>
     *     </activationInfo>'
     *     https://device.pulse.kodak.com/DeviceRest/activate
     *
     */


    if (1) { // always activated

        header('HTTP/1.1 412 Precondition Failed');

        print $e . '<activationResponseInfo>' .
                       '<deviceActivationID>55555555-deaf-dead-beef-555555555555</deviceActivationID>' .
                       '<deviceAuthorizationURL>https://device.pulse.kodak.com/DeviceRestV10/Authorize</deviceAuthorizationURL>' .
                       '<deviceProfileList>' .
                           '<admins>' .
                               '<profile>' .
                                   '<id>22222222-1234-5678-9012-123456789012</id>' .
                                   '<name>Firstname Lastname</name>' .
                                   '<emailAddress>[email protected]</emailAddress>' .
                               '</profile>' .
                           '</admins>' .
                       '</deviceProfileList>' .
                   '</activationResponseInfo>';

    } else {

        print $e . '<activationResponseInfo>' .
                       '<deviceActivationID>55555555-deaf-dead-beef-555555555555</deviceActivationID>' .
                       '<deviceAuthorizationURL>https://device.pulse.kodak.com/DeviceRestV10/Authorize</deviceAuthorizationURL>' .
                       '<consumerActivation>' . 
                           '<pin>123789</pin>' .
                           '<url>http://www.kodakpulse.com</url>' .
                       '</consumerActivation>' .
                       '<deviceProfileList><admins /></deviceProfileList>' .
                   '</activationResponseInfo>';

    }

    exit;

} elseif ('/DeviceRestV10/Authorize' == $r) {

    /**
     *
     * Step 2: The picture frame connects to $deviceAuthorizationURL (->Step 1) and
     *         requests auth token and API URL
     *
     * curl -v -k -d '<?xml version="1.0"? >
     *     <authorizationInfo>
     *         <deviceID>KCMLP012345678</deviceID>
     *         <deviceActivationID>55555555-deaf-dead-beef-555555555555</deviceActivationID>
     *         <deviceStorage>
     *             <bytesAvailable>447176504</bytesAvailable>
     *             <bytesTotal>448143360</bytesTotal>
     *             <picturesAvailable>4500</picturesAvailable>
     *             <picturesTotal>4500</picturesTotal>
     *         </deviceStorage>
     *     </authorizationInfo>'
     *     https://device.pulse.kodak.com/DeviceRestV10/Authorize
     *
     */

    if (1) { // always authorized

        print $e . '<authorizationResponseInfo>' .
                       '<authorizationToken>13333337-1337-1337-1337-424242424242</authorizationToken>' .
                       '<apiBaseURL>http://device.pulse.kodak.com/DeviceRestV10</apiBaseURL>' .
                       '<status>' .
                           '<overallStatus>1287525977004</overallStatus>' .
                           '<collectionStatus>1287525977004</collectionStatus>' .
                           '<settingsStatus>1287525781312</settingsStatus>' .
                           '<pollingPeriod>300</pollingPeriod>' .
                       '</status>' .
                       '<deviceProfileList>' .
                           '<admins>' .
                               '<profile>' .
                                   '<id>22222222-1234-5678-9012-123456789012</id>' .
                                   '<name>Firstname Lastname</name>' .
                                   '<emailAddress>[email protected]</emailAddress>' .
                               '</profile>' .
                           '</admins>' .
                       '</deviceProfileList>' .
                   '</authorizationResponseInfo>';

    } else {

        header('HTTP/1.1 400 Bad Request');

    }

    exit;

}

/**
 *
 * Step 3++: The picture frame connects to $apiBaseURL (->Step 2) and
 *           requests device settings, collection status, ...
 *
 * The following functions are only available for picture frames with a
 * valid device (auth) token.
 *
 * curl -v -k -H 'DeviceToken: 13333337-1337-1337-1337-424242424242' <URL>
 *
 *     http://device.pulse.kodak.com/DeviceRestV10/status/0
 *     http://device.pulse.kodak.com/DeviceRestV10/status/1287591702353
 *     http://device.pulse.kodak.com/DeviceRestV10/settings
 *     http://device.pulse.kodak.com/DeviceRestV10/collection
 *     http://device.pulse.kodak.com/DeviceRestV10/profile/66666666-5555-3333-2222-222222222222
 *     http://device.pulse.kodak.com/DeviceRestV10/entity/99999999-1111-2222-3333-420000000001
 *     http://device.pulse.kodak.com/DeviceRestV10/entity/99999999-1111-2222-3333-420000000002
 *
 */

if ('13333337-1337-1337-1337-424242424242' != $_SERVER['HTTP_DEVICETOKEN']) {

    header('HTTP/1.1 424 Failed Dependency');
    exit;

}

if ('/DeviceRestV10/status/' == substr($r, 0, 22)) {

    $s = substr($r, 22);

    if ('1287591702353' != $s) {	// dummy mode: fixed serial, increment on change

        header('HTTP/1.1 425 Unordered Collection');
        print $e . '<status>' .
                       '<overallStatus>1287591702353</overallStatus>' .
                       '<collectionStatus>1287591701461</collectionStatus>' .
                       '<settingsStatus>1287525781312</settingsStatus>' .
                       '<pollingPeriod>300</pollingPeriod>' .
                   '</status>';
    }

} elseif ('/DeviceRestV10/settings' == $r) {

    print $e . '<deviceSettings>' .
                   '<name>My lovely Pulse Frame</name>' .
                   '<slideShowProperties>' .
                       '<duration>10</duration>' .
                       '<transition>FADE</transition>' .
                   '</slideShowProperties>' .
                   '<displayProperties>' . 
                       '<displayMode>ONEUP</displayMode>' .
                       '<showPictureInfo>false</showPictureInfo>' .
                       '<renderMode>FILL</renderMode>' .
                   '</displayProperties>' .
                   '<autoPowerProperties>' .
                       '<autoPowerEnabled>true</autoPowerEnabled>' .
                       '<wakeOnContent>false</wakeOnContent>' .
                       '<autoPowerTime autoType="ON">8:00:00</autoPowerTime>' .
                       '<autoPowerTime autoType="OFF">22:00:00</autoPowerTime>' .
                   '</autoPowerProperties>' .
                   '<defaultCollectionOrder>NAME</defaultCollectionOrder>' .
                   '<respondToLocalControls>true</respondToLocalControls>' .
                   '<language>en-us</language>' .
                   '<timeZoneOffset>0:00:00+2:00</timeZoneOffset>' .
                   '<managePictureStorage>false</managePictureStorage>' .
                   '<logLevel>OFF</logLevel>' .
                   '<enableNotification>true</enableNotification>' .
                   '<modificationDate>2010-10-20T20:18:03Z</modificationDate>' .
                   '<modificationTime>1287605883011</modificationTime>' .
              '</deviceSettings>';

} elseif ('/DeviceRestV10/collection' == $r) {

    print $e . '<collection>' .
                   '<story>' .
                        '<id>77777777-fefe-fefe-fefe-777777777777</id>' .
                        '<title>My Kodak Hacking Session Pics</title>' .
                        '<displayDate>2010-10-19T22:14:30Z</displayDate>' .
                        '<modificationDate>2010-10-19T22:14:31Z</modificationDate>' .
                        '<modificationTime>1287526470836</modificationTime>' .
                        '<authorProfileID>66666666-5555-3333-2222-222222222222</authorProfileID>' .
                        '<source>EMAIL</source>' .
                        '<contents>' .
                            '<pictureSpec>' .
                               '<id>99999999-1111-2222-3333-420000000001</id>' .
                               '<modificationDate>2010-10-19T22:14:31Z</modificationDate>' .
                               '<modificationTime>1287526470727</modificationTime>' .
                            '</pictureSpec>' .
                            '<pictureSpec>' . 
                               '<id>99999999-1111-2222-3333-420000000002</id>' .
                               '<modificationDate>2010-10-19T22:14:24Z</modificationDate>' .
                               '<modificationTime>1287526463446</modificationTime>' .
                            '</pictureSpec>' .
                        '</contents>' .
                   '</story>' .
              '</collection>';

} elseif ('/DeviceRestV10/profile/' == substr($r, 0, 23)) {

    print $e . '<profile>' .
                      '<id>66666666-5555-3333-2222-222222222222</id>' .
                      '<name>Firstname Lastname</name>' .
                      '<emailAddress>[email protected]</emailAddress>' .
                  '</profile>';

} elseif ('/DeviceRestV10/entity/' == substr($r, 0, 22)) {

    // /DeviceRestV10/entity/<id> accepts GET and DELETE

    if ('99999999-1111-2222-3333-420000000001' == substr($r, 22)) {

        print $e . '<picture>' .
                      '<id>99999999-1111-2222-3333-420000000001</id>' .
                      '<title>Hohenzollernbruecke (bridge), Cathedral, Museum Ludwig. Cologne, Germany</title>' .
                      '<captureDate>2004-09-06T16:07:12Z</captureDate>' .
                      '<modificationDate>2010-10-19T22:14:23Z</modificationDate>' .
                      '<modificationTime>1287526463445</modificationTime>' .
                      '<fileURL>http://upload.wikimedia.org/wikipedia/commons/e/ee/Koeln_Hohenzollernbruecke.jpg</fileURL>' .
                  '</picture>';

    } else {

        print $e . '<picture>' .
                      '<id>' . substr($r, 22) . '</id>' .
                      '<title>The Brandenburg Gate in Berlin, Germany</title>' .
                      '<captureDate>2008-05-03T16:07:12Z</captureDate>' .
                      '<modificationDate>2010-10-19T22:14:23Z</modificationDate>' .
                      '<modificationTime>1287526463445</modificationTime>' .
                      '<fileURL>http://upload.wikimedia.org/wikipedia/commons/a/a6/Brandenburger_Tor_abends.jpg</fileURL>' .
                  '</picture>';
    }

} else {

    header('HTTP/1.1 404 Not Found');

}
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.