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

Auf dem QNAP kann man keine Berechtigungen auf dem Oder "Web" vergeben...muss ich das denn? Wenn ja, wie?

Schau mal Unter "Zugriffskontrolle" und dann auf "Freigabeordner" Wenn Du das Sybol mit der Ordner Hand anklickst, kannst Du berechtigungen vergeben.

Mein Web Ordner habe ich so vergeben müssen.
 
Schau mal Unter "Zugriffskontrolle" und dann auf "Freigabeordner" Wenn Du das Sybol mit der Ordner Hand anklickst, kannst Du berechtigungen vergeben.

Mein Web Ordner habe ich so vergeben müssen.

Hallo Thomas,
vielen Dank. Wer richtig schaut. :)
Welche Rechte hast du denn dort vergeben? Schreib/Lese für "anyone"? Auf dem gesammten Ordner? Ich würde das gerne so weit wie möglich einschränken.
Ich habe jetzt erst einmal alles freigegeben, und nun ändern sich zumindest die Fehlermeldungen...

Notice: Undefined index: width in /share/HDA_DATA/Web/infoframe/index.php on line
Notice: Undefined index: height in /share/HDA_DATA/Web/infoframe/index.php on line
Notice: Undefined index: action in /share/HDA_DATA/Web/infoframe/index.php on line
Notice: Undefined offset: 1 in /share/HDA_DATA/Web/infoframe/library/imagettftextboxopt.php on line
Notice: Undefined offset: 1 in /share/HDA_DATA/Web/infoframe/library/imagettftextboxopt.php on line 126
...

Kann das an der ZendGdat-Version zusammenhängen? Ich habe die Version 1.8.4 im Einsatz...auf dem Filer läuft PHP 5.1.36. Ein Update auf die Minimumversion 5.2 finde ich nicht.

Danke schon mal für eure unermüdliche Hilfe auch einem Anfänger weiterzuhelfen.

Gruß
Christian
 
Sorry, schreib grad vom Handy. Also ich habe einen Benutzer "Infoframe" angelegt, dieser hat auf das Web Verzeichnis volle lese und schreibrechte. Aber halt nur auf diesen Ordner. Das reicht.

Was mich etwas wundert ist, das du eine niedrige PHP Version als ich hast. Ich habe aber eine ältere Version der Firmware. Bist Du sicher das du kleiner 5.2.x bist? Zu den Fehlermeldungen: ist dein Zend richtig gelinkt? Wo befindet sich dein Zend? Es gäbe die Möglichkeit deine PHP Version zu aktualisieren, allerdings benötigst du dann dieses QPKG oder so.Keine Ahnung wie genau das geht. Wie gesagt, solltest du eigentlich mindestens PHP 5.2.x haben......Oder ist das noch Beta Firmware?
 
@jeepersfinest: Die Notices bekommst du ohne Umprogrammierung nicht weg und kannst du ignorieren. Du musst nur den Staus der Fehlermeldungen wieder ändern in -> error_reporting( E_ERROR );
 
Was mich etwas wundert ist, das du eine niedrige PHP Version als ich hast. Ich habe aber eine ältere Version der Firmware. Bist Du sicher das du kleiner 5.2.x bist?
Mit den relativ neueren QNAP Firmwares wurde ein downgrade bei PHP gemacht.
Im QNAP Forum schrieben die Entwickler was von Frühling für die 5.3 PHP Version

Ich habe das Problem, das bei mir eine leere Seite angezeigt wird. Verschiede Zend Version habe ich ausprobiert, die .ini entsprechend angepasst, in verschiedene Pfade abgelegt, alles ohne Erfolg.
Hat noch jemand ein Tipp für mich?



Gruß
Frank
 
Hi ZEN!
Willkommen im Forum!
Hast du mal in der *.ini alle Plugins auskommentiert ( ; ) und einzelne wieder aktiviert um den Fehler einzugrenzen. Hilfreich für dich ist wohl auch error_reporting( E_ALL );
zu aktivieren in der index.php
 
