H
ht81
Guest
Ok, also manuell geht es. Wird es dann auch angezeigt wenn Du http://192.168.0.1:5050/ eingibst? Starte nochmal deine FritzBox neu.
Gerne Hast Du bereits das Plugin umgeschrieben?könnte mir mal jmd mit wunderground helfen bitte?
<?php
/***************************************************************************
* InfoFrame (image generator for digital picture frames)
* Copyright (C) 2009 Tobias Kolb
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/
***************************************************************************/
class WeatherPlugin implements IPlugin
{
private $dbconn = NULL;
private $config = NULL;
public function __construct($dbconn, $config) {
$this->dbconn = $dbconn;
$this->config = $config;
}
public function doUpdate() {
// download weather XML into local file for caching
$city = urlencode( $this->config['city'] );
$api_key = $this->config['1f83fb8ae64xxxxx'];
$curl = curl_init();
$file = fopen("cache/weather.xml", "w");
if ($file)
{
curl_setopt($curl, CURLOPT_URL, utf8_encode("http://api.wunderground.com/api/$api_key/geolookup/conditions/forecast/lang:DL/q/Germany/$city.xml"));
curl_setopt($curl, CURLOPT_FILE, $file);
curl_setopt($curl, CURLOPT_USERAGENT, utf8_encode("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"));
curl_exec($curl);
fclose($file);
}
curl_close($curl);
}
public function doOutput($image, $style, $updateData, &$yoffset) {
$filename = 'cache/weather.xml';
//doUpdate nur ausführen, wenn die Datei cache/weather.xml älter als eine halbe Stunde
$diff_seconds_weather = (time() - filectime($filename));
if (!file_exists($filename) || ($diff_seconds_weather > ($this->config['update_weather']*60))){
$this->doUpdate();
}
// XML-Datei auslesen
if(file_exists($filename) && (filesize($filename) > 0)) {
$xml = simplexml_load_file($filename);
if($xml) {
// parse weather data
// ===================
// current conditions
$current_condition = $xml->current_observation->weather;
$current_temp = $xml->current_observation->temp_c;
$current_humidity = $xml->current_observation->relative_humidity;
$current_wind_condition = $xml->current_observation->wind_kph;
$current_wind_dir = $xml->current_observation->wind_dir;
$current_pressure = $xml->current_observation->pressure_mb;
$night = !isDaylight();
$current_icon = $this->getLocalWeatherImage($xml->current_observation->icon, $night);
$wicon = ImageCreateFromPNG ( $current_icon );
ImageCopy($image, $wicon, imagesx($image)-190, 5, 0, 0, imagesx($wicon), imagesy($wicon));
//ImageCopy($image, $wicon, 50, 5, 0, 0, imagesx($wicon), imagesy($wicon));
ImageDestroy($wicon);
$opt = array(
'width' => 280,
'align' => ALIGN_RIGHT
);
}
}
$text = $current_temp."°C";
imagettftextboxopt($image, 24, 0, imagesx($image)-300, 105, $style['textcolor'], $style['font'], $text, $opt);
$text = "Aktuell: $current_condition\nLuftfeuchte: $current_humidity\nWind: $current_wind_condition $current_wind_dir\nLuftdruck: $current_pressure mbar";
imagettftextboxopt($image, 15, 0, imagesx($image)-300, 145, $style['textcolor'], $style['font'], $text, $opt);
// forecast for today and next 3 days
for ($i = 0; $i <= 3; $i++) {
// pixel offset for placing day 0-3 in different rows from top to bottom
if (imagesy($image) <= 500) {
$offset = 225+(85*$i); // smaller spacing for low resolution displays (vertical=480px)
} else {
$offset = 255+83*$i; // normal spacing for high resolution diplays (vertical=600px)
}
if ($offset > (imagesy($image)-80))
break; // offset out of range, skip output of further weather forecast days
// format data
$day = $xml->forecast->simpleforecast->forecastdays->forecastday[$i]->date->weekday_short;
if ($i == 0)
$day = 'Heute';
if ($i == 1)
$day = 'Morgen';
$low = $xml->forecast->simpleforecast->forecastdays->forecastday[$i]->low->celsius;
$high = $xml->forecast->simpleforecast->forecastdays->forecastday[$i]->high->celsius;
$condition = $xml->forecast->simpleforecast->forecastdays->forecastday[$i]->conditions;
$icon = $this->getLocalWeatherImage($xml->forecast->simpleforecast->forecastdays->forecastday[$i]->icon, false);
// output
$wicon = ImageCreateFromPNG ( $icon );
ImageCopyResampled($image, $wicon, imagesx($image)-95, $offset+5, 0, 0, imagesx($wicon)/2, imagesy($wicon)/2, imagesx($wicon), imagesy($wicon));
ImageDestroy($wicon);
$opt = array(
'width' => 150,
'align' => ALIGN_RIGHT
);
$text = $day."\n".$high."° | ".$low."°\n".$condition; // ."ICON:".$xml->weather->forecast_conditions[$i]->icon['data'];
imagettftextboxopt($image, 15, 0, imagesx($image)-240, $offset, $style['textcolor'], $style['font'], $text, $opt);
}
//ENDE XML-Datei auslesen
}
private function getLocalWeatherImage($googleWeatherImage, $night) {
$localImagePath = 'resources/weather/'.$googleWeatherImage.".png";
$localImagePathNight = 'resources/weather/'.$googleWeatherImage."_night.png";
//if parameter $night is true and night image exist use it
if ($night && file_exists($localImagePathNight))
$localImagePath = $localImagePathNight;
else if (!file_exists($localImagePath))
// if daylight image doesn't exist display N/A image
$localImagePath = 'resources/weather/na.png';
return $localImagePath;
}
}
; configuration file for info frame
;====================================================================
; Grundlegende Einstellungen zur Installation
;====================================================================
[System]
db_host = "xxx"
db_name = "xxxxx"
db_user = "xxxxx"
db_password = "xxxxxx"
zendfw_path = "/Sonstiges/ZendFramework/library"
image_width = 800
image_height = 600
; updateintervall der Plugins (Mail, Kalender, Wetter...) in Minuten
updatetime = 30
;====================================================================
; Hier werden alle Plugins inklusive deren Einstellungen aufgeführt.
; Die Reihenfolge der Plugins entspricht deren Darstellung im Bild.
;====================================================================
[WeatherPlugin]
; Stadt für die Google-Weather-API
city = "Wuppertal"
[CallsPlugin]
; Grenzwert für Dauer (in Sekunden) bis zu welcher der angenommene Anruf noch als verpasster Anruf zählt.
; Diese Funktion ist gedacht für Anrufer, die (wenn der Anrufbeantworter abnimmt) sich die Ansage anhören und dann auflegen ohne aufzusprechen.
; Solche Anrufe würden dann nicht in der "Verpasste Anrufe"-Liste erscheinen, da ja eine Verbindung zustande kam.
; Die Länge des Ansagetextes sollte hier als Grenzwert eingetragen werden.
missedcall_duration_treshold = 10
; Maximale Anzahl der angezeigten verpassten Anrufe
max_displayed_missed_calls = 5
;[MailPlugin]
; Maximale Anzahl der angezeigten Mails über alle Konten
; max_displayed_mails = 5
; hier sind mehrere Imap-Konten möglich, einfach den folgenden Block duplizieren und fortlaufende Account-Nummer anpassen
; Imap-Konto 1
; server_1 = "imap.1und1.de"
; server_port_1 = 993
; nähere informationen siehe PHP-Befehl imap_open unter http://de.php.net/imap_open
; server_options_1 = "/imap/ssl/novalidate-cert"
; user_1 = "[email protected]"
; password_1 = "4711"
; color_1 = #A32929
; Regulärer Ausdruck zum Filtern der Mails. Die Mails auf welche der Reguläre Ausdruck passt werden NICHT angezeigt!
;from_filter_regex_1 = "/(spamverdacht)/i"
;subject_filter_regex_1 = "/(viagra|casino|pharmacy)/i"
; Imap-Konto 2
;server_2 = "imap.1und1.de"
;server_port_2 = 993
; nähere informationen siehe PHP-Befehl imap_open unter http://de.php.net/imap_open
;server_options_2 = "/imap/ssl/novalidate-cert"
;user_2 = "[email protected]"
;password_2 = "4711"
;color_2 = #2952A3
;from_filter_regex_2 = "/(spamverdacht)/i"
;subject_filter_regex_2 = "/(viagra|casino|pharmacy)/i"
;[CalendarPlugin]
; Hinweis: Alle auf der Google-Seite selektierten Kalender werden auch hier angezeigt.
; Sollen bestimmte Kalender ausgeblendet werden, müssen diese im Google-Kalender deselektiert (nicht entfernt!) werden.
; user = "[email protected]"
; password = "4711"
; Anzahl der angezeigten Tage (3 = heute, morgen und übermorgen)
; number_of_days = 3
;[FeedPlugin]
; Zeigt RSS oder Atom-Feeds an. Einfach die URL zum Feed als "feed_url_x" eintragen (wobei x für eine
; aufsteigende Nummber beginnend ab 1 steht). Auf diese Art können mehrere Feeds angegeben werden.
;
; Regulärer Ausdruck zum Filtern des Title-Attributs:
; Nur die Feed-Einträge werden angezeigt, dessen Title-Attribut auf den regulären Ausdruck passen.
; Zur Erklärung der Syntax von Regulären Ausdrücken empfehle ich die Seite http://regexp-evaluator.de
; dort können diese auch gleich online ausprobiert werden.
; hier einige Feed-URLs
; "http://www.heise.de/newsticker/heise-atom.xml"
; "http://twitter.com/statuses/user_timeline/62478104.rss"
; "http://twitter.com/statuses/user_timeline/66680076.rss"
; "http://feeds.feedburner.com/ShowgpsStauinformationen?format=xml"
; "http://www.spiegel.de/schlagzeilen/index.rss"
; "http://feeds.feedburner.com/myDealZ?format=xml"
; FFH-Blitzer
;feed_url_1 = "http://twitter.com/statuses/user_timeline/62478104.rss"
;title_regex_1 = "/FFHBlitzer: #blitzer ((?:.*\W|)(?:Langen|Egelsbach|Dreieich|Neu-Isenburg)(?:$|\W.*))/i"
;max_age_in_minutes_1 = 360
; FFH-Staumeldungen
;feed_url_2 = "http://twitter.com/statuses/user_timeline/66680076.rss"
;title_regex_2 = "/FFHVerkehr: #verkehr .*((?:A5|A661).*:.*(?:Langen|Dreieich|Egelsbach|Neu-Isenburg).*)/i"
;max_age_in_minutes_2 = 60
; MyDealz.de
;feed_url_3 = "http://feeds.feedburner.com/myDealZ?format=xml"
;max_displayed_items_3 = 3
[WeatherPlugin]
; Stadt für die Google-Weather-API
city = "Wuppertal"
[WeatherPlugin]
; Stadt für die Google-Weather-API
city = "Wuppertal"
api_key = [COLOR="#FF0000"]hier dein Key von oben rechts[/COLOR]
update_weather = 30
weiß jmd, warum umlaute im callplugin falsch angezeigt werden?
Späth wird Sp?th oder so ähnlich
$text = "Aktuell: $current_condition";
imagettftextboxopt($image, 15, 0, imagesx($image)-300, 145, $style['textcolor'], $style['font'], $text, $opt);
$text = "$current_temp °C";
imagettftextboxopt($image, 15, 0, imagesx($image)-300, [COLOR="#FF0000"]125[/COLOR], $style['textcolor'], $style['font'], $text, $opt);