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

So jetzt ist alles gut :D:D:D

Vielen Dank nochmal an MaverrickTM für Deine Hilfe.:groesste:

Jetzt habe ich nochmal 2 Fragen

Ist es möglich auf dem Rahmen verpasste Anrufe mit Namen anzuzeigen ohne die Box zu freetzen??
Ich benutze auf dem PC JFritz,da gibt es ja ne Rückwärtssuche.
Reichen würde auch nur die Nummer.
Es geht darum wenn tagsüber keiner zu Hause ist,auf einen Blick zu sehen wer angerufen hat,aber ohne die Box zu freetzen.

Dann möchte ich gern den TV MovieFeed noch etwas anpassen.Ich habe gerade eine Modifikation gefunden.Ich möchte gern das Feed momentan im TV immer anzeigen und 20.15 im TV von 20:00-20:30
dafür habe ich meine Feed.php so angepasst
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/
 ***************************************************************************/

define('MAGPIE_DIR', 'library/magpierss/');
define('MAGPIE_CACHE_DIR', 'cache');
require_once('library/magpierss/rss_parse.inc');

class FeedPlugin implements IPlugin
{
    private $dbconn = NULL;
	private $config = NULL;
	
	public function __construct($dbconn, $config) {
		$this->dbconn = $dbconn;
		$this->config = $config;		
	}
	
	// update all feeds
	public function doUpdate() {
		// iterate all feeds
		$feednumber = 0;
		while ($this->config['feed_url_'.++$feednumber])
		{
			$this->updateFeed($feednumber);
		}
	}
	
	// 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) {
			$curl = curl_init();
			$file = fopen("cache/feed_".$feednumber.".xml", "w");
			if ($file)
			{
				curl_setopt($curl, CURLOPT_URL, utf8_encode($feed_url));
				curl_setopt($curl, CURLOPT_FILE, $file);
				curl_exec($curl);
				curl_close($curl);
				fclose($file);
			}			
		}
	}
	

	public function doOutput($image, $style, $updateData, &$yoffset) {
			
		// define styles
		$opt_header = array(
			'width' => imagesx($image)-290,
			'line_height' => 18,
			'align' => ALIGN_LEFT
		);
		
		$opt_entry = array(
			'width' => imagesx($image)-290,
			'height' => 12,
			'line_height' => 12,
			'align' => ALIGN_LEFT,
			'word_wrap_hyphen' => '...',
			'aggressive_word_wrap' => true,
		);
		
		$feednumber = 0;
		while ($this->config['feed_url_'.++$feednumber]) {
			$filename = 'cache/feed_' . $feednumber . '.xml';
			// check for update
			if ($updateData || !file_exists($filename))
				$this->updateFeed($feednumber);
			
			// read feed
			if(file_exists($filename) && (filesize($filename) > 0)) {

				$rss_string = file_get_contents($filename);
				$rss = new MagpieRSS( $rss_string, 'UTF-8' );

				if ( $rss and !$rss->ERROR) {
					// filter entries
					$itemcount = count($rss->items); // preserve item count, because it will been changed in for-loop
					for($i=0; $i<$itemcount; $i++) {
						// filter by entry age
						if ($this->config['max_age_in_minutes_'.$feednumber]) {
							$published = $rss->items[$i]['date_timestamp'];
							$timelimit = time()-($this->config['max_age_in_minutes_'.$feednumber]*60);
							if ($published < $timelimit) {
								unset($rss->items[$i]); // drop entry
								continue;
							}
						}

						// filter title
						if ($this->config['title_regex_'.$feednumber]) {
							$title = ( $rss->items[$i]['title'] );
							$regex = ( $this->config['title_regex_'.$feednumber] );
							// match
							if (preg_match($regex, $title, $matches)) {
								// if subpatterns have been matched only return the concatenated submatches
								if (count($matches) > 1) {
									$new_title = "";
									for ($submatch=1; $submatch < count($matches); $submatch++)
										$new_title = $new_title . $matches[$submatch];
									if ($new_title)
										$rss->items[$i]['title'] = $new_title;
								}
								

							} else {
								unset($rss->items[$i]); // drop entry
								continue;
							}
						}
					}
					$start=strtotime($this->config['start_time_'.$feednumber]); $stop=strtotime($this->config['stop_time_'.$feednumber]); if ((count($rss->items) > 0) && ( $start < time()) && $stop > time())
					{
						// print header
						$text = $rss->channel['title'];
						imagettftextboxopt($image, 18, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_header);
						$icon = ImageCreateFromPNG ( 'resources/icons/tv.png' );
						ImageCopy($image, $icon, 20, $yoffset+2, 0, 0, imagesx($icon), imagesy($icon));
						ImageDestroy($icon);
						$yoffset += 26;
						
						// print entries
						$counter = 0;
						foreach ($rss->items as $item ) {
							// if max count of displayed entries is reached OR end of screen is reached and more than one items left
							//  -> cut off and show hint "x more items..."
							$counter++;
							$rest = (count($rss->items) - $counter) + 1;
							$entrylimit = $this->config['max_displayed_items_'.$feednumber];
							if ( (($entrylimit) && ($counter > $entrylimit)) || (($yoffset >= (imagesy($image) - 36)) && ($rest > 1)) ) {
								$text = "... $rest weitere Elemente";
								imagettftextboxopt($image, 14, 0, 24, $yoffset, $style['textcolor'], $style['fontb'], $text, $opt_entry);
								$icon = ImageCreateFromPNG ( 'resources/icons/rss.png' );
						        ImageCopy($image, $icon, 20, $yoffset-2, 0, 0, imagesx($icon), imagesy($icon));
						        ImageDestroy($icon);
								$yoffset += 20;
								break;
							}

							// print entry text
							$text = $item['title'];
							$text = str_replace("\n", "", $text);
							// dirty trick for replacing inch-symbol \xE2\x80\xB3 by nomal " (because not supported by imagettftext)
							$text = str_replace("\xE2\x80\xB3", "\"", $text);
							$yoffset += imagettftextboxopt($image, 12, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
							$yoffset += 4;
						}
						$yoffset += 8;
					
					}

				}

			} // file exist

		
		}
		// add some space after all feeds has been displayed
		$yoffset += 18;

	}
	
}