Hi ilmtuelp0815,

manchmal liegt das einfache so nah, dass man es nicht sieht.
In meinen Anmeldedaten bei Google war ein Tippfehler! Durch das error_reporting kam der Fehler zum Vorschein.

Vielen Dank für den Hinweis!
 
Hallo zusammen,

da der Kodak Pluse nicht funktionierte, habe ich ihn zurückgeschickt und versuche mein Glück nun mit dem Motorola LS1000W.

Versuche mich gerade anhand der Anleitung [URL="http://infoframe.fanol.de/viewtopic.php?p=7&sid=aada0cc6ea5c9977702e5e77d22aeb60#p7"Anleitung]http://infoframe.fanol.de/viewtopic.php?p=7&sid=aada0cc6ea5c9977702e5e77d22aeb60#p7[/URL] durchzuarbeiten. Nun scheitere ich schon am Punkt 1:(

Dort steht, dass man folgende Zeile
Code:
192.168.0.2  rss.framechannel.com
in die hosts Datei des DNS Servers eintragen muss.

Nun habe ich eine Fritzbox 7170 mit Freetz freetz-1.2-stable am Laufen.
Reicht das nicht, wenn ich im Punkt Freetz -> hosts die Zeile
Code:
192.168.178.27**rss.framechannel.com
einfüge?

Wenn ich jetzt nach rss.framechannel.com pinge, dann erhalte ich immer als Antwort 50.19.241.65, somit wird die Zeile nicht beachtet.

Kann mir jemand einen Tipp geben, wieso das so ist?

Gruß Chrisian
 
Hast Du denn DHCP in der Fritzbox deaktiviert und im Freetz aktiviert, so dass die Einträge überhaupt erst greifen?
 
Ja, dhcp ist in freetz aktiv (dnsmasq). DHCP ist auf der Fritzbox deaktiviert.
Ist der DNS-Server der Fritzbox automatisch deaktiviert, wenn man den DHCP der Fritzbox deaktiviert?

Der Eintrag in der hosts Datei wird nicht berücksichtigt.

//Edit:
Nun funktioniert die Abarbeitung der hosts. Datei. Hatte die Leerzeichen zwischen den Sternen vergessen.

Nun hab ich noch das Problem, dass die Namensauflösung im internen Netzwerk nicht funktioniert.
Ich erhalte folgende Meldung:
Code:
192.168.178.121 wurde von fritz.box nicht gefunden: Non-existent domain

Die Auflösung nach Draußen und des eigenen PC-Namens funktioniert.

Hat jemand eine Idee, an was das liegen könnte?

Gruß Christian
 
Zuletzt bearbeitet:
Lass uns mal abgleichen:
dnsmasq / Starttyp "automatisch" / Port "53" / Domain "fritz.box" oder z.B. "meinnetz.local" (habe ich) / DHCP Server "aktiviert" / Range z.B. "192.168.178.20,192.168.178.50,24h" / Ganz wichtig der Haken "Statische DHCP Leases aus hosts".

Nachtrag: Du muss am Rechner auch jeweils die neuen Einstellungen ziehen, sonst bringt es gar nicht (CMD: "ipconfig /release" + "ipconfig /renew").
 
Ja, die Einstellungen habe ich auch.
Einziger Unterschied: Mein DHCP Range geht bis 200.

Ansonsten:
DHCP Boot -> deaktiviert
TFTP Server -> deaktiviert

An was kann denn das noch liegen?

Gruß Christian
 
@jeepersfinest: Die Notices bekommst du ohne Umprogrammierung nicht weg und kannst du ignorieren. Du musst nur den Staus der Fehlermeldungen wieder ändern in -> error_reporting( E_ERROR );

Hallo,

vielen Dank für den Hinweis. Das war es! Jetzt läuft der Infoframe auch auf meinem Qnap 1a. Yes.
Die Antwortzeit ist besser als gedacht (<2s), mit wechselnden Hintergrundbildern ca. 6s.
Viel schneller war/ist die T-Com auch nicht inkl dem Download...

