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

ok danke

wie funktioniert das mit den stau feeds? ich suche einen, der mir nur zwischen Wuppertal - Düsseldorf A46 in beite richtungen ausgibt
 
Ich habe einen PixStar Rahmen. Dieser funktioniert sehr gut, hat einen Samba-share und ist auch UPNP/DLNA-fähig. Kostet natürlich einiges, da wird wohl ein billiges Android-Tablet die günstigere Variante sein. Hab das Vorgängermodell und nach 3 maligen hin und her Senden zwischen Frankreich und Deutschland läuft das Ding jetzt auch ohne probleme. Nebenbei erwähnt war/ist der Support wirklich Klasse von den Teilen....
Aktuelle Rahmen mit Wifi + RSS-Reader oder sonstawas sind wirklich schwer aufzutreiben... :(

Hallo,
also das wäre mir grade wirklich zuviel geld dafür.
Gibt es keine günstigeren Alternativen? Wieviel Arbeit müsste ich dann überhaupt noch anschließend investieren um Anrufe, E-Mails, Wetter, Termine etc. anzeigen zu lassen?

Danke
 
@uweklatt
Hallo, habe Dein neues Benzinplugin mal getestet,leider funktioniert es bei mir nicht.
Ich habe das neue Plugin in den Pluginordner kopiert,seit dem habe ich nur ein weises Bild.
Deaktiviere ich das Plugin in der config .ini sehe ich wieder mein Bild.Habe ich da was verkehrt gemacht,oder muss ich in der config.ini nochwas ändern??

Knusterus
 
Wieviel Arbeit müsste ich dann überhaupt noch anschließend investieren um Anrufe, E-Mails, Wetter, Termine etc. anzeigen zu lassen?

Im Ernst? Wenn Du es vorher vorbereitest dann weniger als 5 Minuten (reines Copy & Paste). Wenn Du nichts vorbereitet hast, dann irgendwas zwischen 30 Minuten bis mehrere Tage. Kommt ganz drauf an wie gut deine Auffassungsgabe ist ;)
 
Im Ernst? Wenn Du es vorher vorbereitest dann weniger als 5 Minuten (reines Copy & Paste). Wenn Du nichts vorbereitet hast, dann irgendwas zwischen 30 Minuten bis mehrere Tage. Kommt ganz drauf an wie gut deine Auffassungsgabe ist ;)

Das hört sich gut an:)

Jetzt müsste ich nur noch nen Bilderrahmen finden
 
Tach zusammen

Geht bei Euch die Paketverfolgung noch??
Ich habe eins mit DHL und eins von Hermes bei beiden steht Sendung nicht gefunden.
Schaue ich aber bei Hermes direkt ist es noch unterwegs.
Hat sich da auch was geändert???
Mein Benzinplugin läuft jetzt auch ,vieln Dank an Uwe für das Erstellen!!
Aber wie kann ich die Sorte in Super E5 ändern.Ich habe im Plugin schon mal E10 in E5 geändert aber abgefragt wird immer noch E10.
Wo kann ich das ändern??

Knusterus
 
Zuletzt bearbeitet:
Tach zusammen
Hat sich da auch was geändert???
Knusterus