Jetzt muss ich ja noch den Code
Code:
start_time_1 = "18:00" stop_time_1 = "21:00"
in die config.ini zum entsprechenden Feed einfügen.Aber wo hin.??Ich habe schon allles mögliche versucht aber es funtzt nicht.Irgendwo ist da ein Fehler aber wo???

Knusterus





Knusterus
 
Zuletzt bearbeitet:
Jetzt muss ich ja noch den Code
Code:
start_time_1 = "18:00" stop_time_1 = "21:00"
in die config.ini zum entsprechenden Feed einfügen.

Ich hätte es unter Feed eingefügt. Das hast Du aber Wahrscheinlich schon probiert. Hast Du mir ein Link zum Post aus dem Forum wo die Modifikation beschrieben wird?

Warum möchtest Du deine Fritz!Box nicht Freetzen? Du musstest die Daten (Verpasste Anrufe) in deine Datenbank schreiben. Dann sollte es gehen.
 
Hast Du mir ein Link zum Post aus dem Forum wo die Modifikation beschrieben wird?
.
Ist von hier http://web.archive.org/web/20110806011053/http://infoframe.org/index.php/Modifikationen. Hab ich durch Zufall gefunden.Leider wird da nichts weiter beschrieben.
Den Code habe ich schon davor und unter das Feed eingefügt aber es kommt immer die Meldung
Code:
Error, insert query failed: No database selected
.

Tja und mit der Fritzbox ,ist mir echt das Risiko ein bißchen gross das ich sie zerschieße.Da meine Kenntnisse nicht so gross sind ,würde ich das Risiko gern vermeiden.
Da ich ja die Realanzeige der Anrufe eh nicht nutzen kann würden mir die verpassten Anrufe reichen.
Gibt ers da schon was fertiges???

Knusterus
 
Versuche mal so:

Code:
feed_url_1 = "http://www.heise.de/newsticker/heise-atom.xml"
start_time_1 = "18:00" 
stop_time_1 = "21:00"
max_displayed_items_1 = 3
max_age_in_minutes_1 = 240
 