Jetzt noch dem Webserver deutsche Wochentage und Monate beibringen und ich bin rundherum zufrieden. :)

Gruß
Christian
 
Ich möchte noch gerne die Leitung auf der angerufen wird siganalisiert bekommen, nach möglichkeit sollte die rechts oben im Eck irgendwo stehen....
Kann mir jemand behilflich sein, wo ich das in dem Calls plugin eintragen muss?! Das wäre super!!!

Code:
<?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("INCOMING_CALL", 1);
define("MISSED_CALL", 2);
define("ACTIVE_CALL", 3);

class CallsPlugin implements IPlugin
{
    private $dbconn = NULL;
	private $config = NULL;
	
	public function __construct($dbconn, $config) {
		$this->dbconn = $dbconn;
		$this->config = $config;
	}
	
	public function processCallEvent($event, $src_name, $src_address, $src_numb, $dst_name, $dst_address, $dst_numb, $duration) {
		if ($event == 'in:request') {
		    // show incomming call
			// clear previous incomming calls from database
			$this->clearCalls(INCOMING_CALL);
			// write new incomming call to database
			$this->addCall(INCOMING_CALL, $src_name, $src_address, $src_numb, 0);
			
		} elseif ($event == 'in:cancel') {
			// clear previous incomming calls from database
			$this->clearCalls(INCOMING_CALL);
			// add missed call
			$this->addCall(MISSED_CALL, $src_name, $src_address, $src_numb, 0);

		} elseif ($event == 'out:request') {
			// clear missed calls (user seems to be back, since he took up phone and tried to call somebody
			$this->clearCalls(MISSED_CALL);
			// clear also incomming calls (to enable user to reset orphaned calls)
			$this->clearCalls(INCOMING_CALL);
			
		} elseif ($event == 'in:connect') {
			// clear previous incomming calls from database
			$this->clearCalls(INCOMING_CALL);
			// show active connection
			$this->addCall(ACTIVE_CALL, $src_name, $src_address, $src_numb, 0);

		} elseif ($event == 'out:connect') {
			// show active connection
			$this->addCall(ACTIVE_CALL, $dst_name, $dst_address, $dst_numb, 0);
			
		} elseif (($event == 'in:disconnect') || ($event == 'out:disconnect')) {
			// clear active connection
			$this->clearCalls(ACTIVE_CALL);
			
			// if duration was less than 10 seconds add call to missed calls (call gets only connected
			// because of answering machine, but then caller hung up without leaving a message)
			$treshold = $this->config['missedcall_duration_treshold'];
			if (($treshold == null) || ($treshold == ""))
				$treshold = -1;
			if (($event == 'in:disconnect') && ($duration <= 10)) {
				$this->addCall(MISSED_CALL, $src_name, $src_address, $src_numb, $duration);
			}
		}
		
    }
	
	
	public function isPhoneRinging() {
		// delete old orphaned incoming calls (older than 2 minutes)
		$query  = "DELETE FROM if_calls WHERE (type = 1) AND (timestamp < DATE_SUB(NOW(), INTERVAL 2 MINUTE))";
		mysql_query($query, $this->dbconn) or die('Error, delete query failed');

		// now read current incomming calls
		$query  = "SELECT * FROM if_calls where type = 1";
		$result = mysql_query($query, $this->dbconn);
		if (mysql_num_rows($result) > 0)
			return true;
		else
			return false;
	}
	
	
	public function doUpdate() {
	
	}
	