DHL hat Ihre Seite umgebaut. Die Antwort auf die sock-Abfrage kommt jetzt englisch und es wurde ein Leerzeichen irgendwo entfernt. Das führt dazu, daß die regex nicht mehr gepasst hat.
1. Du musst in der dhl-Funktion den header angleichen.
2. Die regex ändern
Hier meine aktuelle Version der dhlTracking-funktion:
PHP:
	private function dhlTracking($trackingnumber, $id) {
   		$i=0; $datum=$stat_txt=$inhalt=$posi=$bild=$shedule='';
   		$trans = array('Die ' => '', 'wurde ' => '', 'zu dieser Sendung wurden vom Absender ' => '', 'an DHL ' => '', 'im Zustell-Depot ' => '');
			$stat_bild = array('eingeliefert' => array('Auftragsdaten elektronisch übermittelt', 'Paket eingeliefert', 'Sendung vom Absender in der Filiale eingeliefert'),
									 			 'transport' => array('Sendung wird zum Paketzentrum transportiert', 'Sendung wird zum Ziel-Paketzentrum transportiert', 'Sendung im Start-Paketzentrum bearbeitet', 'Auslands-Sendung im Start-Paketzentrum bearbeitet', 'Auslands-Sendung wird zum Export-Paketzentrum transportiert'),
									 			 'Paketzentrum' => array('Sendung im Ziel-Paketzentrum bearbeitet', 'Sendung im Paketzentrum bearbeitet', 'Sendung wird zur Zustellbasis transportiert', 'Auslandssendung im Export-Paketzentrum bearbeitet', 'Auslands-Sendung wird für den Transport ins Zielland vorbereitet',
									 			 												 'Sendung ist im Zielland eingetroffen', 'Sendung hat das Import-Paketzentrum im Zielland verlassen'),
									 			 'Zustellung' => array('Zustellung', 'Sendung in das Zustellfahrzeug geladen', 'Sendung wird für die Zustellung vorbereitet'),
									 			 'zugestellt' => 'Sendung erfolgreich zugestellt'
									 			);
   		$bild_name = array(0 => 'eingeliefert', 1 => 'transport', 2 => 'Paketzentrum', 3 => 'Zustellung', 4 => 'zugestellt');
			$uri  = '/nextt-online-public/set_identcodes.do?lang=de&idc='.$trackingnumber;
			//header("Content-type: text/html");
			$sock = fsockopen("nolp.dhl.de", 80, $errno, $errstr, 5); // 80 = Port, 5 = Timeout
			if (!$sock) {
				return; 
			} else {
				fputs($sock, "GET ".$uri." HTTP/1.1\r\n");
				fputs($sock, "Accept-Language: de\r\n");
				fputs($sock, "Host: www.nolp.dhl.de\r\n");
				fputs($sock, "Connection: close\r\n\r\n");
				while(!feof($sock)) {					
					$zeile[$i++] = trim(fgets($sock));
				}
				fclose($sock);
			}

			for ($j=0; $j<$i; $j++) 
		      $inhalt .= strip_tags(trim($zeile[$j]));		 
			if ($inhalt) {
				preg_match('#Statusvom [A-Za-z]{2,3}, (\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2})(.*?)\.&nbsp;(N.chster Schritt(.*?)\.)?.+Detaillierter Verlauf Ihrer SendungDatum/UhrzeitOrt.+(\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2}) Uhr(.*?)\..+zur.ck#iuS', $inhalt, $treffer);
				//preg_match('#Statusvom [A-Za-z]{2,3}, (\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2})(.*?)\.&nbsp;(N.chster Schritt(.*?)\.)?#iuS', $inhalt, $treffer);
    			$datum = $treffer[1];   
    			 if ( ($treffer[4]) AND (strpos($treffer[4], 'Paketzentrum transportiert') !== FALSE) AND (strpos($treffer[0], 'Start-Paketzentrum bearbeitet') !== FALSE) ) {
 	 					$stat_txt = strtr($treffer[4], $trans);
 	 				} else {	
					$stat_txt = strtr($treffer[2], $trans);
					}								
					$posi = array_search(recursive_array_search($stat_txt, $stat_bild), $bild_name);
						for ($i=0; $i<=$posi; $i++) {
									if ( ($i==0) AND (strpos($treffer[2], 'übermittelt') !== FALSE) ) {
										$bild[$i] = 'resources/icons/dhl_übermittelt.png';
									}elseif ( ($i==1) AND (strpos($stat_txt, 'Auslands-Sendung') !== FALSE) ) {
										$bild[$i] = 'resources/icons/dhl_ausland_'.$bild_name[$i].'.png';
									}else {
										$bild[$i] = 'resources/icons/dhl_'.$bild_name[$i].'.png';
									}
								}
																	  	 					  	 					 	 				  
 			}	else	{
					$stat_txt = 'Sendung nicht gefunden';
					$datum = date('d.m.Y H:m:s', time());
			}	 			
 	 			return array($stat_txt, $datum, $bild, $id, $posi);
 }
