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

Was mit aufgefallen ist:
Code:
root@SERVER:/var/lib# l /var/lib | grep mysql
drwx------ 12 mysql  mysql   4,0K Jan  2 06:59 mysql

root@SERVER:/var/lib# l /var/run/ | grep mysql
drwxr-xr-x  2 mysql       root          80 Jan  2 06:59 mysqld

root@SERVER:/var/lib# l /var/run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 Jan  2 06:59 /var/run/mysqld/mysqld.sock

du kannst das ganze in der console testen:
mysql -u"user" -p"passwort" (beides mal kein leerzeichen zwischen option und argument) Ich würde das ganze als root testen, damit du jedem zufriffsproblem aus dem weg gehst.
Falls der zugriff mit root klappt, kannst du das ganze auch mit dem user infoframe, oder wie auch immer versuchen.

Falls es mit root nicht klappt schau dir mal die config von mysql an zu finden unter: /etc/mysql/my.cnf
Code:
[client]
.....
socket		= /var/run/mysqld/mysqld.sock
......
[mysqld]
....
socket					= /var/run/mysqld/mysqld.sock
....
stehen unter client und mysqld der selbe pfad zu mysqld.sock -datei?

wenn ja, dann vergleiche mit der php-config. Default config ist /etc/php5/apache2/php.ini
Code:
[MySQL]
....
; Default port number for mysql_connect().  If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order).  Win32 will only look
; at MYSQL_PORT.
; http://php.net/mysql.default-port
mysql.default_port =

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket =
....
evlt in der php.ini den default_socket aus der my.cnf eintragen

Onkel Google spricht:
http://dev.mysql.com/doc/refman/4.1/en/problems-with-mysql-sock.html
 
Zuletzt bearbeitet:
Tag zusammen,

hat Google irgendwas verändert? Seit ein paar Tagen wird bei mir der Google Kalender im Infoframe nicht angezeigt.

Leute, kann mir jemand bitte helfen das Problem herauszufinden? Wie bereits erwähnt, die Einstellungen habe ich nicht verändert auch die Login Daten zum Google Calender passen. In welcher Log-Datei könnte der Fehler abgebildet sein?

Hier der Auszug aus der config.ini:

[CalendarPlugin]
; Hinweis: Alle auf der Google-Seite selektierten Kalender werden auch hier angezeigt.
; Sollen bestimmte Kalender ausgeblendet werden, müssen diese im Google-Kalender deselektiert (nicht entfernt!) werden.
user = "benutzer"
password = "password"
; Anzahl der angezeigten Tage (3 = heute, morgen und übermorgen)
number_of_days = 5
 
Zuletzt bearbeitet:
He zusammen
So mein Benzinplugin läuft jetzt auch super,ich habe das Benzinplugin MTS verwendet läuft super,auch die Aktuallisierung des Datums funktioniert.

Ihr habt mich jetzt neugierig gemacht mit dem Callplugin.Wie läuft das mit dem Callmonitor auf der Box??
Gibt es schon ein fertiges Plugin ??


Volker
 
Hallo Volker,
in der Urfassung läuft der Callmonitor auf der Fritzbox und ruft den Infoframe mit entsprechenden Parametern auf, die Infoframe-Software kümmert sich um alles Weitere. Wenn man allerdings, so wie wir, einen eigenen Server laufen hat, kann man sich diesen Umweg sparen und den Callmonitor auf dem Server laufen lassen. Er nutzt die Anrufmeldung auf Port 1012 der Originalfirmware und kann dann ohne Umwege über den Infoframe direkt auf Infoframe Tabellen zugreifen, das ist bei eingehenden Anrufen ein wenig schneller, der größte Vorteil ist aber, dass der Infoframe auch mit Originalfirmware läuft.
Wie bereits in einem Artikel geschrieben, habe ich listen2fritz von http://www.gromeck.de/projekte/software/listen2fritz/ genommen und für mich angepasst. Ob es eine ähnliche Software für Deinen Windowsserver gibt weiss ich nicht, musst Du mal Google fragen, der weiss das bestimmt :)

