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

Ich könnte mir vorstellen, daß die filectime nicht richtig ausgelesen wird.
Erstelle mal ne php-datei im infoframordner (alse dort wo die config(index.php liegt) nenne sie zb check.php, kopiere den code mal rein:
PHP:
<?php
error_reporting(E_ALL);
$filename = 'cache/weather.xml';
echo'aktuelle Zeit: '.time(). ' - filectime: '.filectime($filename).'<br />';
$diff = (time() - filectime($filename));
echo'differenz: '.$diff.'<br />';
?>
Und dann im browser aufrufen:
also der selbe pfad wie zu deiner index php, nur statt "/index.php" dann halt "/check.php"

Die ausgabe sieht bei mir ca so aus:
Code:
aktuelle Zeit: 1370078339 - filectime: 1370078303
differenz: 36

Bei dir könnte zB filectime: 00000000 stehen, dann würde auch immer geupdatet werden
 
Hallo

Ne da steht

Code:
aktuelle Zeit: 1370080759 - filectime: 1370024160
differenz: 56599

scheint also ok zu sein.

Haste bitte bitte noch einen Tip ich bin echt am Ende mit meinem Latein.
Das eigenartige ist ja ,das sich nur die weather.xml ändert ,die feed.xml nicht.

Knusterus
 
mach mal die weather.xml auf und änder da was. also mach nen leerzeichen rein und wieder raus. dann neu speicher und nochmal das script ausführen. dann sollte die diefferenz auf jedenfall unter 1800 sein.
 
jo würde ich gern ,sagst du mir bitte wo ich das leerzeichen setzten soll??
 
egal am anfang setzten und gleich wieder löschen. geht nur darum, daß die weather.xml neu gespeichert wird. um eine neue ctime der datei zu erzeugen.
 
jetzt sieht es so aus

Code:
aktuelle Zeit: 1370082643 - filectime: 1370082417
differenz: 226
 
gabe schon länger nicht mehr reingeschaut hier, deswegen stelle ich mal die frage:
und in der config.ini hast du diesen einträge unter [WeatherPlugin]
Code:
[WeatherPlugin]
; Stadt für die Google-Weather-API
city = "xxxxxxx"
[COLOR="#FF0000"]update_weather = 30[/COLOR]
api_key = "xxxxxxxxx"
so sieht mein eintrag aus, natürlich mit realen werten bei city und key
 
Jo bei mir sieht es so aus

Code:
[WeatherPlugin]
city = "xxxxxxxxxxxx"
api_key = "xxxxxxxxxxxxx"
update_weather = 30

Ich kann auch die Updatezeit ändern aber es passiert nichts.
 
Kommentiere doch mal <ttl>1</ttl> in der rss.xml aus. Mal gucken ob´s dann geht.
 
Geht leider auch nicht.
Trotzdem danke!!

So ich habe noch ein bißchen getetstet.
Ich habe xampp auf meinem Hauptrechner mit Win 7 installiert, mit genau den gleichen Daten wie auf meinem Laptop mit XP.Ich benutze auch die identischen Infoframedatein.
Jetzt starte ich auf beiden Rechnern Apache und MySQL dann starte ich auf beiden meine Browser(Mozilla) und gebe
Code:
http://localhost/infoframe/index.php
ein
auf beiden Rechnern das gleiche Bild.
So nun lasse ich beide Rechner 1 Std stehen.Bild ist immer noch wie am Anfang.Cachdatein beim Wind 7 Rechner mit Zeit vom 1.start.
Cachedatein vom XP Rechner Wetter mind.jede minute und Feed aller 30 min .
Beide config.ini sind identisch Wetter 30 und Gesamtupdate auch 30.

Ich habe jetzt mal das Wetterupdate auf meinem XP Rechner auf 120 gestzt aber die Cachedatei ändert sich jede Minute.(vielleicht sogar häufiger.)
Habe heute morgen schon wieder ein Mail von wunderground bekommen. (502 statt 500)
Was läuft da schief???

Knusterus
 
Zuletzt bearbeitet:
Hab scheinbar das Problem gefunden.

PHP scheint unter Windows XP Probleme mit der filectime zu haben. Habs testweise auf filemtime umgestellt und nun scheint es sauber zu funktionieren. Knusterus wird berichten obs das final war...
 
soderle
Jetzt funktioniert es prima keine Warnmails mehr.ganz herzlichen Dank an MaverrickTM für seine super Hilfe.
hier nochmal meine geänderte weatherPlugin.php
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['api_key'];
            $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() - filemtime($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);
            //     roundbox_trans_neu($image, imagesx($image)-220, 80, imagesx($image)-5, imagesy($image)-395-100, 2, 0, 0, 0, 10,0);
                $wicon = ImageCreateFromPNG ( $current_icon );
                ImageCopy($image, $wicon, imagesx($image)-190, 0, 0, 0, imagesx($wicon), imagesy($wicon));
                ImageDestroy($wicon);
                $opt = array(
                    'width' => 280,
                    'align' => ALIGN_RIGHT
		);
     }
    }  
 

      /************************* Halbtransparentbox **************************
        *   roundbox_trans_neu($image, imagesx($image)-250, 55, imagesx($image)-5, imagesy($image)-15-290, 2, 0, 0, 0, 130,0);
        ***********************************************************************/
        
                $text = $current_temp."°C";
                imagettftextboxopt($image,58, 0, imagesx($image)-460, 75, $style['textcolor'], $style['fontb'], $text, $opt);
                $text = "Aktuell: $current_condition\nLuftfeuchte: $current_humidity\nWind: $current_wind_condition km/h $current_wind_dir \nLuftdruck: $current_pressure mbar";
                imagettftextboxopt($image, 14, 0, imagesx($image)-300, 150, $style['textcolor'], $style['fontb'], $text, $opt);
      
        /*********************** Halbtransparentbox *************************
        * roundbox_trans_neu($image, imagesx($image)-230, 0, imagesx($image)-5, imagesy($image)-15-330, 2, 0, 0, 0, 230,0);
        *********************************************************************/
   
                   // 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 = 235+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+15, 0, 0, imagesx($wicon)/2, imagesy($wicon)/2, imagesx($wicon), imagesy($wicon));
					ImageDestroy($wicon);
					$opt = array(
						'width' => 130,
						'align' => ALIGN_RIGHT
					);
					$text = $day."\n".$high."° | ".$low."°\n".$condition; // ."ICON:".$xml->weather->forecast_conditions[$i]->icon['data'];
					imagettftextboxopt($image, 15, 0, imagesx($image)-245, $offset, $style['textcolor'], $style['font'], $text, $opt);
        }
    //ENDE XML-Datei auslesen
    
	
								
        // display sunrise and sunset
          date_default_timezone_set('Europe/Berlin');
          $longitude = 48.562728; // longitude
          $latitude = 10.424322;   // latitude
          if (date("I") == 1) $dst = 2;       // Sommerzeit
          if (date("I") == 0) $dst = 1;       // Winterzeit
          $sunrise =  date_sunrise(time(), SUNFUNCS_RET_STRING, $longitude, $latitude, 90, $dst);
          $sunset = date_sunset(time(), SUNFUNCS_RET_STRING, $longitude, $latitude, 90, $dst);
          $text = $sunrise."          ".$sunset;
          $opt = array(
            'width' => 370,
            'align' => ALIGN_LEFT
          );
          imagettftextboxopt($image, 10, 00, 670, 576, $style['textcolor'], $style['font'], $text, $opt);  
     
          $icon = ImageCreateFromPNG ( 'resources/icons/sunup.png' );
  				ImageCopy($image, $icon, 650, 572, 0, 0, imagesx($icon), imagesy($icon));
	   			ImageDestroy($icon);
	   			$icon = ImageCreateFromPNG ( 'resources/icons/sundown.png' );
  				ImageCopy($image, $icon, 712, 572, 0, 0, imagesx($icon), imagesy($icon));
	   			ImageDestroy($icon);
        // display sunrise and sunset ende      
    		  
          
          
  }		 
	
	
	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;
	}
	
}