Ich habe das Ganze noch ein wenige weiter verfeinert. Es sind noch zwei icons dazugekommen.

Was mit Hermes ist, weiß ich nicht, schon ewig kein Hermes-Paket mehr bekommen, verschickt. Ohne Sendungsnummer geht nicht viel :/

Tach zusammen
Aber wie kann ich die Sorte in Super E5 ändern.Ich habe im Plugin schon mal E10 in E5 geändert aber abgefragt wird immer noch E10.
Wo kann ich das ändern??
Knusterus
Aus Uwe´s Plugin:
PHP:
$uri = "/tankstelle_liste?spritsorte=3&r=5&ort=".$ort;   // spritsorte 3=Diesel, 5=Super E10
spritsorte=3 in spritsorte=7 ändern
 

Anhänge

  • dhl_icons.zip
    8.9 KB · Aufrufe: 16
Zuletzt bearbeitet:
Danke Spoo3ner,
DHL funktioniert wieder.:D
BenzinPlugin geht jetzt auch mit E5!!
Ich denke den Hermes Fehler findest du auch noch.

Vielen Dank für deine Hilfe.

Knusterus
 
Ich habe das Benzin Plugin auf die neueste Version von Uwe gebracht. Ich schaffe es allerdings nicht, eine Anzeige zu bekommen. Mir ist klar das Radius und Sorte im Plugin codiert sind. Was muss in die Config.ini? Die schaut im Moment so aus:

[BenzinPlugin]
max_age_in_hours = 5
max_displayed_stations = 4
sorte = 3
ort_1 = "Hof"
radius_1 = 10
 
Hi
wenn du das Plugin von Uwe verwendet hast ,brauchst Du in der config .ini nichts ändern.
Einfach das vorhanden Plugin gegen das neue tauschen,fertig.
Hast du mal bei clever-tanken.de geschaut ob überhaupt Tankstellen gefunden werden wenn Du Deine Daten dort eingibst??

Knusterus
 
Ich habe auch nichts verändert (zumindest nicht wissentlich). Die genannten Einträge liefern direkt bei clever-tanken eingegeben 15 Treffer...

Wie sieht denn Dein Eintrag in der config.ini aus?

jnappert
 
Hi

meine config.ini sieht so aus

Code:
[BenzinPlugin]
; maximales Alter der Preisangaben in Stunden
max_age_in_hours = 120
; maximale Anzahl angezeigter Tankstellen
max_displayed_stations = 5
; 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 = "SuperE5"
; welche Tankstellen sollen ausgewertet werden, Angabe Ort oder PLZ
ort_1 = "34497"
ort_2 = "34454"
;ort_3 = "34466"

vielleicht hilft es ja

Knusterus
 
Ich habe jetzt mal einfach Deine Einträge komplett übernommen. Es wird nichts ausgegeben. Ich nehme das Plugin aus Post #2058 und habe es im Plugin Ordner ausgetauscht. Nur die Spritsorte habe ich im Script selbst auf 3 gestellt, den Radius auf 2.
 
Hi
Also ich hänge Dir mein BenzinPlugin nochmal mit dran ,ich hoffe das es damit funktioniert,sonst bin ich mit meinem Latein am Ende