Gruß, Michael...
 
Hallo Michael.
Danke für Deine Erklärung.Interessant wäre diese Geschichte nur, wenn man die Orginal Firmware verwenden kann.Ich hatte neulich Probleme mit meinem DSL. Da musste ich immer wieder von Freetz zurück zur Orginalfirmware da AVM immer die Logs haben wollte.Und der jetzige Callmonitor funktioniert bei mir halt nicht sehr zuverlässig.Im Moment geht er halt nicht.Fehler jetzt keine Anzeige im Infoframe.
Fehler bei Testanruf im FreetzCallmonitor
Code:
[0:0] processing rule '*:*' '^' '^' '/var/tmp/infoframe/refresh.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&dst_name=$(urlencode "$DEST_NAME")&dst_address=$(urlencode "$DEST_ADDRESS")&duration=$DURATION"'
[0:0] event 'in:request' matches pattern '*:*'
[0:0] parameter SOURCE='********' matches pattern '^'
[0:0] parameter DEST='**********' matches pattern '^'
[0:0] SUCCEEDED
[0:0] ACTION: '/var/tmp/infoframe/refresh.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_address=$(urlencode "$SOURCE_ADDRESS")&dst_name=$(urlencode "$DEST_NAME")&dst_address=$(urlencode "$DEST_ADDRESS")&duration=$DURATION"'
Connecting to 192.168.178.20 (192.168.178.20:80)

tmp.jpg              100% |*******************************|    65   0:00:00 ETA
Connecting to 192.168.178.20 (192.168.178.20:80)

tmp.jpg              100% |*******************************|    65   0:00:00 ETA
Connecting to 192.168.178.20 (192.168.178.20:80)

tmp.jpg              100% |*******************************|    65   0:00:00 ETA
Connecting to 192.168.178.29:5050 (192.168.178.29:5050)
wget: can't connect to remote host (192.168.178.29): Connection refused
Connecting to 192.168.178.29:5050 (192.168.178.29:5050)
wget: can't connect to remote host (192.168.178.29): Connection refused
Connecting to 192.168.178.29:5050 (192.168.178.29:5050)
wget: can't connect to remote host (192.168.178.29): Connection refused
[0:0] action failed with an exit status of 1

Die Nummern bei Source und Dest habe ich entfernt.

Hast Du ne Idee?? Kann es sein das es mit der neuen AVM Firmware 6.05 zu tun hat???




Volker
 
Zuletzt bearbeitet:
Hallo Volker,
Code:
[...]
Connecting to 192.168.178.[B][COLOR="#FF0000"]20[/COLOR][/B] (192.168.178.20:80)
[...]
wget: can't connect to remote host (192.168.178.[B][COLOR="#FF0000"]29[/COLOR][/B]): Connection refused
[...]
Hast Du ne Idee?? Kann es sein das es mit der neuen AVM Firmware 6.05 zu tun hat???
ich glaube nicht, der Fehler kommt doch erst in der refresh.sh.
Kann es sein, dass Dein Rahmen nach upgrade auf die neue Firmware eine neue IP-Adresse bekommen hat, du in der refresh.sh aber noch die alte stehen hast?

Gruß, Michael...
 
Hallo Michael
Also das habe ich kontrolliert.Mein Rechner wo Infoframe läuft hat die 20 und der Rahmen die 29.
Das sehe ich sowohl im Rahmen als auch in der Box.

Volker
 
Poste doch mal Deine refresh.sh
 
Code:
#!/bin/sh
# refresh infoframe image

# config
localpath="/var/tmp/infoframe"
serverscript="http://root:[email protected]/infoframe/index.php"
samsung_ip_address="192.168.178.29"
samsung_rss_id="143560439"

