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

Kann ich nicht genau sagen - eventuell heute Abend.
 
Ist schon ok eilt ja nicht.
 
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
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,159
Beiträge
2,247,074
Mitglieder
373,678
Neuestes Mitglied
brainkennedy
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.