Alles ist gut, Vielen vielen Dank an MaverrickTM für Deine Hilfe.Echt Klasse!!!:bier:



Knusterus
 
Zuletzt bearbeitet:
So nun habe ich ein neues Problem.
Mein callplugin funktioniert leider nicht mehr und ich habe keine Ahnung warum.
Wenn ich über freetz den Testanruf starte läuft das im Freetz ganz normal durch ,nur über http://fritz.box:5050/ bekome ich nur das normale Infoframe Bild angezeigt.
In dem Moment wo der Anruf angezeigt werden müsste, kommt das Bild Server nicht erreichbar,danach das normale InfoframeBild.
Es werden auch keine verpassten Anrufe angezeigt. Ich habe es schon mit verschiedenen Datein getestet es geht einfach nicht.Freetz habe ich auch schon neu aufgesetzt ich bekomme es nicht hin.
Es hat aber schon funktioniert.
dann habe ich noch die errorlogs ausgelesen da steht folgendes drin
Code:
[Tue Jun 04 14:01:18.026367 2013] [core:warn] [pid 4936:tid 288] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Jun 04 14:01:18.932617 2013] [ssl:warn] [pid 4936:tid 288] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue Jun 04 14:01:19.385742 2013] [mpm_winnt:notice] [pid 4936:tid 288] AH00455: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 configured -- resuming normal operations
[Tue Jun 04 14:01:19.385742 2013] [mpm_winnt:notice] [pid 4936:tid 288] AH00456: Server built: Aug 18 2012 12:41:37
[Tue Jun 04 14:01:19.385742 2013] [core:notice] [pid 4936:tid 288] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Tue Jun 04 14:01:19.401367 2013] [mpm_winnt:notice] [pid 4936:tid 288] AH00418: Parent: Created child process 4152
[Tue Jun 04 14:01:22.354492 2013] [ssl:warn] [pid 4152:tid 300] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue Jun 04 14:01:22.463867 2013] [mpm_winnt:notice] [pid 4152:tid 300] AH00354: Child: Starting 150 worker threads.

