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

Es funktioniert alles!
Allerdings, wird das weatherplugin nicht aktualisiert!

Gruß
Langerhannes

infoframe.jpg
 
Hi,

ja das ist richtig. Du hast ja mit dem "//curl" die Schleife deaktiviert. Du musst nun mit einem anderen Code dafür sorgen das die xml gedownloaded wird und in das Verzeichnis wandert. So wie Du es manuell gemacht hast. Ein Code Schnipsel wäre (bitte oberhalb vor dem "//curl" Befehl einfügen):

Code:
$xml = file_get_contents("http://yoursite.com/yourxml.xml"); // your file is in the string "$xml" now. 
file_put_contents("/path/to/file/yourxml.xml", $xml); // now your xml file is saved.

Auch hier gilt: http://yoursite.com/yourxml.xml muss durch http://www.google.de/ig/api?weather=$city&oe=UTF8 ersetzt werden. Und /path/to/file/yourxml.xml muss die Pfadangabe zum "cache" Ordner werden. Achte darauf die Datei nicht "yourxml.xml" zu nennen, sondern weather.xml

Probiers aus und berichte :D
 
Zuletzt bearbeitet von einem Moderator:
Habe es ausprobiert!
Die Datei weather.xml wird erzeugt, allerdings mit 0KB
Ich erhalte über E_ALL folgende Fehlermeldung:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in ***************************WeatherPlugin.php on line 46

für folgenden Eintrag: $xml = file_get_contents("http://www.google.de/ig/api?weather=$city&oe=UTF8");
 
Zuletzt bearbeitet:
Achtung: $xml = file_get_contents("http://www.google.de/ig/api?weather=$city&oe=UTF8");
 
Manchmal sieht man den Wald vor lauter Bäumen nicht:)

Ich habe nun folgendes im Script stehen:

public function doUpdate() {
// download google weather XML into local file for caching
$city = urlencode( $this->config['city'] );
//$curl = curl_init();
$file = fopen("cache/weather.xml", "w");
if ($file)
{
curl_setopt($curl, CURLOPT_URL, utf8_encode("http://www.google.de/ig/api?weather=$city&oe=UTF8"));
curl_setopt($curl, CURLOPT_FILE, $file);
curl_exec($curl);
curl_close($curl);
fclose($file);
}

$xml = file_get_contents("http://www.google.de/ig/api?weather=$paderborn&oe=UTF8");
// your file is in the string "$xml" now.
file_put_contents("cache/weather.xml", $xml);
// now your xml file is saved.

}

Leider werden die Temp. Werte usw. nicht angezeigt. Die weather.xml ist 1KB groß, und es ist folgendes enthalten:

<?xml version="1.0"?><xml_api_reply version="1"><weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1"/></xml_api_reply>

infoframe.jpg
 
Zuletzt bearbeitet:
Ich glaube der Code ist an der falschen Stelle. Stell den mal so um:

Code:
public function doUpdate() {
// download google weather XML into local file for caching
$city = urlencode( $this->config['city'] );
//$curl = curl_init();
[COLOR="red"]$xml = file_get_contents("http://www.google.de/ig/api?weather=$paderborn&oe=UTF8");
// your file is in the string "$xml" now.
file_put_contents("cache/weather.xml", $xml);
// now your xml file is saved.[/COLOR]
$file = fopen("cache/weather.xml", "w");
if ($file)
{
curl_setopt($curl, CURLOPT_URL, utf8_encode("http://www.google.de/ig/api?weather=$city&oe=UTF8"));
curl_setopt($curl, CURLOPT_FILE, $file);
curl_exec($curl);
curl_close($curl);
fclose($file);
}

}

So sollte es funktionieren
 
Zuletzt bearbeitet von einem Moderator:
DANKE Thomas!!!:D

Ich verbringe schon den ganzen Tag vor meinen Rechner und google, und google

Aber erst dank Deiner Hilfe ist es geschafft!:)

Nun werde ich noch das FeedPlugin entsprechend anpassen!

Hier das Ergebnis und das mit einem GRATIS-Hoster!!!

infoframe.jpg

Gruß

Langerhannes
 
Hallo Thomas,

zu Früh gefreut, nach der nächsten Aktualisierung ist das kompl. Wetter wieder weg!:mad:
 
Hallo h-p-d,

such mal folgenden Code im Plugin: und spiel mal mit den Werten die nach $image kommen + $yoffset

