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

@ralalla:

versuche ihn doch übers Forum anzuschreiben. Evtl. soll er zumindest die Daten vom Wiki rausrücken, dann können wir die Daten anderweitig hosten, bzw. im Wiki des Forums verewigen. Das ist zumindest erreichbar ;)
 
Ja übers Forum habe ich das schon gemacht. Bisher aber noch keine Antwort bekommen. Sobald es aus der Richtung was neues gibt melde ich mich.
(QNAP ist gestern angekommen, heute mal einrichten :D )
 
Ich stehe hier gerade mächtig auf dem Schlauch. Ich habe mir gerade die aktuelle Freetz Trunk Version auf meine Fritz Box installiert. Läuft auch alles soweit bis auf den Server auf der Fritzbox. Wget streikt irgendwie. In der refresh.sh und download.sh steht
Code:
wget "http://User:[email protected]/index.php?$1" -O /dev/null

Das hat vorher funktioniert. Wenn ich mich mit Telnet einlogge und den Befehl eingebe kommt immer Fehler 401 Authorization required. Es hat doch aber vorher gefunzt.

Edit: hat sich erledigt
 
Zuletzt bearbeitet:
InfoFrame-Infos zu Kodak (Was ich bei mir noch gefunden habe)

Hallo Zusammen,

anbei drei Word-Dokumente zum Thema.

Grüße

Jörg
 

Anhänge

  • Infoframe.zip
    319.9 KB · Aufrufe: 92
Prima am Wochenende werde ich mein QNAP einrichten und dann ist der Rahmen dran. Du hast mir wahrscheinlich schon mal sehr geholfen. Danke
 
So hab mal einige gemacht für das WebIF Admin schaut vorbei auf meiner Seite
 
@ralalla:

versuche ihn doch übers Forum anzuschreiben. Evtl. soll er zumindest die Daten vom Wiki rausrücken, dann können wir die Daten anderweitig hosten, bzw. im Wiki des Forums verewigen. Das ist zumindest erreichbar ;)

also ich bin gerne bereit die daten auf meinem Server zu hosten!!!

Habe auch schon angefangen ein Forum einzurichten, melde mich wenn es soweit fertig ist!!!

Die Sachen aus dem Wiki wären natürlich sehr hilfreich

So hier mal das Forum: http://forum.ifadmin.fanol.de/index.php
Wer noch irgendwelche infos hat bzw. sich bereit erklärt zu helfen schickt mir ne pm

Gruß
Olli
 
Zuletzt bearbeitet:
Prima Sache.
Mehr Infos wie oben in den Word Dokumenten gepostet habe ich auch noch nicht. Bisher auch noch keine Antwort bekommen.
Hoffe ht81 hilft mir ein wenig per email ? Dann kann ich evtl. demnächst weiter Infos zu einem Kodakn W1030 geben.

Die Infos aus den Word Dokumenten könntest du doch schon fürs WIKI übernehmen ?
 
Zuletzt bearbeitet:
Inhaltsverzeichnis

Da der Thread langsam unübersichtlich wird und Infoframe.org auch down ist, erstelle ich mal eine Art "Inhaltsverzeichniss". Falls noch was rein soll, einfach melden.

1. Kalender Ansicht per Tasten Kombination
2. Benzin Plugin
3. QNAP Workaround Teil 1 Teil 2 Teil 3
4. Unbekannter Anrufer Teil 1 Teil 2
5. Hintergrundwechsel
6. Dunkler Bildverlauf
7. Kurs Tafel
8. Sonnenaufgang & Sonnenuntergang
9. Script für DigiTemp auslesen
10. Ovale Icons Bug
11. XAMPP als Testumgebung
 
Zuletzt bearbeitet von einem Moderator:
So hab mich schon mal ran gemacht, das ist echt ne arbeit copy & paste $ formartieren :roll:

naja stück für stück
 
Wer hilft mir noch mal beim Benzin Plugin ?

Momentan sieht es so aus:
192.168.178.100.jpg

Hätte die Benzinpreise aber gerne oben unter der weißen Linie wie hier schon öfter gezeigt.
 