	// returns
	public function doOutput($image, $style, $updateData, &$yoffset) {

		// print incomming call
		$query  = "SELECT name, address FROM if_calls where type = 1";
		$result = mysql_query($query, $this->dbconn);
		$incomingCallActive = false;
		if (mysql_num_rows($result) > 0) {
			$incomingCallActive = true;
			$row = mysql_fetch_assoc($result);
			// format output to display caller name in biggest font size possible
			$imageWidth = imagesx($image);
			$opt = array(
				'width' => $imageWidth,
				'align' => ALIGN_CENTER
			);
			$text = $row['name'];
			$size = getBiggestFontsizeForText($style['font'], $imageWidth-20, $text);
			$height = imagettftextboxopt($image, $size, 0, 0, 400-$size, $style['textcolor'], $style['font'], $text, $opt);
			// draw call icon
			$wicon = ImageCreateFromPNG ('resources/icons/phone.png');
			ImageCopy($image, $wicon, ($imageWidth/2)-(imagesx($wicon)/2), 400-$size-imagesy($wicon), 0, 0, imagesx($wicon), imagesy($wicon));
			//ImageCopy($image, $wicon, $imageWidth-imagesx($wicon)-20, 10, 0, 0, imagesx($wicon), imagesy($wicon));
			ImageDestroy($wicon);
			imagettftextboxopt($image, 32, 0, 0, 420-$size+$height, $style['textcolor'], $style['font'], $row['address'], $opt);
		}
		mysql_free_result($result);
		
		if ($incomingCallActive)
			return;
			
		// print missed calls
		$query = "SELECT * FROM `if_calls` WHERE (type = 2) ORDER BY timestamp DESC";
		$result = mysql_query($query, $this->dbconn);
		if (mysql_num_rows($result) > 0) {
			$opt_header = array(
				'width' => imagesx($image)-300,
				'line_height' => 18,
				'align' => ALIGN_LEFT
			);

			$opt_calls = array(
				'width' => imagesx($image)-300,
				'line_height' => 14,
				'align' => ALIGN_LEFT
			);

			// print header
			$icon = ImageCreateFromPNG ( 'resources/icons/call.png' );
			ImageCopy($image, $icon, 20, $yoffset-2, 0, 0, imagesx($icon), imagesy($icon));
			ImageDestroy($icon);
			imagettftextboxopt($image, 18, 0, 50, $yoffset, $style['textcolor'], $style['font'], "Verpasste Anrufe", $opt_header);
			$yoffset += 22;

			// print calls list
			$counter = 0;
			while ($row = mysql_fetch_assoc($result)) {
				// 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 = (mysql_num_rows($result) - $counter) + 1;
				$entrylimit = $this->config['max_displayed_missed_calls'];
				if ( (($entrylimit) && ($counter > $entrylimit)) || (($yoffset >= (imagesy($image) - 36)) && ($rest > 1)) ) {
					// show only n calls. If more calls are available show hint "x more calls..."
					if ($rest > 1)
						$text = "... $rest weitere Anrufe";
					else
						$text = "... $rest weiterer Anruf";
					imagettftextboxopt($image, 14, 0, 24, $yoffset, $style['textcolor'], $style['fontb'], $text, $opt_calls);
					$yoffset += 22;
					break;
				}

				$time = strftime("%d.%m.%Y, %H:%M", strtotime($row['timestamp']));
				$missedcalls = $time." - ".$row['name'];
				if ($row['duration'] > 0)
					$missedcalls = $missedcalls." (".$row['duration']."s)";
				imagettftextboxopt($image, 14, 0, 50, $yoffset, $style['textcolor'], $style['font'], $missedcalls, $opt_calls);
				$yoffset += 16;
			}
			$yoffset += 20;
		}
		mysql_free_result($result);
		
		
		// print active call
		$query = "SELECT name, address FROM if_calls where type = 3";
		$result = mysql_query($query, $this->dbconn);
		if (mysql_num_rows($result) > 0) {
			$row = mysql_fetch_assoc($result);
			$opt = array(
				'width' => 400,
				'align' => ALIGN_CENTER
			);
			imagettftextboxopt($image, 18, 0, 30+((imagesx($image)-400)/2), 20, $style['textcolor'], $style['font'], "Aktives Gespräch mit:\n".$row['name'], $opt);
		}
		mysql_free_result($result);
		
	}
	