Hallo Thomas
So funktioniert es .Vielen Dank ,da hätte ich auch selbst drau kommen können.Naja das kommt davon wenn man keine Ahnung hat.

Da wären wir gleich beim Thema keine Ahnung.
Wenn ich jetzt auf meinem Laptop auch JFritz installieren würde ,hätte ich doch dort auch die Anrufliste mit eingehenden,abgehenden und verpassten Anrufen.
Kann man die Liste nicht auf dem Rahmen anzeigen???Natürlich nicht die Ganze sondern z.Bsp.die letzten 2 Tage.Wäre das möglich??
Gibt es dafür vielleicht auch schon ein Script??

Knusterus
 
Gibt es dafür vielleicht auch schon ein Script??

Glaube ein Script wird es da nicht geben. Du müsstest die Anrufe irgendwie in die Datenbank schreiben. Da bin ich aber selber überfragt wie genau das gehen könnte..... Gibt es vom Programm aus keine möglichkeit die Daten in eine Datenbank schreiben zu lassen? Evtl. könnte der Programmierer Dir einen Lösungsvorschlag geben.
 
Naja war ja auch nur so ne Idee.Da ja dort die Anrufe schon fertig aufbereitet nach angenommen,abgegangen und verpasst gekennzeichnet sind,dachte ich das geht einfacher.Durch die eingebaute Rückwärtssuche liegen die Daten ja auch schon mit Namen dort.Allerdings scheint das Programm auf Java zu basieren weil alle Daten die ich da finde heisen.jar.
Ich bin ja auch so sehr zufrieden,wie alles funktioniert.

Knusterus
 
Ich habe da noch mal ne Frage zum Wetterplugin.
Wie habt ihr eure Updatezeiten stehen.Ich bekomme immer Warnmeldungen von Wunderground ich hätte mein Limit von 500 Abfragen am Tag überschritten .Mal 512 mal 514.Dannach gibt es kein Wetter mehr!!
Meine Gesamtupdate in der Config .ini steht auf 30 und beim Wetter auf 60.Oder muss ich die Zeit beim Gesamtupdate auch hoch stellen???

Knusterus
 
Mein Wetter Plugin steht auch auf 30 Min. Das sollte eigntlich passen... Kann es sein, das es durch "probieren" so oft gewesen ist?
 
Kann es sein, das es durch "probieren" so oft gewesen ist?

Ich denke das wird der Grund sein,bin ja immer noch am basteln!!!Wage mich vielleicht doch noch ans CallPlugin.
War ja auch nur zur Info.Trotzdem Danke.


Knusterus
 
Zuletzt bearbeitet:
hallo
Ich brauche bitte nochmal Eure Hilfe

Ich habe da mal wieder ein kleines Problem mit meinem Wetterplugin.Ich bekomme immer Warnmeldungen von wunderground ich hätte mein Limit überschritten.
514 mal 512.
Meine Updatezeit beim Wetter steht schon auf 45.
Ich habe mich gestern nochmal mit ner neuen Mailadresse angemeldet und einen neuen Schlüssel bekommen.Den habe ich gestern Abend eingetragen.
Der Rahmen lief dann durch bis eben.
Jetzt hatte ich schon wieder 2 Warnmeldungen.
Kann ich bei Xammp irgendwo die Abfragen verfolgen??
Vielleicht läuft da noch was anderes mit???
Den Rechner habe ich gestern nach bem neuen Schlüssel nochmal neu gestartet.
Was ist da los???:confused::confused:

Knusterus
 
Das kannst Du durch sniffen mit herausfinden. Du kannst auch mal schauen ob im Cache Ordner eine weather.xml oder so liegt. Wenn das nicht der Fall ist, wird bei jedem refresh eine aktualisierung von wonderground geholt.
 
He

Jo die Datei habe ich ,zuletzt bearbeitet heute um 15.08Uhr.

Was ist denn sniffen???

Knusterus
 
Zuletzt bearbeitet:
Sniffen = Die Netzwerkkommunikation auf Paketebene zu beobachten. Mit Wireshark als Beispiel.


[EDIT]
Btw.: Entferne mal bitte das unsinnige Vollzitat. Wir wissen ja alles was drüber stand :)
[/EDIT]
 
