H
ht81
Guest
Oh, ok. Und was kann ich jetzt im besten Fall machen? Habe jetzt extra DigiTemp aufgespielt um dieses im Frame zu nutzen 
Oh, ok. Und was kann ich jetzt im besten Fall machen? Habe jetzt extra DigiTemp aufgespielt um dieses im Frame zu nutzen![]()
# Temperatur auslesen
cd /var/tmp/infoframe
digitemp -a -l /var/tmp/infoframe/temp.txt
tail -n 2 /var/tmp/infoframe/temp.txt >>/var/tmp/infoframe/akttemp.txt
ftpput -v -u username -p passwort ftp-server cache/akttemp.txt /var/tmp/infoframe/akttemp.txt
rm /var/tmp/infoframe/akttemp.txt
// read Temperature File
$TEMPhandle = fopen ("cache/akttemp.txt", "r");
$TEMPbuffer = fgets($TEMPhandle, 100);
$TEMPbuffer1 = fgets($TEMPhandle, 100);
fclose ($TEMPhandle);
// print temperature
//Sensor0
$pos = strpos($TEMPbuffer, 'C:') + 3;
$posa = strpos($TEMPbuffer, ' ', $pos);
$TempAkt = substr($TEMPbuffer, $pos, $posa - $pos);
//Sensor1
$pos1 = strpos($TEMPbuffer1, 'C:') + 3;
$pos1a = strpos($TEMPbuffer, ' ', $pos1);
$TempAkt1 = substr($TEMPbuffer1, $pos1, $pos1a - $pos1);
$opt1 = array(
'width' => 150,
'align' => ALIGN_RIGHT
);
imagettftextboxopt($im, 24, 0, $image_width-164, 210, $style['textcolor'], $style['font'], 'A: '.str_pad(number_format($TempAkt,2),5,'0',STR_PAD_LEFT).'∞C', $opt1);
imagettftextboxopt($im, 24, 0, $image_width-167, 240, $style['textcolor'], $style['font'], 'I: '.str_pad(number_format($TempAkt1,2),5,'0',STR_PAD_LEFT).'∞C', $opt1);
Oh, ok. Und was kann ich jetzt im besten Fall machen? Habe jetzt extra DigiTemp aufgespielt um dieses im Frame zu nutzen![]()
<?
// to be run on the digitemp server
$prog = "/usr/bin/rrdtool lastupdate /var/tmp/persistent/one_60-106BFCDC01080089_C.rrd";
$ph = popen($prog,'r') or die($php_errormsg);
if ($ph) {
while (!feof($ph)) {
$zeile = trim(fgets($ph));
# echo $zeile."<p>";
if (preg_match('/(\d*): (.*)/',$zeile,$var)) {
$unixtime = $var[1];
$temp1 = $var[2];
}
}
}
fclose($ph);
$prog = "/usr/bin/rrdtool lastupdate /var/tmp/wetter_2.rrd";
$ph = popen($prog,'r') or die($php_errormsg);
if ($ph) {
while (!feof($ph)) {
$zeile = trim(fgets($ph));
# echo $zeile."<p>";
if (preg_match('/(\d*): (.*)/',$zeile,$var)) {
$temp2 = $var[2];
}
}
}
fclose($ph);
echo $unixtime.":".$temp1.":".$temp2;
?>
1290414638:2.1:20.3
<?
$infile = "http://deine.fritzbox.de/wetter.php";
$fh = fopen($infile,'r') or die($php_errormsg);
if ($fh) {
while (!feof($fh)) {
$zeile = trim(fgets($fh));
// echo $zeile;
if (preg_match('/(\d*):(.*):(.*)/',$zeile)) {
$current_temp = $var[2];
$current_temp2 = $var[3];
} # if preg_match
}
}
fclose($fh);
?>
ich habe bei mir 2 Fritzboxen.
1.) 7270 ohne Modifikationen für Internet und Telefon
2.) 7170 mit Freetz + digitemp für den Infoframe.
Jetzt hätte ich gerne die Anrufe von (1) auf meinem Infoframe angezeigt, der ja aber seine Daten von (2) bekommt.
Hat damit jemand Erfahrungen oder irgendeine Idee?
[BenzinPlugin]
; maximales Alter der Preisangaben in Stunden
max_age_in_hours = 72
; maximale Anzahl angezeigter Tankstellen
max_displayed_stations = 3
; Auswahl einer Karftstoffsorte - Normal/Super/Diesel (weitere siehe URL oben )
sorte = "Diesel"
; welche Tankstellen sollen ausgewertet werden, Angabe Ort oder PLZ
ort_1 = "56567"
;ort_2 = "Simmern"
;ort_3 = "Hof"
<?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 Überschrift "Kraftstoffpreise" nach unten oben verschieben
$opt_header = array(
'width' => imagesx($image)-290,
'line_height' => 16,
'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", $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['textcolor2'], $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());
}
}