# try 3 times to download picture until error is displayed
tries=1
while true
do
	# download new picture
	wget "$serverscript?$1" -O $localpath/tmp.jpg
	# do some checks (error/warning string in file? downloaded file should be at least 10k of size?)
	# if error occured we do a next try
	err=0
	warn=0
	filesize=0
	if [ -f $localpath/tmp.jpg ]
	then
		err=`grep -i 'error' $localpath/tmp.jpg | wc -l`
		warn=`grep -i 'warning' $localpath/tmp.jpg | wc -l`
		filesize=`du $localpath/tmp.jpg | cut -f1`
	fi
	
	
	# process checking result
	if [ $err == 0 ] && [ $warn == 0 ] && [ $filesize -ge 10 ]
	then
		mv $localpath/tmp.jpg $localpath/info.jpg
		break
	else
		if [ $tries -ge 3 ]
		then
			date +%d-%m-%Y_%H-%M-%S >> $localpath/download.log
			echo "*** ERROR OR WARNING FOUND: filesize= $filesize ***" >> $localpath/download.log
			rm $localpath/tmp.jpg 2> /dev/null
			cp $localpath/error.jpg $localpath/info.jpg
			break
		else
			# just wait some seconds, then try again
			tries=$(expr $tries + 1)
			sleep 5
		fi
	fi
done


# Samsung SPF-83v specific tasks
# ===============================
# disable and enable picture cache for this rss feed to make immediately refresh possible
wget -s "http://$samsung_ip_address:5050/configuration/storage.htm?CheckRssNameId=$samsung_rss_id&Checked=false"
wget -s "http://$samsung_ip_address:5050/configuration/storage.htm?CheckRssNameId=$samsung_rss_id&Checked=true"
# force samsung picture frame to immediately refresh picture by simulate clicking on "next" in web interface
wget -s "http://$samsung_ip_address:5050/configuration/photo_frame.htm?next"

Die Probleme habe ich von Anfang an, mal ging es mal nicht.
Spoo3ner hat da auch schon mal geschaut.Damals dachten wir es liegt an der Datenbankabfrage.
Kannst hier nochmal nachlesen.http://www.ip-phone-forum.de/showthread.php?t=206194&page=97 post 1936.
Das Tauschen das Plugins hat nichts gebracht. Auch das Umstellen der Datenbank brachte jetzt keinen Erfolg.

Volker
 
Deine refresh.sh geht von einem Fehler aus, wenn das Bild kleiner als 10 Blocks ist.
Es könnte doch sein, dass korrekte Bilder auch mal kleiner sein können.
Füge doch mal den Parameter "-b" in die Zeile
Code:
filesize=`du $localpath/tmp.jpg | cut -f1`
ein, also:
Code:
filesize=`du -b $localpath/tmp.jpg | cut -f1`
 
Hi Michael
Danke für deine Hilfe . Leider ist der Fehler immer noch der Gleiche.
Ich tippe immer noch auf einen Datenbankfehler ,weil die IF Calls in der Datenbank immer leer ist.

Volker
 
Hallo Volker,
zumindest liegt es nicht am Callmonitor sondern am Plugin. Mit einem anderen Callmonitor hättest Du also die gleichen Probleme.
 
Ja, nur da konnte ich es mit Tausch vom Plugin und Neuanlegen der Datenbank beheben.Jetzt funktioniert dieser Trick leider nicht mehr.
Aber ist auch nicht so schlimm,ich hab ja noch eine analoge Anzeige an meiner Fritzbox die mir verpasste Anrufe anzeigt.
Ich bin so froh das der Rest jetzt läuft.:D:D Vielleicht wird das Projekt mit dem fritzeigenen Callmonitor nochmal aufgegriffen.
Ich warte mal ab.


Danke für deine Hilfe

Volker
 
Hallo zusammen
Hat mir ja keine Ruhe gelassen mit dem Callplugin.Ich habe mich nochmal auf Fehlersuche begeben und bin fast fündig geworden.Es liegt an der neuen xampp Version.
Ich habe es mit meiner alten xampp Versoin getestet ,da funktioniert es.Datenbank ist mit latin1 erstellt ,genau wie meinen.Auch die Plugins sind identisch.Ich habe sie auch getauscht,ohne Erfolg.
Dann habe ich noch alle "extension" in der php.ini kontrolliert auch alles identisch.Dann habe ich zum Test die funktionierende php.ini in das nicht funktionierende xampp kopiert,hat aber auch nicht funktioniert.
Woran kann es denn jetzt noch liegen??