PHP:
<?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 = "/tankstelle_liste?spritsorte=7&r=5&ort=".$ort;   // spritsorte 3=Diesel, 5=Super E10, 7=Super E5
			header("Content-type: text/html");
			$sock = fsockopen("www.clever-tanken.de", 80, $errno, $errstr, 10); // 80 = Port, 10 = Timeout
			if (!$sock) {
				return;//$title = "keine Tankstellen in $orte_fehlen gefunden";
			} else {
				fputs($sock, "GET ".$uri." HTTP/1.1\r\n");
				fputs($sock, "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204\r\n");
				//------
				fputs($sock, "Host: www.clever-tanken.de\r\n");
				fputs($sock, "Connection: close\r\n\r\n");
				while(!feof($sock)) {
					$zeile[$i++] = utf8_encode(trim(fgets($sock,512)));
				}
				fclose($sock);
			}

		}
		// 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;
		$merken = 0;
		for ($j=0;$j<$i;$j++)
		{
			// Auswertung aller Orte, siehe config.ini
   		    if (stripos($zeile[$j],'"price_entry_table"')>0)    // neue Tankstelle
   		    {
  		      $merken = 26;
  	          $first = $j;
            }

     		if($merken>=1)  // 25 Zeilen merken
  	    	  $txt[$j-$first] = strip_tags(trim($zeile[$j]));	// sinnlose Zeichen und html-Tags entfernen

     		if($merken == 1) // Alle Daten vorhanden
     		{
      	      $tankstelle = htmlspecialchars_decode(utf8_decode($txt[21].'|'.$txt[23].'|'.$txt[22]));
      	      $tankstelle = str_replace('Herm GmbH &amp;Co.KG', 'Herm', $tankstelle);

      	      $adresse = explode('|',$tankstelle);
     		  $preis = $txt[4];
     		  if(strstr($txt[9],"gemeldet Heute"))
     		    $txt[9] = date('d.m.Y');
     		  $datum = $txt[9];
     		  $uhrzeit = $txt[10];

     		  $d_arr = date_parse($datum);
     		  $dat = mktime($d_arr['hour'],$d_arr['minute'],$d_arr['second'],$d_arr['month'],$d_arr['day'],$d_arr['year']);
     		  if($preis)
     		    $this->addStation($preis, $dat, $adresse[0].' - '.$adresse[1].' - '.$adresse[2]);
     		}

			// 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 = 'Kraftstoffpreise ('.$this->config['sorte'].')';
		imagettftextboxopt($image, 18, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_header);
		$icon = ImageCreateFromPNG ( 'resources/icons/tank.png' );
		ImageCopy($image, $icon, 20, $yoffset-3, 0, 0, imagesx($icon), imagesy($icon));
		ImageDestroy($icon);
		$yoffset += 26;

		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)) ) {
				break;
			}

			// Preis
			$text = ' Eur'; // Euro-Zeichen geht nicht
			$text = $row['preis'].$text;
			// Datum
			$text = $text.'  '.strftime( "%d.%m.", strtotime($row['datum']));
			//$text = $text.'  '.strftime( "%d.%m.-%H:%M", strtotime($row['datum']));
			// Tankstelle
			$text = $text.'  '.$row['station'];

			// 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, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);

			$yoffset += 18;
		}
		$yoffset += 10; // 26;
		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());
	}

}

Knusterus
 
edit erledigt
 
Zuletzt bearbeitet:
Danke Knusterus. Ich habe jetzt komplett Deine Einträge in der config.ini und Deinen Text ins Plugin übernommen - immer noch keine Anzeige. Das gibts doch gar nicht. Alles andere geht wie gehabt.
 
Hi jnappert
Tut mir leid, das ich Dir da nicht weiterhelfen kann. Bei mir funktioniert es so, da müssen doch die Experten mal ran.

Knusterus
 
Thomas hat es als erster zur Sprache gebracht:
Im Callmonitor zusammen mit der FRITZ!OS 6.X ist wohl ein bug, welcher bei der suche im Fritz-Telefonbuch immer nur den ersten Eintrag für einen Namen findet. Die restlichen Enträge werden nur als Nummern dargestellt.
Das ganze kann man zur Zeit am einfachsten lösen, indem man die Telefonbucheinträge der Frtizbox in das Telefonbuch des Callmonitors überträgt. Da dies ziemlich nervig ist habe ich da ein kurzes php-script geschrieben welches ich hier gepostet habe.
 
Hallo Spoo3er,

viel Dank für dein Script und deine Mühe :). Hoffen wir, das der Bug bald behoben ist.
 
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.