Ah, danke. Jetzt hab ichs. Vielleicht kannst Du mir auch bei meinem letzten Problem helfen. Ich würde gerne die echte Außentemperatur auf meinem Frame anzeigen. Dazu habe ich eine html Datei erstellt die ich über die IP meiner Heizung abrufen kann (liegt auf dem internen Speicher meiner Heizung, kann ich auch aus dem Internet abrufen) Der Code sieht so aus:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!--tagparser="/pcotagfilt"-->
<head>
 <meta content="text/html; charset=ISO-8859-15" http-equiv="content-type">
 <title>pCOWeb Configuration</title>
</head>
<body>
<div style="color: black"> <%var(0,2,27)%>°C</div>
</body>
</html>

Nur wie binde ich das am geschicktesten ein?
 
Hallo,

für alle die einen Hoster verwenden, der mit der CURL-Funktion nicht klar kommt, habe ich zusammen mit Ht81 das Weather&FeedPlugin wie folgt abgeändert:

WeatherPlugin.php

[Edit frank_m24: Bitte benutzt PHP Tags für PHP Files.]
PHP:
public function doUpdate() {

         // download google weather XML into local file for caching

         $city = urlencode( $this->config['city'] );
         $xml = file_get_contents("http://www.google.de/ig/api?weather=$city&oe=UTF8");
         file_put_contents('cache/weather.xml', $xml);

         }

FeedPlugin

PHP:
// update only the feed with the given feed number
        private function updateFeed($feednumber) {
                // download feeds XML into local files for caching
                $feed_url = $this->config['feed_url_'.$feednumber];
                if ($feed_url) {


                         $xml = file_get_contents($feed_url);

                         file_put_contents('cache/feed_'.$feednumber.'.xml', $xml);


                }
        }

Gruß

Langerhannes
 
