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

nein, immer noch das error.jpg (server nicht erreichbar)

muß ich vielleicht noch ne freigabe an der fritte einrichten?
habe da nur port 80 tcp auf die qnap 192.168.0.5
 
Zuletzt bearbeitet:
Also den QNAP kannst Du ganz normal als HTTP freigeben. Da gibt es ja in der FritzBox eine Auswahlmöglichkeit. Wir sollten evtl. mal das ganze hier per Chat fürhen. Dann kommen wir evtl schneller ans Ziel. Muss jetzt weg, bin erst heute Abend wieder da. Hast Du Teamviewer?
 
könnte mir mal jmd mit wunderground helfen bitte?

ich habe mich dort angemeldet, jedoch nirgends eine api gefunden. dann habe ich nach "wunderground api " gegoogelt und auf der seite stand dann da rechts oben eine api. diese habe ich auch im wetter-plugin eingetragen. aber trotzdem wird kein wetter angezeigt
 
was meinst du damit?

ich verwende eine bereits geänderte von einem user
PHP:
<?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;
	}
	
}
 
Zuletzt bearbeitet:
Hoobert hat ja geschrieben das einige Teile des Plugins umgeschrieben werden müssen und um seinen Code ergänzt werden muss. So wie hier beschrieben. Den nötigen Code findest Du im Anhang von dem Post und muss in dein bestehendes Plugin integriert werden. Dann erst funktioniert das Ganze. Auch hier wird nochmals drauf eingegangen wo der richitge API Schlüssel zu finden ist. Siehe auch darauf folgende Beiträge. Wenn Du das Plugin brauchst, kann ich es Dir auch schicken. Funktioniert mittlerweile dein Samsung Frame?
 
Da steht ja bereits ein Key drin. Der gehört ja gar nicht da rein. Deswegen wird es nicht funktionieren. Gib mir mal per PN deine Email Adresse. Ich schick Dir meine Version.
 
teilweise funktioniert er, jedoch verliert er relativ oft die wlanverbindung. dann geht natürlich nix mehr.

das plugin von hoobert habe ich eigentlich soweit umgeschrieben, dann habe ich das bereits geänderte von jemand genommen.
aber auch damit geht kein wetter. schick doch mal bitte deins
 
Also liegt es an der WLAN Verbindung? Steht der zu weit weg oder ist die Hardware defekt? Berichte bitte on es mit meinem Plugin funktioniert. HAste auch den "richtigen" API Schlüssel?
 
machen wir hier weiter, hier hilft es auch anderen wie mir.

mein key hat 16zeichen und ist der von oben auf der seite, wo auch dahinter der projectname steht.
ich habe mit und auch ohne projectname probiert. mein key ist in dem weather.php
PHP:
; 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
 
Nimm bitte mal mein Plugin und ersetze in deiner config

Code:
[WeatherPlugin] 
; Stadt für die Google-Weather-API 
city = "Wuppertal"

mit

Code:
[WeatherPlugin]
; Stadt für die Google-Weather-API
city = "Wuppertal"
api_key = [COLOR="#FF0000"]hier dein Key von oben rechts[/COLOR]
update_weather = 30

So muss es funktionieren
 
prima, wetter und callplugin funzen jetzt

weiß jmd, warum umlaute im callplugin falsch angezeigt werden?
Späth wird Sp?th oder so ähnlich

und praktisch wäre noch, das am rahmen angezeigt wird wenn der AB in der Fritzbox an ist

edit:
bei mir wird keine aktuelle temperatur angezeigt unter dem ersten wettersymbol so wie im 1. post.
was muß ich da noch ändern?
 
Zuletzt bearbeitet:
weiß jmd, warum umlaute im callplugin falsch angezeigt werden?
Späth wird Sp?th oder so ähnlich

Das ist hier Quick & Dirty: Du musst in die Datenbank gehen und in dem Reiter "if_calls" nach "name" & "address" suchen. Dort den Typ "varbinary(100)" einstellen. Das sollte dann funktionieren.

Kannst Du bitte mal ein Screenshot machen was meinst Du mit der Temperatur?
 
Zuletzt bearbeitet von einem Moderator:
na da fehlt doch die aktuelle temperatur, so wie auf dem screenshot im 1. postframe.jpeg
 
Glaube ich weiß was Du meinst / willst. Such mal im Weather Plugin nach dieser Stelle:

Code:
$text = "Aktuell: $current_condition"; 
				imagettftextboxopt($image, 15, 0, imagesx($image)-300, 145, $style['textcolor'], $style['font'], $text, $opt);

und füge vorher noch das hier ein:

Code:
$text = "$current_temp °C"; 
				imagettftextboxopt($image, 15, 0, imagesx($image)-300, [COLOR="#FF0000"]125[/COLOR], $style['textcolor'], $style['font'], $text, $opt);

Damit wird die Temperatur angezeigt. Mit dem roten Wert musst Du etwas spielen bis es an der richtigen Stelle ist (Wird der Wert weniger, wandert die Position nach oben). Viel Glück!
 
thx, temp ist jetzt da.

aber wo stelle ich das mit der DB um?snip.PNG
 
In deinem Fall musst Du wie hier im Screenshot auf die Stifte gehen und dann "latin1_general_cs" entfernen. DB.jpg
 
hmm, habs jetzt so drin. aber wo speichere ich es?
angezeigt wird es immer noch mit komischen zeichen
 
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.