Habe jetzt den Benzinpreis da stehen wo ich ihn gerne hätte. Nur die Uhrzeit wird irgendwie doppelt angezeigt. s. Bild

Kann mal jemand in meine Codes sehen woran das liegt ?
BenzinPlugin.php
Code:
<?php
/***************************************************************************
 * InfoFrame (image generator for digital picture frames)
 * Copyright (C) 2010
 * 
 * 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 BenzinPlugin implements IPlugin
{
    private $dbconn = NULL;
	private $config = NULL;
	
	public function __construct($dbconn, $config) {
		$this->dbconn = $dbconn;
		$this->config = $config;
	}
	
	
	public function doUpdate() {
	
		// Preise und Tankstellen lesen - fsockopen-Version
		$i=0;
		$ortnumber = 0;
		// jeden in config.ini eingetragenen Ort in file einlesen
		while ($ort = $this->config['ort_'.++$ortnumber]) {
			$uri  = '/liste_payed.asp?'.'ort='.$ort.'&typ='.$this->config['sorte'];
			header("Content-type: text/html");
			$sock = fsockopen("www.clever-tanken.de", 80, $errno, $errstr, 5); // 80 = Port, 5 = Timeout
			if (!$sock) {
				return;//$title = "keine Tankstellen in $orte_fehlen gefunden";
			} else {
				fputs($sock, "GET ".$uri." HTTP/1.1\r\n");
				fputs($sock, "Host: www.clever-tanken.de\r\n");
				fputs($sock, "Connection: close\r\n\r\n");
				while(!feof($sock)) {
					$zeile[$i++] = trim(fgets($sock,512));
				}
				fclose($sock);
			}
		}
/*
		// Preise und Tankstellen lesen - fopen-Version
		$i=0;
		$ortnumber = 0;
		// jeden in config.ini eingetragenen Ort in file einlesen
		while ($ort = $this->config['ort_'.++$ortnumber]) {
			$url = 'www.clever-tanken.de/liste_payed.asp?ort='.$ort.'&typ='.$this->config['sorte'];
			$file = fopen ($url,"r");
			if (!$file) {
				return;//$title = "keine Tankstellen in $orte_fehlen gefunden";
			} else {
				while (!feof($file)) {
					$zeile[$i] = fgets($file,512);
					$i++;
				}
				fclose($file);
			}
		}
*/
		// Datenbankeinträge löschen
		mysql_query("START TRANSACTION", $this->dbconn);
		$query = "Delete from if_tanken";
		mysql_query($query, $this->dbconn) or die('Error, delete query failed');

		// file zeilenweise einlesen und gefiltert entsprechend den Einträgen in config.ini.
		$ortnumber = 0;
		for ($j=0;$j<$i;$j++) {
			// Auswertung aller Orte, siehe config.ini
			while ($ort = $this->config['ort_'.++$ortnumber]) {
				if ((stripos($zeile[$j],$ort))>0) { // Ort gefunden
					// Tankstelle extrahieren und Adresse formatieren
					$tankstelle = strip_tags(trim($zeile[$j]),'<br>');	// sinnlose Zeichen und html-Tags außer <br> entfernen
					$tankstelle = str_replace('<br>','|',$tankstelle);	// <br> mit Texttrenner | ersetzen
					$adresse = explode('|',$tankstelle);	// Tankstelle im Array umwandeln, für spätere Ausgabe in Datenbank 
					$merken = 10; // die nach einem gefundenen Ort folgenden 10 Zeilen werden für die Preissuche berücksichtigt
				}
			}
			if ((strpos($zeile[$j],'Euro')>0) or (strpos($zeile[$j],',')>0)) {	// Text Euro gefunden
				if ($merken>=1) { // Text Euro oder Komma in einer der folgenden 10 Zeilen enthalten?
					$preis = strip_tags(trim($zeile[$j]));
					$preis = str_replace('Euro','',$preis); // Euro-zeichen umwandeln
				}
			} else {
				if (strpos($zeile[$j],':')>0) {	// Text : gefunden (als Indikator für Datum)
					if ($merken>=1) { // Text : in einer der folgenden 10 Zeilen enthalten?
						// Datum extrahieren
						$d_arr = date_parse(strip_tags(trim($zeile[$j])));
						// und in Unix-Zeitstempel konvertieren
						$datum = mktime($d_arr['hour'],$d_arr['minute'],$d_arr['second'],$d_arr['month'],$d_arr['day'],$d_arr['year']);
						// nur Preise mit aktuellem Datum berücksichtigen, siehe config.ini
						$alter = $this->config['max_age_in_hours'];
						if ($datum>=strtotime("-$alter hours")) {	// Preis ist aktuell
							// Datensatz für Datenbank anlegen, Adresse ohne PLZ
							$this->addStation($preis, $datum, substr($adresse[2],11).' - '.$adresse[0].' - '.$adresse[1]);
						}
					}
				}
			}
			// Zeilenzähler für Datensuche in file
			if ($merken>0) $merken--;
			else $ortnumber = 0; // 10 Zeilen wurden erreicht, dann Orte neu bestimmen
		}	// Ende for-Schleife

		// in Datenbank schreiben
		mysql_query("COMMIT", $this->dbconn);
	}


	public function doOutput($image, $style, $updateData, &$yoffset) {

		if ($updateData) $this->doUpdate();

		$query = "SELECT * FROM `if_tanken` ORDER BY `datum` DESC, `preis` ASC";
		$result = mysql_query($query, $this->dbconn);
		if (mysql_num_rows($result) == 0) return;

		// 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' => false,
		);

		// print header
		#$text = 'Spritpreis ('.$this->config['sorte'].')';
        $text = ''.$this->config['sorte'].'';
        #imagettftextboxopt($image, 18, 0, 450, $yoffset, $style['textcolor'], $style['font'], $text, $opt_header);
        imagettftextboxopt($image, 15, 0, 470, 117, $style['textcolor'], $style['font'], "D", $opt_header);
        $icon = ImageCreateFromPNG ( 'resources/icons/tank.png' );
        #ImageCopy($image, $icon, 20, $yoffset-3, 0, 0, imagesx($icon), imagesy($icon));
        ImageCopy($image, $icon, 440, 115, 0, 1, imagesx($icon), imagesy($icon));
        ImageDestroy($icon);
        $yoffset += 10;

		while ($row = mysql_fetch_assoc($result)) {
			$counter++;
			$rest = (mysql_num_rows($result) - $counter) + 1;
			$entrylimit = $this->config['max_displayed_stations'];
			if ( (($entrylimit) && ($counter > $entrylimit)) || (($yoffset >= (imagesy($image) - 36)) && ($rest > 1)) ) {
				// show only n mails. If more mails are available show hint "x more stations..."
				$rest = (mysql_num_rows($result) - $counter) + 1;
				if ($rest > 1)
					$text = "... $rest weitere Tankstellen";
				else
					$text = "... $rest weitere Tankstelle";
				imagettftextboxopt($image, 10, 0, 24, $yoffset, $style['textcolor'], $style['fontb'], "D", $text, $opt_header);
				$yoffset += 20;
				break;
			}

			// Preis
			$text = ' EUR/l'; // Euro-Zeichen geht nicht
            $text = $row['preis'].$text;
            // Datum
            $text = $text.'  '.strftime( "%d.%m.-%H:%M", strtotime($row['datum']));
            // Tankstelle
            #$text = $text.'  '.$row['station'];
            #$text = $text.'  ';
            // determine button color
            $colorArray = htmlColorToRgb('#424242');
            $color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);

			// print appointment text and button
			#if (stripos($text,'aral')>0)			$png = 'resources/icons/aral.png';	// Aral-Tankstelle
			#elseif (stripos($text,'agip')>0)		$png = 'resources/icons/agip.png';	// Agip-Tankstelle
			#elseif (stripos($text,'bft')>0)			$png = 'resources/icons/bft.png';	// BFT-Tankstelle
			#elseif (stripos($text,'esso')>0)		$png = 'resources/icons/esso.png';	// Esso-Tankstelle
			#elseif (stripos($text,'heinlein')>0)	$png = 'resources/icons/h.png';		// Heinlein-Tankstelle
			#elseif (stripos($text,'jet')>0)			$png = 'resources/icons/jet.png';	// Jet-Tankstelle
			#elseif (stripos($text,'omv')>0)			$png = 'resources/icons/omv.png';	// OMV-Tankstelle
			#elseif (stripos($text,'shell')>0)		$png = 'resources/icons/shell.png';	// Shell-Tankstelle
			#else 	$png = 'resources/icons/t.png';
			$wicon = ImageCreateFromPNG ( $png );
			#ImageCopy($image, $wicon, 25, $yoffset, 0, 0, imagesx($wicon), imagesy($wicon));
			ImageDestroy($wicon);

			imagettftextboxopt($image, 12, 0, 485, 120, $style['textcolor'], $style['font'], $text, $opt_entry);

			$yoffset += 18;
		}
		$yoffset += 10;
		mysql_free_result($result);
	}


	private function addStation($preis, $datum, $station) {
		$query = "REPLACE INTO `if_tanken` SET 
					`preis`= '".mysql_real_escape_string($preis)."', 
					`datum`= FROM_UNIXTIME($datum), 
					`station`= '".mysql_real_escape_string($station)."'";

		mysql_query($query, $this->dbconn) or die('Error, insert query failed: '.mysql_error());
	}

}