[code<div style="color: black"> <%var(0,2,27)%>°C</div>
[/code]

Ich lasse meine Daten in eine Text Datei schreiben. Der Inhalt sieht dann so aus:
Jul 05 22:00:49 Sensor 0 C: 22.88 F: 73.18
Jul 05 22:00:51 Sensor 1 C: 25.69 F: 78.24

da kann ich dann in der Zeile meine Position suchen und die Werte auslesen. Was bewirkt bei Dir (0,2,27)? Sind das die Zeilen, Spalten oder Positionen? Werden deine Daten nur dynamisch auf HTML erstellt oder auch irgendwo in eine Datei? Wie sieht den dein Output per HTML aus?
 
Ja genau 0,2,27 wird bei jedem Aufruf der html dynamisch abgefragt. Es wird keine Datei erstellt. Die Zahlenkombi ist die Kombination für die Außentemperatur. Die Kombination:0,2,28 wäre dann beispielsweise die Wassertemperatur. Ausgegeben wird nur der derzeitige Wert als Zahl.
 
Hallo h-p-d,

somit gibt es wohl mindestens 2 php Seiten bei Dir. Einmal mit intern 27 (Aussentemp)und einmal mit 28 (Wassertemp). Du könntest entweder den Content in eine Datei speichern lassen und diese anschließend auslesen und die Werte anzeigen lassen oder gleich den ganzen Code in der Index.php oder Weather.php integrieren und anschließend über die Funktion "imagettftextboxopt" an die entsprechende Stelle schieben. Glaube die 2te Lösung ist eleganter.
 
Ja, ich habe jeweils eine php Seite: außentemp.php

Code:
<?PHP
if(preg_match("/<body.*?>(.*)<\/body>/s"
   ,file_get_contents('http://meine.url/http/example.html')
   ,$html))
   echo $html[1];
?>

gibt mir die Außentemperatur aus. Nur wie binde ich das jetzt in meinen Frame ein? Ich habe jetzt schon ein paar Stunden rumprobiert und bin langsam am verzweifeln.
 
Hallo zusammen,

mittlerweile bin ich etwas verzweifelt bei dem Versuch hinzubekommen, dass man per Telefon die Monatsansicht des Kalenders anzeigen lassen kann. Meine Listeners des Callmonitor schauen so aus:
Code:
*:*     !^(02319180|0038649425052|095151950|091113294712)     !^9     /var/tmp/infoframe/refresh.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&src_numb=$SOURCE&dst_name=$(urlencode "$DEST_NAME")&dst_address=$(urlencode "$DEST_ADDRESS")&dst_numb=$DEST&duration=$DURATION"
*:*      ^             ^9  /var/tmp/infoframe/refresh.sh "action=kalender&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&src_numb=$SOURCE&dst_name=$(urlencode "$DEST_NAME")&dst_address=$(urlencode "$DEST_ADDRESS")&dst_numb=$DEST&duration=$DURATION""

Wenn ich 9# wähle wird auch die richtige ACTION ausgeführt, allerdings tut sich in der index.php nichts. Kann mir hier vielleicht jemand noch einen Tipp geben?
Letztenendes stelle ich mir das so vor, dass mit 1-12# die Monatsansicht des entsprechenden Monats angezeigt wird.

Vielen Dank schon mal und Gruß
Hoobert
 
@Hoobert:
hast du denn die index.php angepasst? Ausserdem solltest du mal deine Telefon nr. weg x'en. Gut wäre es wenn du mal ein Syslog auszug zeigst.

gruß
 
Hallo dampfkessel,

die index.php habe ich von bgx so übernommen, zumindest was den Monatskalender angeht. Dort wird ja mit
Code:
if(($_GET['action'] == 'kalender'))
der entsprechende "action"-Parameter abgefragt. Sollte doch so funktionieren, oder?

Ein entsprechender Eintrag im Syslog wäre:
Code:
Nov  1 19:32:30 fritz daemon.debug callmonitor: <<< timestamp=01.11.11 19:32:30 event=CALL id=0 ext=0 source=XXXXXX dest=9# provider=SIP0
Nov  1 19:32:30 fritz daemon.debug callmonitor: >>> out:request ID=0 TIMESTAMP=01.11.11 19:32:30 SOURCE=XXXXXX DEST=9 EXT=0 DURATION= PROVIDER=SIP0
Nov  1 19:32:30 fritz daemon.info callmonitor: [98] event detected:
Nov  1 19:32:30 fritz daemon.info callmonitor:   EVENT=out:request
Nov  1 19:32:30 fritz daemon.info callmonitor:   SOURCE='XXXXXX'
Nov  1 19:32:30 fritz daemon.info callmonitor:   DEST='9'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98+] detailed event data:
Nov  1 19:32:30 fritz daemon.debug callmonitor:   SOURCE_DISP='XXXXXX'
Nov  1 19:32:30 fritz daemon.debug callmonitor:   SOURCE_ENTRY='1und1'
Nov  1 19:32:30 fritz daemon.debug callmonitor:     SOURCE_NAME='1und1'
Nov  1 19:32:30 fritz daemon.debug callmonitor:     SOURCE_ADDRESS=''
Nov  1 19:32:30 fritz daemon.debug callmonitor:   DEST_DISP='9'
Nov  1 19:32:30 fritz daemon.debug callmonitor:   DEST_ENTRY='9; "Stadt"'
Nov  1 19:32:30 fritz daemon.debug callmonitor:     DEST_NAME='9'
Nov  1 19:32:30 fritz daemon.debug callmonitor:     DEST_ADDRESS='Stadt'
Nov  1 19:32:30 fritz daemon.debug callmonitor:   ID=0
Nov  1 19:32:30 fritz daemon.debug callmonitor:   EXT=0
Nov  1 19:32:30 fritz daemon.debug callmonitor:   DURATION=
Nov  1 19:32:30 fritz daemon.debug callmonitor:   TIMESTAMP='01.11.11 19:32:30'
Nov  1 19:32:30 fritz daemon.debug callmonitor:   PROVIDER=SIP0
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:0] processing rule '*:*' '!^(02319180|0038649425052|095151950|091113294712)' '!^9' '/var/tmp/infoframe/refresh.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS"
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:0] event 'out:request' matches pattern '*:*'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:1] processing rule '*:*' '^' '^9' '/var/tmp/infoframe/refresh.sh "action=kalender&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&src_numb=$SOURCE&dst_name=$(urlencode "$DES
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:1] event 'out:request' matches pattern '*:*'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:1] parameter SOURCE='XXXXXX' matches pattern '^'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:1] parameter DEST='9' matches pattern '^9'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:1] SUCCEEDED
Nov  1 19:32:30 fritz daemon.info callmonitor: [98:1] ACTION: '/var/tmp/infoframe/refresh.sh "action=kalender&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&src_numb=$SOURCE&dst_name=$(urlencode "$DEST_NAME")&dst_address=$(
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:0] parameter SOURCE='XXXXXX' matches pattern '!^(02319180|0038649425052|095151950|091113294712)'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:0] parameter DEST='9' does NOT match pattern '!^9'
Nov  1 19:32:30 fritz daemon.debug callmonitor: [98:0] FAILED

Meine Telefonnummer steht doch gar nicht im post, im Listener stehen nur Nummern, die ich nicht im Infoframe angezeigt bekommen möchte.

Gruß
Hoobert
 
Zuletzt bearbeitet:
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.