Zuletzt bearbeitet:
Das heisst ich müsste Wireshark auf meinem Laptop installieren.
Von meiem grossen Rechner habe ich sicher keine Chance oder???

Knusterus
 
Genau. Am einfachsten wäre es auf Deinem Laptop. Geht auch an der Fritzbox, allerdings tauchen hier auch alle anderen Rechner auf...
 
Ok werde es in den nächsten Tagen mal testen,dann melde ich mich wieder,danke erstmal.

Knusterus
 
So habe jetzt mich nochmal mit dem Wetterproblem beschäftigt.
Also die weather.xml wird laut Explorer jede Minute geändert .Schaue ich aber in die XML-Datei stimmt die Aktualisierung aller 30 min.Da steht ja
Code:
<observation_time>Last Updated on Mai 29, 12:20 CEST</observation_time>
und diese Zeit ändert sich aller 30 min.
Wenn ich mir die Änderungen im Explorer ansehe fällt mir auf ,das sich die Grösse der xml auch mal auf 0 ändert.ca aller 5 min.,aber nur kurz.
Da ist doch irgenwo der Wurm drin aber wo???
Habt Ihr noch ne Idee??

Knusterus
 
Habt Ihr noch ne Idee??

Das habe ich Dir ja gestern Abend doch geschreiben. Die Zeit im Exploerer darf sich nur alle 30Min ändern. Es ändert sich aber alle Min. Und das führt zu deinem Error.

Irgendwo ist dein Code schlecht. Oder Du erstellst zu viele Abfragen in irgendeiner Datei. Deaktivier doch mal das Plugin und schau ob diese immernoch Minütlich geändert wird.
 
Hallo Thomas
Also WetterPlugin deaktiviert jetzt ändert sich die xml nicht mehr.
Dann kommmt der Fehler vom Wetterplugin???

So ich habe noch mal ein bißchen getestet.Also ich habe noch 2 andere Weatherplugin getestet aber ohne Erfolg und ich habe noch ne andere index.php getestet auch ohne Erfolg.
Die weather.xml ändert sich jede Minute.
Jetzt weis ich echt nicht weiter.:confused::confused:

Ich hänge mal meine WeatherPlugin mit an

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() - 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);
            //     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)-470, 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, 660, 569, $style['textcolor'], $style['font'], $text, $opt);  
     
          $icon = ImageCreateFromPNG ( 'resources/icons/sunup.png' );
  				ImageCopy($image, $icon, 640, 568, 0, 0, imagesx($icon), imagesy($icon));
	   			ImageDestroy($icon);
	   			$icon = ImageCreateFromPNG ( 'resources/icons/sundown.png' );
  				ImageCopy($image, $icon, 702, 568, 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;
	}
	
}


Knusterus

So ich habe noch etwas getestet, aber ich habe den Fehler nicht gefunden.Ich habe xampp auf meinem Hauptrechner installiert und die gleichen Infoframedatein reinkopiert.Dort ändert sich die weather.xml nicht.
Jetzt habe ich bei meinem Laptop das komplettte Betriebssystem und Xampp neu installiert.Infoframedatein rein und es ändert sich die xml auch.
jetzt Bin und antivirussystem installiert und es ändert sich wieder die xml.Jetzt habe ich beides wieder deinstalliert und sie ändert sich immer noch.
Ich bin echt ratlos,was ist da los??Ich habe bind im Verdacht.
So habe jetzt nochmal neu installiert.Nur XP und Xampp.Auch da ändert sich die Zeit minütlich.Was ist da los???
Habe das ganze noch mal mit den gleichen Datein auf meinem Hauptrechner mit Win 7 getestet auch mit Xampp,da ändert sich die xml nicht.
Dann muss es doch an XP liegen??
Oder muss ich da nch einen Dienst von XP abschalten??
Ich weiss echt nicht weiter!!
Ich habe auch schon überlegt Win98 auf dem Laptop zu installieren und eine andere Version von Xampp zu nehmen,allerdings geht die Xampp version 1.7.7 nicht für dieses Projekt,weil die ssl Verschlüsselung fehlt.
Was kann ich jetz tun???

Knusterus
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,890
Beiträge
2,304,210
Mitglieder
378,577
Neuestes Mitglied
speedoflight