config.ini
Code:
[BenzinPlugin]
; maximales Alter der Preisangaben in Stunden
max_age_in_hours = 72
; maximale Anzahl angezeigter Tankstellen
max_displayed_stations = 3
; Auswahl einer Karftstoffsorte -> 
; Normalbenzin  = wird nicht mehr ausgewertet
; Super         = "SuperE5" 
; Super E10     = "Super"
; SuperPlus     = "SuperPlus"
; Diesel        = "Diesel"
; PremiumDiesel = "VPower"
; Biodiesel     = "Biodiesel"
; LKW-Diesel    = "LKW-Diesel"
; Autogas       = "Autogas"
; Erdgas        = "Erdgas"
; Pflanzenöl    = "Pflanzenoel"
; Bioethanol    = "Bioethanol"
;
sorte = "Diesel"
; welche Tankstellen sollen ausgewertet werden, Angabe Ort oder PLZ
ort_1 = "xxxxx"
;ort_2 = "xxxxx"
;ort_3 = "Hof"

Sieht dann so aus:
192.168.178.100.jpg
 
Bin grad auf der Arbeit, aber versuche mal deinen gesamten Text mehr nach links zu schieben. Wenn es dann besser wird, dann bist Du in der Begrenzung.
 
Ne gleub daran liegt es nicht., wenn ich verschiebe bleibt die Zeit so. Als wenn sie 2mal versetzt übereinander geschrieben würde ?
 
dann ändere mal max_displayed_stations = 3 in max_displayed_stations = 1

p.s. hat noch jemand das Problem das Diesel seit längerem 1,359 je Liter kostet?
 
Werde ich testen wenn ich wieder zu Hause bin und Rückmeldung geben.

Der myDealz rss feed wird angezeigt.
Wenn ich dann noch einen RSS Feed von einer Zeitung einfüge geht nix mehr. Bild weiß, keine Anzeige mehr.

So sieht der Code aus wenn nichts geht:
Code:
; MyDealz.de
feed_url_1 = "http://feeds.feedburner.com/myDealZ?format=xml"
max_displayed_items_1 = 3

; Siegener Zeitung
feed_url_2 = "http://feeds.feedburner.com/SiegenerZeitung-News?format=xml"
max_displayed_items_2 = 3

Setze ich vor die beiden Zeilen der "Siegener Zeitung" ein ; gehts wieder, halt ohne die RSS Feeds der Zeitung.
Was mache ich den da falsch ?
Soory für die vielen Fragen , aber ich denke mit der Zeit werden das wohl immer weniger ;)
 
hab mir grad mal das rss feed angeschaut bekomme auch nichts angezeigt.
Es ist auch etwas anders aufgebaut als andere!!!
 
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.