Volker
 
CallPlugin

Hallo Volker,

letzter Versuch :)

Wenn es sich um ein Problem mit dem Zeichensatz handelt, versuch mal folgendes: Du solltest in der CallPlugin.php am Ende eine Funktion addCall haben.
PHP:
private function addCall($type, $name, $address, $duration) {
	if ($name == "")
	$name = 'Unbekannt';
	$query = "INSERT INTO if_calls (id, type, timestamp, name, address, duration) VALUES (NULL, $type, CURRENT_TIMESTAMP, '$name', '$address', $duration)";
	// [...]
}

tasuche das "$query=..." mal gegen
PHP:
$query = "INSERT INTO if_calls (id, type, timestamp, name, address, duration) VALUES (NULL, $type, CURRENT_TIMESTAMP, '".mysql_real_escape_string($name)."', '".mysql_real_escape_string($address)."', $duration)";

Wenn es dann immer noch nicht funkt, gebe ich auf.

Gruß...
 
Zuletzt bearbeitet:
Hallo,
leider ist es mir nicht gelungen, Infoframe zum Arbeiten zu bewegen. Deshalb habe ich noch einige Fragen:
1. In welcher Gruppe müssen sich die Benutzer vom Infoframe befinden? Welche Verzeichnisrechte benötige ich?
2. Welche Rechte braucht root@localhost? Ist das ein Nutzer von mysql und/oder auch vom Betriebssystem?
3. Was ist der Controluser in mysql (Fehlermeldung: Verbindung für den controluser, wie er in Ihrer Konfiguration angegeben ist, ist fehlgeschlagen.)?
4. Beim Installieren von phpmyadmin wurde 3x nach einem PW für root gefragt, ich habe immer dasselbe eingeben, trotzdem kam eine Fehlermeldung mit 4 Auswahlpunkten, nur mit ignore ging die Installation weiter. Ich verwende Ubuntu 14.04 LTS, könnte hier ein Fehler bzw. Übersetzungsfehler vorliegen und etwas anders gemeint sein? PW ohne Sonderzeichen!
5. In der config.ini wollte ich ein Minimalsystem mit nur einem Plugin konfigurieren, um überhaupt ein Start von Infoframe zu ermöglichen.
6. Wofür steht das hier in infoframe.pphp: exec ("playusb -j /var/www/cache/slide.jpg");, ich habe auch den Fernbedienungscode auskommentiert, sollte noch mehr für erste Versuche auskommentiert sein?
Auf dem Gerät sollen noch mehr Datenbanken laufen, z. B. volkszaehler.org, Wetterdatenerfassung, Solaranlagendatenerfassung, Haussteuerung, das alles soll im mysql-Datenbanken gespeichert werden.
 