Vielleicht könnt ihr damit was anfangen, und mir bitte helfen.

Knusterus
 
Danke für den Tipp, geht aber trotzdem nicht, nur der Cachefeler ist weg. Die errorlogs sehen jetzt so aus

Code:
[Tue Jun 04 17:20:32.369304 2013] [core:warn] [pid 3952:tid 184] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Jun 04 17:21:10.103563 2013] [mpm_winnt:notice] [pid 3952:tid 184] AH00455: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 configured -- resuming normal operations
[Tue Jun 04 17:21:10.133606 2013] [mpm_winnt:notice] [pid 3952:tid 184] AH00456: Server built: Aug 18 2012 12:41:37
[Tue Jun 04 17:21:10.133606 2013] [core:notice] [pid 3952:tid 184] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Tue Jun 04 17:21:10.544196 2013] [mpm_winnt:notice] [pid 3952:tid 184] AH00418: Parent: Created child process 2160
[Tue Jun 04 17:21:22.411260 2013] [mpm_winnt:notice] [pid 2160:tid 1888] AH00354: Child: Starting 150 worker threads.

Knusterus
 
So Fehler gefunden.

Ich habe in Xampp die phpmyAdmin und die mySQL mit einem Passwort gesichert und seit dem funktioniert es.:D:D
Ob das wirklich der Fehler war keine Ahnung,entscheidend ist das Ergebnis und es funktioniert.

Auch das Wetter geht jetzt ohne Warnmalis,nochmal herzlichen Dank an MaverrickTM für seine Hilfe.

So dann hoffe ich jetzt mal ,das alles läuft.

Ich danke nochmal Allen die mir hier geholfen haben,allein hätte ich das nie geschafft.!!!

Knusterus
 
Tach zusammen

so es funktioniert noch alles prima und ich bin glücklich!!!!:D:D:D

Heute habe ich ein kleines Problem in der Paketverfolgung festgestellt.
Das Plugin verschwindet sofort ,wenn das Paket zugestellt wurde.Kann man das so einstellen ,das es erst am Ende des Tages verschwindet ,wenn das Paket zugestellt wurde.
Hintergrund,wenn ich nicht zu Hause bin und abends nachschauen möchte ist nichts zu sehen,so weis ich nicht ob der Postbote es beim Nachbarn abgegeben hat oder ob er es wieder mitgenommen hat..
Kann man die Anzeige so verändern.
Wenn ich bei DHL nachschaue sehe ich die Sendung ja auch noch??

Knusterus
 
Im Moment wird eine Stunde nachdem das Paket zugestellt worden ist die Paketnummer aus der Datenbank gelöscht.
Um diesen Wert zu verändern musst du am Ende des PaketPlugins beid der "privat function addPaket" die Zahl 3600 (das sind sekunden) nach deinem belieben verändern (3600 sec = 1Sunde):
PHP:
	private function addPaket($stat_txt, $datum, $bild, $id, $posi, $shedule) {	 				
 		$bild = implode('|',$bild);
		if ( (strpos($stat_txt, 'zugestellt') !== FALSE) and (time() - strtotime($datum) >= 3600) ) {
					$query = "DELETE FROM `if_paket` WHERE id='$id'";
			}else{ 		
 				$query = "UPDATE `if_paket` SET datum='".mysql_real_escape_string($datum)."', status='".mysql_real_escape_string($stat_txt)."', bild='".mysql_real_escape_string($bild)."', position='$posi', liefertermin='".mysql_real_escape_string($shedule)."' WHERE id='$id'";
			}
	   	mysql_query($query, $this->dbconn) or die ('PaketPlugin'.mysql_error());
 }

}
 
Hallo Spoon3er

Supi vielen Dank für den Tipp. jetzt funktioniert es.Vielen Dank.

Knusterus
 
Zuletzt bearbeitet:
ich muß jetzt auch nochmal um hilfe bitten für das calendarPlugin

ich bekomme es immer noch nicht zum laufen. sobald ich das plugin aktiviere, also nur das erste semikolon lösche habe ich kein bild mehr. und eine log datei finde ich nirgends die mir irgendwie helfen könnte. knusterus hat es ja auch hinbekommen.

btw.
ich habe seit wochen keine mailbenachrichtigung bekommen das es hier weitergeht. dann kam wieder mal eine,
woran kann das liegen?
 
Kostenlos!

Statistik des Forums

Themen
248,886
Beiträge
2,304,049
Mitglieder
378,567
Neuestes Mitglied
toenizz