	private function addCall($type, $name, $address, $number, $duration) {
			if ($name == "") $name = $number;
			$query = "INSERT INTO if_calls (id, type, timestamp, name, address, duration) VALUES (NULL, $type, CURRENT_TIMESTAMP, '$name', '$address', $duration)";
			mysql_query($query, $this->dbconn) or die('Error, insert query failed: '.mysql_error());
	}
	
	private function clearCalls($type) {
			$query = "Delete from if_calls where type = $type";
			mysql_query($query, $this->dbconn) or die('Error, delete query failed');
	}
}
 
Hallo
war ein wenig untätig :-(
Habe den Kodak W1030 wieder bei ebay reingestellt. Da ich momentan nicht wirklich viel Zeit zum testen habe geht der wieder auf den Markt.
Werde mich jetzt intensiver mit dem W1020 und dem QNAP beschäftigen.

Hoffe das mit dem Script welches ich gepostet hatte jemand, der sich ein wenig besser in der programmierung auskennt, das evtl. hin bekommt. Sehe da mit meinen bescheidenen Kentnissen wenig Hoffnung auf Erfolg.
Dann würde ich mir auch noch mal so einen Rahmen zulegen da die Größe & Auflösung schon prima ist.
Soorryyyyy
 
Ich möchte noch gerne die Leitung auf der angerufen wird siganalisiert bekommen, nach möglichkeit sollte die rechts oben im Eck irgendwo stehen....
Kann mir jemand behilflich sein, wo ich das in dem Calls plugin eintragen muss?! Das wäre super!!!
Meinst du die Leitung also welches Telefon oder die Rufnr. bei ISDN?

Gruß
 
Gibt es eigentlich aktuelle WLAN Bilderrahmen, welche man "modden" kann?
Die Samsung gibt es selbst auf Ebay nicht mehr.
 
Guten Morgen zusammen,

beschäftige mich gerade ein bisschen mit dem Google Chart. Das Chart wird erstellt allerdings hätte ich gerne einen transparenten Hintergrund (also anstatt weiß). Möchte nämlich Fotos im Hintergund haben und darüber dann das Chart.
Habe folgendes probiert. Leider nur schwarzer Hintergund :)
Code:
<?php

// copy (resized) background image on background

$path="http://192.168.178.27/infoframe/infoframe.txt";

      $content = file_get_contents($path);

      $url = "http://chart.apis.google.com/chart?chs=600x480&" . $content . "&chts=FFFFFF,15,c&&chf=bg,s,FFFFFF00&chdlp=bv&chm=B,E66E07,0,0,0&chco=E66E07";

$weiss = imagecolorallocate ($im, 255, 255, 255);

// weiss als transparenc defenieren
imagecolortransparent($PVimage, $weiss);
	
  $PVimage = ImageCreateFromPNG ( $url );

$PVimage_path = "./cache/bilder/PV.png";

//ImageJpeg($PVimage,$PVimage_path,95);

$bgimagefile = './cache/bilder/PV.png';

$bg = @ImageCreateFromjpeg ($bgimagefile); /* Versuch, Datei zu öffnen */

if ($bg) {
        imagecopyresampled($im, $bg, 0, 0, 0, 0, $image_width, $image_height, imagesx($bg), imagesy($bg));
}

// set the HTTP header type to jpeg
header("Content-type: image/png"); 

// send the new PNG image to the browser
//ImageJpeg($bg);

ImageJpeg($bg,null,100);

ImageJpeg($bg,"administration/images/if_akt.png",100);
 
// destroy the reference pointer to the image in memory to free up resources
ImageDestroy($bg); 

?>
[/quote]

Hat jemand eine Idee, wie ich das hinbekomme? Hab von php nicht so richtig viel Anhung:p

Ach ja, hier noch mal der Link zur Beschreibung der Google Charts.
http://code.google.com/intl/de-DE/apis/chart/image/docs/chart_params.html#gcharts_chs

Gruß + Danke schon mal
Christian
 
Guck mal hier ,vielleicht hilf dir das !

Hab von php auch keine Ahnung.
 
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.