Hallo jono,
  1. natürlich die Rechte mit dem Dein apache läuft. In der Standardkonfiguration meist www-data, kannst Du in apache2.conf einstellen.
    Code:
    root@InfoFrame:~# dir /var/www
    insgesamt 56K
    drwxr-xr-x  7 root     root     4,0K Dez  6 02:26 .
    drwxr-xr-x 12 root     root     4,0K Okt 29 05:22 ..
    drwxr-xr-x  3 www-data www-data 4,0K Nov 28 03:44 cache
    drwxr-xr-x  3 www-data www-data 4,0K Nov 20 03:27 library
    drwxr-xr-x  6 www-data www-data 4,0K Sep 18 04:11 Pictures
    drwxr-xr-x  2 www-data www-data 4,0K Dez  5 06:40 plugins
    drwxr-xr-x  5 www-data www-data 4,0K Nov  6 17:59 resources
    -rw-r--r--  1 www-data www-data 6,7K Dez 22 18:16 config.ini
    lrwxrwxrwx  1 root     root       26 Okt 29 05:18 error.log -> /var/log/apache2/error.log
    -rw-r--r--  1 www-data www-data 1,4K Dez 25  2013 favicon.ico
    -rw-r--r--  1 www-data www-data 6,4K Nov 20 03:19 infoframe.php
    root@InfoFrame:~#
  2. root hat sowieso alle Rechte, der braucht nichts mehr. Der Superuser für MySQL heisst auch root, ich weiss gar nicht, ob man das ändern kann/sollte.
  3. ich würde vermuten der User mit dem Du versuchst auf die Datenbank zuzugreifen hat nicht ausreichend Rechte.
  4. er will das root Passwort von MySQL, nicht vom User root des Betriebssystems, deswegen funktioniert wohl auch 3. nicht.
  5. eine Minimal config.ini, ungestestet.
    PHP:
    [System]
    db_host = "localhost"
    db_name = ""
    db_user = ""
    db_password = ""
    zendfw_path = "/usr/share/ZendFramework/library/"
    image_width = 1024
    image_height = 600
    updatetime = 5
    shadow = 0
    background  = "resources/backgrounds/background.jpg"
  6. playusb ist speziell für meinen Bilderrahmen. Hier musst Du natürlich eintragen, was für Deinen Rahmen funktioniert. Hier eine infoframe.php, die das Bild im Browser (http://host.des.webservers/infoframe.php) anzeigt (Fernbedienungskram gelöscht.).
    PHP:
    <?php
    
    // includes & settings
    error_reporting (E_ERROR);
    $loc = setlocale (LC_ALL, 'de_DE.UTF8', 'de_DE', 'de', 'ge');
    require_once 'library/tools.php';
    require_once 'library/dbconn.php';
    require_once 'library/iplugin.php';
    require_once 'library/roundbox.php';
    
    // read config 
    $config = parse_ini_file ("config.ini", true);
    $sysconfig = $config['System'];
    if ($sysconfig['zendfw_path'] != "")
    	set_include_path (get_include_path () . PATH_SEPARATOR . $sysconfig['zendfw_path']);
    
    // test database connection
    $dbconn = DbConnection::connect ($sysconfig['db_host'], $sysconfig['db_name'], $sysconfig['db_user'], $sysconfig['db_password']);
    if (!$dbconn) die ('keine Datenbankverbindung möglich: ' . mysql_error ());
    
    // test directory cache
    if (!file_exists ('cache/')) mkdir ('cache');
    	
    // some more settings
    $image_width = $sysconfig['image_width'];
    $image_height = $sysconfig['image_height'];
    
    // Background image
    $bgimagefile = $sysconfig['background'];
    
    $im = ImageCreateTrueColor ($image_width, $image_height);
    $bg = @ImageCreateFromJpeg ($bgimagefile);
    imagecopyresampled ($im, $bg, 0, 0, 0, 0, $image_width, $image_height, imagesx ($bg), imagesy ($bg));
    
    // schatten auf background
    if ($sysconfig['shadow'] == 1)
    {
    	ImageAlphaBlending ($im, TRUE);
    	$xy = 0; 
    	$thick = 250;
    	while ($xy < $thick)
    	{
    		ImageLine($im, 0, $image_height-$xy , $image_width, $image_height-$xy, ImageColorResolveAlpha ($im, 0, 0, 0, ($xy-$thick - 2) / 2));
    		ImageLine($im, 0, $xy , $image_width, $xy, ImageColorResolveAlpha ($im, 0, 0, 0, $xy / 2));
    		ImageLine($im, $image_width-$xy , 0, $image_width-$xy, $image_height, ImageColorResolveAlpha ($im, 0, 0, 0, ($xy-$thick - 2) / 2));
    		// ImageLine($im, $xy, 0 , $xy, $image_height, ImageColorResolveAlpha ($im, 0, 0, 0, $xy / 2));
    		$xy++;
    	}
    }
    
    // load and init plugins (calls, weather, calendar, mails...)
    // every ini [group] except "System" is used as class name for a plugin and instantiated
    $plugins = array ();
    foreach ($config as $key=>$elem)
    {
    	// überarbeiten, das kann in ein if
    	if ($key != "System")
    	{
    		require_once 'plugins/' . $key . '.php';
    		$plugins[$key] = new $key ($dbconn, $config[$key]);
    	}
    }
    
    // set $udatePlugins auf true wenn last update is older than config:updatetime minutes
    $updateInterval = $sysconfig['updatetime'];
    if (($updateInterval == null) || ($updateInterval == "")) $updateInterval = 5;
    $updatePlugins = false; 
    $query  = "SELECT value FROM if_system where name = 'last_update'";
    $result = mysql_query ($query, $dbconn);
    if (mysql_num_rows ($result) > 0)
    {
    	$row = mysql_fetch_assoc ($result);
    	$diff_seconds = (time () - $row['value']);
    	if ($diff_seconds >= ($updateInterval * 60))
    	{
    		$updatePlugins = true;
    		// update last_update date
    		$query = "UPDATE if_system SET value = '" . time() . "' WHERE name = 'last_update'";
    		mysql_query ($query, $dbconn) or die ('Error, insert query failed: ' . mysql_error ());
    	}
    }
    else
    {
    	$updatePlugins = true;
    	// insert last_update date
    	$query = "INSERT INTO if_system (name, value) VALUES ('last_update', '" . time() . "')";
    	mysql_query ($query, $dbconn) or die ('Error, insert query failed: ' . mysql_error ());
    }
    mysql_free_result ($result);
    
    
    // Output
    // styles
    $style = array (); 
    $style['textcolor'] = ImageColorAllocate ($im, 255, 255, 255);
    $style['yellow'] = ImageColorAllocate ($im, 255, 255, 0);
    $style['red'] = ImageColorAllocate ($im, 255, 0, 0);
    $style['font'] = 'resources/calibri.ttf';
    $style['fontb'] = 'resources/calibrib.ttf';
    
    // current vertical offset for main info area. Must be increased by each plugin writing to this area,
    // so that following plugins knows correct y position to start output from
    $currentYOffset = 160; 
    
    // Do output of all plugins (calls, weather, calendar, mails...) with one exception:
    // If the phone is currently ringing, skip displaying other plugins to show the name/number
    // of the caller as fast and huge as possible and don't waste time/space for weather, mails etc...
    if (($plugins['CallsPlugin']) && ($plugins['CallsPlugin']->isPhoneRinging ()))
    	$plugins['CallsPlugin']->doOutput ($im, $style, $updatePlugins, $currentYOffset);
    else
    {
    	// print all plugins in the order as they are in config
    	foreach ($plugins as $plugin)
    	{
    		$plugin->doOutput($im, $style, $updatePlugins, $currentYOffset);
    	}
    	// check again for active incomming call (maybe we just get one in the meantime while updating/printing all other plugins)
    	// if so don't output any image to prevent overwriting the (incoming call) image already sent to another request
    	if (($plugins['CallsPlugin']) && ($plugins['CallsPlugin']->isPhoneRinging ())) die ();
    }
    
    // print date & time
    $opt = array('width' => 600, 'align' => ALIGN_LEFT);
    imagettftextboxopt($im, 72, 0, 20, 25, $style['textcolor'], $style['font'], strftime ("%H:%M"), $opt);
    imagettftextboxopt($im, 28, 0, 20, 95, $style['textcolor'], $style['font'], strftime ("%A, %d. %B %Y"), $opt);
    imagesetthickness($im, 2);
    imageline ($im, 15, 140, $image_width - 20, 140, $style['textcolor']);
    header("Content-type: image/jpeg");
    ImageJpeg ($im);
    ImageDestroy ($im);
    
    DbConnection::disconnect();
    ?>

Gruß, Michael...
 
Kostenlos!

Statistik des Forums

Themen
248,886
Beiträge
2,304,047
Mitglieder
378,567
Neuestes Mitglied
toenizz