InfoFrame: Digitaler Bilderrahmen auf dem Raspberry PI

marvin424

Mitglied
Mitglied seit
28 Jun 2009
Beiträge
287
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

anbei eine kleine Anleitung, wie Ihr euren InfoFrame auf einem Raspberry Pi zum Laufen bringt (wie gewünscht in einem neuen Thema).
Ich denke hier ist ein guter Zeitpunkt mich bei den Entwicklern des InfoFrame-Projekts und allen, die Plugins dazu entwickelt und verbessert haben, zu bedanken.

Hier geht's zum original Thread:
InfoFrame: Digitaler Bilderrahmen (Anzeige von Anrufen, E-Mails, Termine, Wetter...)
Digitiale Bilderrahmen für das "InfoFrame"-Projekt

Hier eine sehr schöne Seite von IPPF-User JL3, die viele nützliche Informationen über die Einrichtung der unterschiedlichen Raspberry Pi-Modelle enthält:
Raspberry Pi einrichten

Meine Konfiguration:
  • Raspberry Pi mit InfoFrame
  • Callmonitor listen2fritz auf dem Raspi
  • Bilderrahmen Samsung SPF-107H
  • Ausgabe erfolgt mittels dem Programm "playusb", schickt das Bild via USB zum Rahmen.
  • Temperatursensor mit DS18B20
  • IR-Empfänger TSOP31238 für eine Fernbedienung
  • Optokoppler CPC1020N um Garagentore oder ähnliches zu steuern

Anhang anzeigen InfoFrame.pdf

InfoFrame:
  • Webserver läuft auf dem Raspi
  • Infoframe wird minütlich per cron aufgerufen oder bei Bedarf (eingehende Anrufe/Fernbedienung) direkt von LIRC oder listen2fritz.

Fernbedienung:
  • In der infoframe.php werden folgende Parameter ausgewertet:
    1. KEY_PLAY: Startet die Slideshop (SlidePlugin.php)
    2. KEY_STOP: Stoppt die Slideshow (normaler Modus)
    3. KEY_C: Löscht die missed calls
  • Die Parameter werden folgendermassen übergeben: $ wget "localhost/infoframe.php?remote=KEY_C" -qO /dev/null
  • Bei Benutzung einer Fernbedienung werden diese in /etc/lirc/lircrc definiert, siehe letzten Punkt.

listen2fritz:
  • horcht auf dem Port 1012 der Fritzbox
  • schreibt Anrufe in die Tabelle if_call_log und ruft infoframe.php auf, damit die Anrufinformationen sofort angezeigt werden.
  • benutzt if_phonebook als Telefonbuch
  • if_phonebook wird einmal täglich per cron mittels /var/www/GoogleContactsUpdate.php mit meinen Google Kontakten aktualisieren. Die Bilder der Kontakte liegen in /var/www/cache/google_contacts_images
  • GoogleContactsUpdate.php schreibt die Geburtstage in if_calendar, da die neue CalendarApi diese nicht anzeigt.
  • der LogEvent wurde um Type und Image erweitert.
  • Abschnitt [fritzboxfon] in der config wurde um die Option POTS=Meine Nummer erweitert. Damit wird der Ausgabe POTS eine Nummer zugeordnet.
  • Abschnitt [log:mysql] in der config um lognumber erweitert. Ich möchte nur bestimmte Nummern in der if_call_log loggen. Wer mehrere Nummern Loggen will muss entsprechend mehrere Sektionen [log:mysql] definieren.
  • Abschnitt [notify:script] Option call um die parameter in:request, in:connect in:disconnect und in:cancel und das gleiche für out:* erweitert. Die Parameter, die man auch vom Callmonitor in Freetz kennt.

Raspi einrichten:
  1. wheezy auf dem Raspi installieren
    Eine 4GB SD-Karte reicht, könnte aber knapp werden, mit 16GB ist man auf der sicheren Seite. Eine Class 10 Karte macht der Raspi deutlich schneller, hier würde ich nicht sparen.
    http://downloads.raspberrypi.org/raspbian_latest
    .
  2. Konfiguration
    Bei ersten Start wird die Config automatisch aufgerufen, ansonsten mit $ rapsi-config manuell starten.
    • 1) Expand FileSystem
    • 2) Change User Password
    • 3) Enable Boot to Desktop/Scratch -> Console Text console, ...
    • 4.I1) Change Locale -> de_DE* -> default = de_DE.UTF-8
    • 4.I2) Change Timezone -> Europe -> Berlin
    • 4.I3) Change Keyboard -> Generic 105 Key -> Other -> German
    • 8.A2) Hostname
    • 8.A4) SSH enable
    • Ab Kernel 3.18.3: dtoverlay=lirc-rpi in /boot/config.txt einfügen, sonst geht lirc nicht
    $ reboot
    Ab hier kann man bereits mit PUTTY auf den Raspi, das macht die Sache etwas einfacher, da man mit copy und paste arbeiten kann.
    .
  3. root Passwort setzen (opt.)
    Den Schritt müsst ihr selbst wissen. Ich hasse das ganze sudo Gedöhns, man muss als root halt ein weinig mehr aufpassen bevor man auf ENTER drückt.
    $ sudo passwd root
    exit and login als root
    .
  4. nützliche Utilities (opt.)
    $ apt-get install joe
    $ apt-get install mc
    .
  5. System auf den neuesten Stand bringen (opt.)
    $ apt-get update
    $ apt-get upgrade
    $ apt-get -u dist-upgrade
    .
  6. neue Firmware/Kernel/etc (opt.)
    $ rpi-update
    $ reboot
    .
  7. secure Shell mit public Key (opt.)
    $ mkdir ~/.ssh
    $ chmod 700 ~/.ssh
    $ touch ~/.ssh/authorized_keys
    $ chmod 600 ~/.ssh/authorized_keys

    in ~/.ssh/authorized_keys kommt der public key, z.B. "ssh-rsa AAAA...blah...blah...blah...KIUw== rsa-key-20150101"
    ssh mit putty testen, dann passwordlogin abschalten
    $ joe /etc/ssh/sshd_config
    Code:
    PasswordAuthentication no
    .
  8. Wlan einrichten
    $ wpa_passphrase eure_SSID euer_passwort

    damit wpa-psk generieren, denn wir wollen keine Passwörter im Klartext.

    $ joe /etc/network/interfaces
    Code:
    auto lo
    iface lo inet loopback
    
    allow-hotplug eth0
    iface eth0 inet dhcp
    
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    wpa-ap-scan 1
    wpa-scan-ssid 1
    wpa-key-mgmt WPA-PSK
    wpa-proto RSN WPA
    wpa-pairwise CCMP TKIP
    wpa-group CCMP TKIP
    wpa-ssid "eure_SSID"
    wpa-psk oben generierte_wpa_psk

    $ chmod 600 /etc/network/interfaces

    Der Raspi baut eine abgebrochene Verbindung nicht automatisch wieder auf. Abhilfe schafft:
    $ mv /etc/ifplugd/action.d/ifupdown /etc/ifplugd/action.d/ifupdown.original
    $ cp /etc/wpa_supplicant/ifupdown.sh /etc/ifplugd/action.d/ifupdown

    Achtung: Auch wenn es bei mir nicht der Fall ist, wurde berichtet, dass diese Maßnahme rückgängig gemacht werden muss, wenn man den Raspberry Pi wieder per Ethernet-Anschluss ins Netzwerk holen will: Im Verzeichnis /etc/ifplugd/action.d/ mit rm ifupdown die WLAN-Version der Datei löschen und mit cp ifupdown.original ifupdown die erstellte Sicherheitskopie zurückspielen, Siehe auch http://www.gieseke-buch.de/raspberrypi/wlan-verbindung-automatisch-wiederherstellen
    Alternative:
    crontab -e
    Dort folgende Zeile einfügen:
    * * * * * /sbin/ifup wlan0

    Danke an JL3 für den Hinweis
    .
  9. Den beliebten EDIMax Wlan Stick davon abhalten schlafen zu gehen (opt.)
    $ joe /etc/modprobe.d/8192cu.conf
    Code:
    options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
    .
  10. eigenen Timeserver der Fritzbox benutzen (opt.)
    Fritzboxeinstellung: Heimnetz->Netzwerk->Netzwerkeinstellungen->FRITZ!Box als Zeitserver im Heimnetz bereitstellen=yes
    $ joe /etc/ntp.conf
    Code:
    ...
    # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
    # pick a different set every time it starts up.  Please consider joining the
    # pool: <http://www.pool.ntp.org/join.html>
    server fritz.box iburst
    server 0.debian.pool.ntp.org iburst
    server 1.debian.pool.ntp.org iburst
    server 2.debian.pool.ntp.org iburst
    server 3.debian.pool.ntp.org iburst
    ....
    Danke an JL3 für den Hinweis
    .
  11. gpio installieren (opt. für Schalter mit Optokoppler)
    $ cd /usr/src
    $ git clone git://git.drogon.net/wiringPi
    $ cd wiringPi
    $ ./build

    Defaultwert nach Systemstart
    $ joe /etc/rc.local
    Code:
    /usr/local/bin/gpio write 5 1
    /usr/local/bin/gpio mode 5 out


InfoFrame einrichten:

  1. Webserver apache2
    $ usermod -a -G www-data www-data
    $ apt-get install apache2

    Ich möchte nicht, dass man die config.ini sehen darf.
    $ joe /etc/apache2/apache2.conf
    Code:
    <Files ~ "config.ini">
        Order allow,deny
        Deny from all
        Satisfy all
    </Files>

    [NOPARSE]http://Raspi_hostname/[/NOPARSE] sollte bereits funktionieren.
    .
  2. php5
    $ apt-get install php5 php5-curl php5-dev php5-gd php5-imap php5-mysql
    .
  3. MySQL (bei der Installation auf jeden Fall ein root-Passwort setzen)
    $ apt-get install mysql-server mysql-client
    $ apt-get install phpmyadmin

    [NOPARSE]http://Raspi_hostname/phpmyadmin/index.php[/NOPARSE]
    Datenbank "InfoFrame" anlegen (Achtung, der Name ist Case Sesitive)
    .
  4. google-api-php-client-master und ZendFramework-1.12.10
    ($ apt-get install zendframework funktioniert nicht, Version zu alt)
    $ cd ~
    $ wget [NOPARSE]https://packages.zendframework.com/releases/ZendFramework-1.12.10/ZendFramework-1.12.10.tar.gz[/NOPARSE]
    $ wget [NOPARSE]https://codeload.github.com/google/google-api-php-client/zip/master[/NOPARSE] -O master.zip
    $ cd /usr/share
    $ tar xzf ~/ZendFramework-1.12.10.tar.gz
    $ chown root.root ZendFramework-1.12.10 -R
    $ mkdir ZendFramework
    $ ln -s ZendFramework-1.12.10 ZendFramework
    $ unzip ~/master.zip
    .
  5. playusb (für Samsung Bilderrahmen)
    $ cd /usr/src
    $ tar xzf ~/playusb.tar.gz
    $ apt-get install libusb-dev
    $ apt-get install libjpeg8-dev
    $ make
    $ mv playusb /usr/local/bin
    $ chmod u+s /usr/local/bin/playusb
    .
  6. udev (in Verbindung mit playusb)
    $ joe /etc/udev/rules.d/11-photoframe.rules
    Code:
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2012", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2013", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2033", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2034", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2035", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2036", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2039", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    SUBSYSTEMS=="usb", ACTION=="add", ATTR{idVendor}=="04e8", ATTR{idProduct}=="2040", RUN+="/usr/local/bin/playusb -j /var/www/cache/info.jpg"
    .
  7. infoframe
    $ cd /var/www
    $ tar xzf ~/infoframe.tar.gz

    config.ini editieren

    [NOPARSE]http://Raspi_hostname/infoframe.php[/NOPARSE]
    [NOPARSE]http://Raspi_hostname/cache/info.jpg[/NOPARSE]
    .
  8. Infoframe aus crontab minütlich ausführen
    $ joe /etc/crontab
    Code:
    # minuetlich aufrufen
    * * * * * root wget localhost/infoframe.php -qO /dev/null
    .
  9. listen2fritz (meine Änderungen)
    $ cd /usr/src
    $ tar xzf ~/listen2fritz-m424-0.9.4.tar.gz
    $ apt-get install libreadline6-dev
    $ apt-get install libmysqlclient-dev
    $ ./configure
    $ make

    kein make install: setzt eine SUSE Konfiguration voraus und funktioniert nicht korrekt
    $ mv src/listen2fritz /usr/local/bin
    $ mv etc/listen2fritz.conf /etc/listen2fritz.conf

    $ joe /etc/listen2fritz.conf
    Passwörter, Telefonnummern, etc. editieren.

    Alte Anschlüsse liefern statt der angerufenen Nummer POTS. Im Abschnitt [fritzboxfon] in der config kann mit der Option POTS=Nummer eine Telefonnummer zugewiesen werden.
    Damit nur Anrufe auf bestimmten Nummern mit MySQL geloggt werden, wurde der Abschnit [log:mysql] in der config um die Option lognumber=Nummer erweitert. Damit werden nur diese Nummer geloggt.
    Achtung: der Parameter lognumber ist zwingend erforderlich. Sollen mehrere Nummern geloggt werden, dann müssen entsprechend mehrere Abschnitte [log:mysql] definiert werden.
    Abschnitt [notify:script] wurde die Option call um die parameter in:request, in:connect in:disconnect und in:cancel und das gleiche für out:* erweitert. Die Parameter, die man auch vom Callmonitor in Freetz kennt.
    Achtung: normalerweise werden die Nummern bei lognumber im Abschnitt Abschnit [log:mysql] und called_number im Abschnitt [notify:script] ohne Vorwahl eingegeben. User jnappert berichtet, das bei Kabel Deutschland die Vorwahl mit angegeben werden muss, danke Jörg. Was bei Euch eingetragen werden muss könnt Ihr im Logfile /var/log/listen2fritz.log sehen.

    mit dem Eintrag in der listen2fritz.conf:
    Code:
       [lookup:mysql] 
        host=localhost
        username=root
        password=pass
        database=InfoFrame
        table=if_phonebook
    wird if_phonebook als Telefonbuch benutzt. if_phonebook kann per cron mittels /var/www/GoogleContactsUpdate.php mit Deinen Google Kontakten aktualisiert werden. Die Bilder der Kontakte liegen in /var/www/cache/google_contacts_images.

    listen2fritz automatisch starten lassen
    $ joe /etc/rc.local
    Code:
    [...]
    /usr/local/bin/listen2fritz
    Tabellen werden von InfoFrame angelegt.
    .
  10. GoogleContactsUpdate.php einmal am Tag per cron ausführen
    Holt die Google Kontakte und schreibt sie nach if_phonebook.
    Geburtstage werden nach if_calender geschrieben.
    $ joe /etc/crontab
    Code:
    00 1 * * * root wget localhost/GoogleContactsUpdate.php -qO /dev/null
    UPDATE: OAuth 1.0 has been officially deprecated as of April 20, 2012 and will stop being supported on May 5, 2015.

    Es wird eine Client-ID, https://console.developers.google.com/project benötigt, falls noch nicht vorhanden, auf https://console.developers.google.com/project/infoframe-1/apiui/credential eine neue erstellen.
    1.jpg

    "Installiete Anwendung" und "Sonstige" auswählen
    2.jpg

    Danach seht ihr dann eure Client-ID und -Schlüssel.
    3.jpg

    Diese bitte in die config.ini eintragen.
    Code:
    ;für google contacts update
    cny_prefix = "+49"
    cty_prefix = "0211"
    client_id = "XXXX"
    client_secret = "XXXXX"
    access_token = "xxxxxxxxxxx"
    refresh_token = "xxxxxxxxxx"

    Jetzt brauchen wir nur noch die Token, dazu sind die Hilfsdateien Get_Token1.php und Get_Token2.php gedacht.

    $ php Get_Token1.php liefert sowas:

    [NOPARSE]Diese URL aufrufen: https://www.google.com/device
    Diesen Code eingeben: YYYY-YYYY
    In Get_Token2.php $device_code = "XXXXXXXXXXX"[/NOPARSE]


    im Browser die URL aufrufen, evtl. einloggen und den Code YYYY-YYYY eingeben und bestätigen.
    4.jpg

    Dann in Get_Token2.php die Variable $device_code anpassen und aufrufen.
    $ php Get_Token2.php sollte dann die benötigten access- und refresh-token ausgeben (in dieser Reihenfolge).
    .
  11. Ausgabe über Kodac W1020
    in der Datei infoframe.php folgenden Code:
    PHP:
    ImageJpeg ($im, 'cache/info.jpg', 90);
    ImageDestroy ($im);
    
    exec ("playusb -j /var/www/cache/".$frame_mode.".jpg");
    tauschen gegen
    PHP:
    ImageJpeg ($im, 'cache/info.jpg', 90);
    ImageDestroy ($im);
    
    // Feed aktualisieren
    $feed='<?xml version="1.0"?>
    <rss version="2.0"
    xmlns:media="http://search.yahoo.com/mrss/"
    >
    <channel>
    <title>InfoFrame</title>
    <link>http://infoframe/</link>
    <description>InfoFrameFeed</description>
    <ttl>1</ttl>
    <item>
    <title>IF</title>
    
    <link>http://infoframe/cache/'.$frame_mode.'.jpg</link>
    
    <description>&lt;img src=&quot;http://infoframe/cache/'.$frame_mode.'.jpg&quot; alt=&quot;&quot; /&gt;</description>
    <guid isPermaLink="false">'.md5(uniqid(mt_rand(), true)).'</guid>
    <media:content url="'.$frame_mode.'.jpg" type="image/jpeg" />
    <media:title>Bild1</media:title>
    </item>
    </channel>
    
    </rss>';
    
    $file = fopen("cache/media.rss", "w");
    $geschrieben = fwrite($file, $feed);
    fclose($file);

    Raspi_hostname muss natürlich angepasst werden, dem Kodac dann die [NOPARSE]http://Raspi_hostname/cache/media.rss[/NOPARSE] einstellen.
    .
  12. Temperatursensor mit DS18B20, Beschaltung siehe PDF

    http://www.sbprojects.com/projects/raspberrypi/temperature.php
    $ modprobe w1-gpio
    $ modprobe w1-therm

    in /etc/modules einfügen
    $ joe /etc/modules
    Code:
    w1-gpio
    w1-therm
    .
  13. Fernbedienung mit TSOP31238, Beschaltung siehe PDF
    GPIO Pin 2 +5 ----- Pin2
    GPIO Pin 6 GND ----- Pin1
    GPIO Pin 8 GPIO14 ----- Pin3

    $ apt-get install lirc
    ... weitere Installation von LIRC findest Du im Netz.

    Datei /etc/lirc/lircrc:
    Code:
    begin
        prog = irexec
        button = KEY_1
        config = /root/garage.sh
        repeat = 0
    end
            
    begin
        prog = irexec
        button = KEY_PLAY
        config = wget "localhost/infoframe.php?remote=KEY_PLAY" -qO /dev/null
        repeat = 0
    end
            
    begin
        prog = irexec
        button = KEY_STOP
        config = wget "localhost/infoframe.php?remote=KEY_STOP" -qO /dev/null
        repeat = 0
    end
    
    begin
        prog = irexec
        button = KEY_C
        config = wget "localhost/infoframe.php?remote=KEY_C" -qO /dev/null
        repeat = 0
    end

Ich hoffe, ich habe an alles gedacht.

P.S. vergesst nicht den Callmonitor auf der Box auch einzuschalten: #96*5*

Achtung: Die Dateien infoframe_0.tar.gz und infoframe_1.tar.gz werden nicht mehr aktualisiert!
 

Anhänge

  • infoframe_1.tar.gz
    1.1 MB · Aufrufe: 125
  • listen2fritz-m424-0.9.4.tar.gz
    212.4 KB · Aufrufe: 88
  • playusb.tar.gz
    2.7 KB · Aufrufe: 56
  • infoframe_0.tar.gz
    1.7 MB · Aufrufe: 162
  • infoframe_PDO_1.tar.gz
    1.4 MB · Aufrufe: 91
  • infoframe_PDO_0.tar.gz
    1.5 MB · Aufrufe: 101
  • infoframe_PDO_2.tar.gz
    32.7 KB · Aufrufe: 46
Zuletzt bearbeitet:
Die Plugins:
Hier ein paar Erklärungen zu den Plugins, die meisten dürften bekannt sein, einige Funktionen sind hinzugekommen, einige weggefallen.

  • config.ini Section [SYSTEM]

    [SYSTEM]
    db_host = "localhost"
    db_name = "InfoFrame"
    db_user = "DB_User"
    db_password = "secret"

    zendfw_path = "/usr/share/ZendFramework/library/"
    google_api_path = "/usr/share/google-api-php-client-master/"

    ;
    image_width = 1024
    image_height = 600

    ; updateintervall der Plugins (Mail, Kalender, Wetter...) in Minuten
    updatetime = 5

    shadow = 1
    background = "resources/backgrounds/background.jpg"

    ;für GoogleContactsUpdate.php
    cny_prefix = "+49"
    cty_prefix = "Vorwahl mit Null"

    ;google_user = "user" gibt es nicht mehr
    ;google_pass = "pass" gibt es nicht mehr
    client_id = "xxxxxxxxxxxxxx.apps.googleusercontent.com"
    client_secret = "xxxxxxxxxxxxxx"
    access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    refresh_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"


    .
  • BenzinPlugin
    howto benzin.jpg

    Holt die Benzinpreise von www.clever-tanken.de.
    Mögliche Sorten sind: "Super E5", "Super E10", "SuperPlus", "Diesel", "PremiumDiesel", "Biodiesel", "LKW-Diesel", "Autogas", "Erdgas", "Pflanzenöl", "Bioethanol", "Zweitakt", "AdBlue"
    Radiusmöglichkeiten in km: 1, 2, 5, 10, 15, 20, 25
    Wird in der config.ini der Ort mit lat und lon definiert, so wird ort=PLZ ignoriert.

    Die Parameter der config.ini:
    [BenzinPlugin]
    max_displayed_stations = 2
    sorte = "Diesel"
    lat = "51.000000"
    lon = "9.000000"
    ort = "51149"
    radius = 5
    .
  • CalendarPlugin
    howto calendar.jpg

    Termine aus Google Kalender anzeigen, Voraussetzung: Eine Project-ID, https://console.developers.google.com/project
    Anleitung auf http://www.ip-phone-forum.de/showthread.php?t=206194&page=110&p=2051933&viewfull=1#post2051933 (Kalender freigeben nicht vergessen).
    Es werden alle aktiven Kalender angezeigt, da die Farben aber nicht korrekt ausgelesen werden, können die mit calendar_1 und color_1 definiert werden. Also Kalender mit Name calandar_1 bekommt color_1 usw.
    Öffentliche Kalender werden mit calendar_ID_1 und calendar_ID_color_1 definiert.

    Die Parameter der config.ini:
    [CalendarPlugin]
    client_id = ""
    account_name = ""
    project_name = ""
    key_file= "cache/keyfile.p12"

    calendar_1 = "Name1"
    color_1 = "#22b14c"
    calendar_2 = "Name2"
    color_2 = "#0000a0"
    calendar_3 = "Name3"
    color_3 = "#ff0000"

    calendar_ID_1 = "de.german#[email protected]"
    calendar_ID_color_1 = "#ffff80"

    ; für Termine, die "Geburtstag" enthalten, wird "calendar/birth.png" als Icon benutzt
    termin_1 = "Geburtstag"
    icon_1 = "calendar/birth.png"

    ; für Termine, die "Restm" enthalten, wird "calendar/tonne_schwarz.png" als Icon benutzt
    termin_2 = "Restm"
    icon_2 = "calendar/tonne_schwarz.png"

    number_of_days = 14
    number_of_lines = 7
    .
  • CallsPlugin
    howto call missed.jpg howto call incomimng.jpg howto call active.jpg

    Falls definiert, werden eingehende, aktive und verpasste Anrufe angezeigt.

    Die Parameter der config.ini:
    [CallsPlugin]
    max_displayed_missed_calls = 3
    ; Verpasste Anrufe werden maximal zwei Tage angezeigt
    max_display_age_day=2
    delete_after_max_display_age = 1 ;Anrufe werden nach max_display_age_day gelöscht
    delete_after_max_display_age = 0 ;oder gar nicht gesetzt: Anrufe werden nach max_display_age_day nicht angezeigt, verbleiben aber in der Datenbank
    .
  • EFAPlugin
    howto EFA.jpg

    Elektronische Fahrplan Auskunft
    Es wird eine XML Datei vom EFA-Server heruntergeladen und ausgewertet, z.B. http://efa.vrr.de/vrr/XSLT_DM_REQUE...XML&place_dm=Neuss&type_dm=stop&useRealtime=1.
    Bei den Parametern EFA_City und EFA_Station muss ein wenig experimentiert werden. VVR kann mit Düsseldorf nichts anfangen, versteht aber Duesseldorf, der MVV hingegen kann mit dem ue nichts tun, versteht aber "München, Hbf". Am besten auf der Seite des jeweiligen Verkehrsverbundes testen.
    EFA_line_regex und EFA_platform_regex sind jetzt als reguläre Ausdrücke implementiert, nach dem Vorbild vom MailPlugin.
    Fehlerhafte Werte für EFA_City und EFA_Station werden nicht abgefangen.

    Die Parameter der config.ini:
    [EFAPlugin]
    EFA_url = "http://efa.vrr.de/vrr/"
    EFA_City = "Duesseldorf"
    EFA_Station = "Eller Mitte"
    EFA_max_lines = 3
    EFA_line_regex = "/(^U)|(^S)|(715)/"
    EFA_platform_regex = "/2/"
    .
  • FeedPlugin
    howto Feed.jpg

    Zeigt RSS-Feeds an

    Die Parameter der config.ini:
    [FeedPlugin]
    feed_url_1 = "http://www.tvspielfilm.de/tv-programm/rss/heute2015.xml"
    max_age_in_minutes_1 = 1440
    max_displayed_items_1 = 10
    .
  • MailPlugin
    howto mail.jpg

    Email Anzeigen, mit den Parametern from_filter_regex_1 und subject_filter_regex_1 können regulärer Ausdrücke zum Filtern der Mails definiert werden. Die Mails auf welche der reguläre Ausdruck passt werden NICHT angezeigt.

    Die Parameter der config.ini:
    [MailPlugin]
    max_displayed_mails = 3
    server_1 = ""
    server_port_1 = 993
    server_options_1 = "/ssl"
    user_1 = ""
    password_1 = ""
    color_1 = #A32929
    from_filter_regex_1 = "/(spamverdacht)/i"
    subject_filter_regex_1 = "/(viagra|casino|pharmacy)/i"
    .
  • PaketPlugin
    howto paket.jpg

    Zeigt den Status der Dienstleister DHL, UPS, GLS und Hermes an. Trackingnummern werden mit Hilfe von http://Raspi_hostname/plugins/tracking.php eingegeben.

    Die Parameter der config.ini:
    [PaketPlugin]
    max_displayed_trackings = 10
    ; Tracking wird maximal zwei Tage angezeigt
    max_display_age_day=2
    .
  • Slideshow
    Im Modus "Slide" wird bei jedem doupdate() (updatetime) ein neues Bild angezeigt. Die Verzeichnisse der Bilder werden mit slideshow_path_* definiert.

    Die Parameter der config.ini:
    [Slideshow]
    slideshow_path_1 = "/var/www/Pictures/P1/"
    .
  • SonnenPlugin
    howto sonnen.jpg

    Ausgabe von Sonnenauf- und Untergang. Mit dem Parameter moon=1 wird die Mondphase angezeigt.
    howto moon.jpg

    Die Parameter der config.ini:
    [SonnenPlugin]
    latitude = "51.000000"
    longitude = "9.000000"
    timezone = "Europe/Berlin"
    moon = 1
    .
  • TabellePlugin
    howto tabelle.jpg

    Anzeige der Bundesligatabelle

    Die Parameter der config.ini:
    [TabellePlugin]
    .
  • TemperaturPlugin
    howto temp.jpg

    Temperatur eines Sensors wird mit Pre- und Suffix wird an x, y in textsize ausgegeben.

    Die Parameter der config.ini:
    [TemperaturPlugin]
    wire_Dir = "/sys/bus/w1/devices/"
    exclude_Dir = "w1_bus_master1"
    Sensor_1 = "28-000005ff2686"
    Sensor_Prefix_1 = "T: "
    Sensor_Suffix_1 = " °C"
    Sensor_x_pos_1 = 500
    Sensor_y_pos_1 = 100
    Sensor_textsize_1 = 32
    .
  • TickerPlugin
    howto ticker.jpg

    Liveticker für verschiedene Liga. Twitter Developer Key notwendig https://apps.twitter.com/

    Die Parameter der config.ini:
    [TickerPlugin]
    service.twitter.oauth.oauth_token = ""
    service.twitter.oauth.oauth_token_secret = ""
    service.twitter.consumerKey = ""
    service.twitter.consumerKey_secret = ""
    ticker_screen_name_1 = "kicker_bl_li"
    ticker_title_1 = "Bundesliga"
    ticker_max_age_in_minutes_1 = 180
    .
  • WeatherPlugin
    howto wetter.jpg

    Für die Wetterdaten, das Wetter wird alle update_weather Minuten aktualisiert.

    Die Parameter der config.ini:
    [WeatherPlugin]
    city = "Ulm"
    api_key = ""
    update_weather = 30
 
Zuletzt bearbeitet:
Danke, daß du meinen Wunsch so schnell erfüllt hast.

Einige Fragen/Ergänzungswünsche hätte ich da noch:
1. Wie groß muß die SD-Karte min. sein?
2. Ein(ige) Beispiel Bild(er) wäre auch nicht schlecht.
3. Geht auch die Anzeige über HDMI? Oder brauche ich da noch was zusätzlich?
4. Kann ich mit listen2fritz auch mehrere FB's gleichzeitig abfragen?
 
Zuletzt bearbeitet:
Hallo Eisbärin,

  1. Code:
    root@InfoFrame:~# df -h
    Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
    rootfs        15G    3,7G  11G    27% /
    Eine 4G Karte sollte reichen, wird aber mit wachsenden Logs und anderen Aufgaben des PIs bestimmt schnell eng.
    Mit 16G bist Du wahrscheinlich auf der sicheren Seite. Wichtiger ist hier die Geschwindigkeit.

  2. Einen, den ich für meinen Sohn gebaut habe. Die Stromversorgung des PIs übernimmt der Rahmen.
    Von Ralf0815

  3. Das fragst Du? Du hast doch Ralf0815 geholfen das hinzubekommen ;)

  4. Warum nicht, es ist zwar nicht dazu ausgelegt, aber mit ein wenig Anpassung der Sourcen könnte man es einfach mehrmals mit unterschiedlichen Configs starten.

EDIT:
Habe Punkt 4 mal ausprobiert, man braucht noch nicht mal die Sourcen zu ändern, listen2fritz benutzt als PID-File den Dateinamen.pid. Also einfach einen Link von listen2fritz auf listen2fritz_test erstellen und listen2fritz_test mit dem Parameter -c eine eigene config mitgeben. Zumindest laufen beide Prozesse nebeneinander, ob es letztendlich auch funktioniert kann ich mangels zweiter Fritz.Box nicht testen.

Gruß, Michael...
 
Zuletzt bearbeitet:
Hallo Michael,

erstmal Danke für die klasse Anleitung.
Da hab ich den alten Kodak W1020 direkt wieder aus dem Keller hochgeholt.

Die Erstellung der Bilddatei (info.jpg) läuft auf dem Raspi einwandfrei.
Im Browser kann ich das Bild auch problemlos anzeigen lassen. (hhtp://IP-Raspi/cache/info.jpg)

Aber irgendwie habe ich noch einen Denkfehler gehe ich mal von aus.
Ich erinnere mich dumpf, dass ich früher mit der Fritzbox eine Serveradresse mit Port angeben musste um das Bild als Photo-RSS angezeigt zu bekommen.
Auf der Fritzbox wurde die info.php doch noch weiterverarbeitet oder hab ich da was falsch im Kopf?

Vielleicht hat ja jemand noch einen Denkanstoß für mich oder sogar die Lösung.

Danke & Gruss
Silvio
 
Kodak W1020

Hallo Silvio,

weil die Fritzbox /mit freetz) als einzige über einen cron verfügt hat, hat die Box den Webserver in regelmäßigen Abständen angestoßen und das Bild runtergeladen. Der Rahmen hat dann auf die Box zugegriffen und damit es kein Kollision mit dem normalen Webserver der Box gab, wurde der auf den Port 5050 gelegt.

Jetzt, mit Raspi, hat der Webserver sozusagen seinen eingenen cron, du kannst also diesen Schritt übergehen und Deinen Bilderrahmen direkt auf den Raspi zugreifen lassen. Du musst halt auf dem Raspi ein entsprechendes RSS generieren, irgendwo hast Du das ja früher auch schon machen müssen, am besten da, wo in ifoframe.php die Ausgabe gemacht wird, so etwa in der Art...

PHP:
[...]
if ($frame_mode== 'info')
{
	// exec ("playusb -j /var/www/cache/info.jpg");
        generiere_ein_RSS_File ("/var/www/cache/info.rss", "/var/www/cache/info.jpg")
}
else
{
      // exec ("playusb -j /var/www/cache/slide.jpg");
        generiere_ein_RSS_File ("/var/www/cache/info.rss", "/var/www/cache/slide.jpg")
}
[...]

Poste doch bitte das Ergebnis, kann dann auch mit ins Howto.

Gruß, Michael...
 
Zuletzt bearbeitet:
Hallo Michael,

Danke für den Denkanstoss.

Ich hab nochmal ein wenig gesucht und zum Thema rss anlegen folgendes gefunden, was bei mir funktioniert.

Neben der "index.php" auf dem Webserver eine leere Daten names "media.rss" anlegen, ggf. die Rechte auf der Datei auf "777" ändern.
Jetzt nochmals die "infoframe.php" ändern - dabei bitte "http://infoframe.euredomain.eu/" durch eigen URL ersetzen:

an Ende der Datei folgenden Code einfügen:
Code:
// close database connection
DbConnection::disconnect();

// Feed aktualisieren
$feed='<?xml version="1.0"?>
<rss version="2.0"
xmlns:media="http://search.yahoo.com/mrss/"
>
<channel>
<title>InfoFrame</title>
<link>http://infoframe.euredomain.eu/</link>
<description>InfoFrameFeed</description>
<ttl>1</ttl>
<item>
<title>IF</title>

<link>http://infoframe.euredomain.eu/infoframe/cache/info.jpg</link>

<description>&lt;img src=&quot;[url]http://infoframe.euredomain.eu/infoframe/cache/info.jpg&quot;[/url] alt=&quot;&quot; /&gt;</description>
<guid isPermaLink="false">'.md5(uniqid(mt_rand(), true)).'</guid>
<media:content url="http://infoframe.euredomain.eu/infoframe/cache/info.jpg" type="image/jpeg" />
<media:title>Bild1</media:title>
</item>

<item>
<title>IF2</title>

<link>http://infoframe.euredomain.eu/infoframe/cache/info_clone.jpg</link>
<description>&lt;img src=&quot;[url]http://infoframe.euredomain.eu/infoframe/cache/info_clone.jpg&quot;[/url] alt=&quot;&quot; /&gt;</description>
<guid isPermaLink="false">'.md5(uniqid(mt_rand(), true)).'</guid>
<media:content url="http://infoframe.euredomain.eu/infoframe/cache/info_clone.jpg" type="image/jpeg" />
<media:title>Bild2</media:title>
</item>

</channel>

</rss>';

$file = fopen("media.rss", "w");
$geschrieben = fwrite($file, $feed);
fclose($file);

Im Rahmen bei Photo-RSS als URL die media.rss angeben.

Quelle des Ganzen: http://www.ip-phone-forum.de/showthread.php?t=206194&p=1667062&viewfull=1#post1667062

Gruss
Silvio (der jetzt erstmal mit Anzeige testen kann ;) )
 
Hallo Silvio,
danke für die Info, aber eine Frage habe ich noch.
Wozu soll das zweite <item> (rot) gut sein?

Gruß, Michael...

<?xml version="1.0"?>
<rss version="2.0"
xmlns:media="http://search.yahoo.com/mrss/"
>
<channel>
<title>InfoFrame</title>
<link>http://infoframe.euredomain.eu/</link>
<description>InfoFrameFeed</description>
<ttl>1</ttl>
<item>
<title>IF</title>

<link>http://infoframe.euredomain.eu/infoframe/cache/info.jpg</link>

<description>&lt;img src=&quot;http://infoframe.euredomain.eu/infof...info.jpg&quot; alt=&quot;&quot; /&gt;</description>
<guid isPermaLink="false">'.md5(uniqid(mt_rand(), true)).'</guid>
<media:content url="http://infoframe.euredomain.eu/infoframe/cache/info.jpg" type="image/jpeg" />
<media:title>Bild1</media:title>
</item>
<item>
<title>IF2</title>

<link>http://infoframe.euredomain.eu/infoframe/cache/info_clone.jpg</link>
<description>&lt;img src=&quot;http://infoframe.euredomain.eu/infof...lone.jpg&quot; alt=&quot;&quot; /&gt;</description>
<guid isPermaLink="false">'.md5(uniqid(mt_rand(), true)).'</guid>
<media:content url="http://infoframe.euredomain.eu/infoframe/cache/info_clone.jpg" type="image/jpeg" />
<media:title>Bild2</media:title>
</item>

</channel>

</rss>
 
Der Teil kann komplett raus.
Dadurch, dass ich den Source aus dem Thread so erst einmal komplett übernommen hatte, habe ich da gar nicht so detailiert drüber gesehen.
Wenn ich mich recht erinnere wurde die 2. Datei damals bei der Fritzbox aus irgendwelchen Gründen noch mit erzeugt.
 
Funktioniert das nur mit Samsung-Bilderrahmen?
Gibt es eine Möglichkeit, Bilderrahmen, die nur eine normale dumme USB-Schnittstelle für Sticks haben nachzurüsten? Z.B. Mit einem "Dual-Ported"-Stick. Auf einer Seite schreibt der Pi das "Bild" hinein und auf der anderen Seite holt der Rahmen es ab?

Marcus
 
Mit einem "Dual-Ported"-Stick. Auf einer Seite schreibt der Pi das "Bild" hinein und auf der anderen Seite holt der Rahmen es ab?
Rein theoretisch könnte das funktionieren, aber wohl nicht über einen längeren Zeitraum.
Das Auslesen des Bildes dürfte nicht das Problem sein, die Bereitstellung auf dem Stick schon eher, da dadurch (bei 5-minütigem Update-Intervall) 288 Schreibvorgänge pro Tag notwendig sind.
Ich denke nicht, daß der Stick das länger als 4 Wochen durchhält. :noidea:

Joe
 
Hallo Marcus,
ja, das funktioniert auch mit anderen Bilderrahmen, die Lösung mit dem Kodac W1020 steht nur drei Nachrichten über Deiner. Für weitere Möglichkeiten, siehe Digitiale Bilderrahmen für das "InfoFrame"-Projekt oder nutze einen richtigen Monitor mit HDMI-Anschluss.

"Dual-Ported"-Stick: Ich habe vor einem Jahr bereits nach solchen Lösungen im Internet recherchiert, bin aber nicht fündig geworden. Hast Du ein konkretes Modell in Sinn?

@Joe
ich setz noch einen drauf: Das Update wird zwar alle 5 Minuten gefahren, das Bild aber jede Minute neu erzeugt, also 1440 Schreibvorgänge am Tag. Bei einer typischen Lebensdauer von 100.000 Schreibzyklen wäre der Stick nach 69,4 Tagen Schrott, allerdings verlängern die Speichercontroller die Lebensdauer indem sie versuchen alle Speicherzellen gleichmäßig auszulasten. Wenn Du von einen 1G-Sick jetzt nur 1M verwendest, verlängert sich die Lebensdauer durch diesen Trick gleich auf 190 Jahre. Die SD-Karte in meinem Raspi lebt bereits seit über einem Jahr, obwol die Karte für das Betriebssystem als "Festplatte" genutzt wird.

Gruß, Michael...
 
Zuletzt bearbeitet:
Hallo Michael,
es ist prima, dass du dein Projekt sehr umfangreich vorgestellt hast.
Ich habe offenbar bisher das CallsPlugin falsch verstanden, ich suche etwas, was mir nur die verpassten Anrufe bei Abwesenheit, egal ob mit oder ohne Rufnummer, anzeigt. Einen Namen bzw. Bild brauche ich dazu nicht, weil neue Rufnummern ohnehin nicht im Telefonbuch stehen und oft auch nicht mit Reversesuche zu finden sind.
Wie funktioniert eigentlich die Umschaltung zwischen den Plugins, nur über die config.ini? Wie lange bleiben temporäre Anzeigen erhalten (Mail &Co)?
Kalender und Mail wollen bei mir einfach nicht laufen.
Könntest du bitte bei Gelegenheit etwas dazu schreiben, welche temporären Dateien und Loggings, nach dem die einwandfreie Funktion gegeben ist, abgeschaltet werden können, um den Verschleiß von SD-Card & Co. zu verringern?
 
Zuletzt bearbeitet:
Hallo jono,

dass du dein Projekt sehr umfangreich vorgestellt hast.
das ist nicht mein Projekt. Ich habe lediglich die Daten zusammengetragen und für meine Konfguration angepasst.

ich suche etwas, was mir nur die verpassten Anrufe bei Abwesenheit, egal ob mit oder ohne Rufnummer, ...
das kann listen2fritz. Du musst doch nur entsprechende Teile aus der listen2fritz.conf löschen, die bei Anruf den Infoframe triggern und unbekannte Nummern nachschlagen.

die Umschaltung zwischen den Plugins...? Wie lange bleiben temporäre Anzeigen erhalten (Mail &Co)?
Nur über die config.ini. So lange, Du sie nicht löschst...

Kalender und Mail wollen bei mir einfach nicht laufen.
Fluxcompensator rekalibrieren. Im ernst, ich kann den Fehler, den Du bekommst nur nachstellen, wenn ich die "google-api-php-master" gar nicht lade. Daher hatte ich Dich mal gebeten mir Deine CalendarPlugin.php zu schicken, so wie sie jetzt auf Deinem System liegt. Wo ist die?

...welche temporären Dateien und Loggings, [...], um den Verschleiß von SD-Card & Co. zu verringern?
Google

Gruß, Michael...
 
Hallo Michael,
vielen Dank für deine Antwort.
In meiner listen2fritz gibt es nur die Sektionen: [fritzboxfon] [phonenumber] [log:file] log:mysql]
Trotzdem kommt kein Eintrag in die infoframe_datenbank, und keine Meldung auf dem Display. Ich nutze den Infoframe-User. Fehlermeldung Konsole:
Code:
2015-01-28 10:56:42 listen2fritz[2213]:DEBUG:log_mysql.c:l2f_LOG_MYSQL_process:85: logging to mysql database ...
2015-01-28 10:56:42 listen2fritz[2213]:CRIT:log_mysql.c:l2f_LOG_MYSQL_process:96: [3] not configured -- skipped
2015-01-28 10:56:42 listen2fritz[2213]:DEBUG:log_mysql.c:l2f_LOG_MYSQL_process:192: complete
das kann listen2fritz. Du musst doch nur entsprechende Teile aus der listen2fritz.conf löschen, die bei Anruf den Infoframe triggern und unbekannte Nummern nachschlagen.
...
Fluxcompensator rekalibrieren. Im ernst, ich kann den Fehler, den Du bekommst nur nachstellen, wenn ich die "google-api-php-master" gar nicht lade. Daher hatte ich Dich mal gebeten mir Deine CalendarPlugin.php zu schicken, so wie sie jetzt auf Deinem System liegt. Wo ist die?
Das CalendarPlugin stammt original aus deinen Posts, die Plugins übernehme ich ohne Änderung. Hast du für die google-api-php-client-master einen Pfad im System angelegt? Das Paket liegt hier /user/share/google*. Ich habe nun alle Plugins neu aus deinem Anfangspost hier übernommen.
 
Und schon wieder muss ich meine Glaskugel rausholen.

Schickst Du mir deine /etc/listen2fritz.conf oder muss ich raten?
Nachdem dir ./configure [...] logging to mysql : yes ausgegeben hat, hast Du listen2fritz nochmal mit einem make übersetzt und das fertige compilat nach /usr/local/bin kopiert?
Was ist ein Infoframe_user, meinst Du damit den Datenbank_user?

Nein, ich habe keinen Pfad im System angelegt, weil ich in den Sourcen den Pfad hart codiert habe. Versuche es aber mal trotzdem damit:

PHP:
//		require_once '/usr/share/google-api-php-client-master/autoload.php';  diese hier auskommentieren
error_reporting (E_ALL);
set_include_path(get_include_path() . PATH_SEPARATOR . '/usr/share/google-api-php-client-master');
require_once 'autoload.php';

Nachtrag: mach mal ein ls -laR /usr/share/google-api-php-client-master/ > api.txt und schick mir die apt.txt

Gruß, Michael...
 
Zuletzt bearbeitet:
Hallo Michael,
anbei das Gewünschte.
Nachtrag: mach mal ein ls -laR /usr/share/google-api-php-client-master/ > api.txt und schick mir die apt.txt
Wie kann ich eigentlich die lognumber aus der Source bzw. für den Eintrag in die Datenbank infoframe neutralisieren (aus log_mysql.c), so dass nur noch verpasste Anrufe zur Anzeige gebracht werden, ohne Telefonbuch auf dem Infoframe.
Code:
    else CFG_SET_KEY_VALUE_STRING(log_mysql,lognumber)
 

Anhänge

  • api.txt
    14.6 KB · Aufrufe: 20
Hallo jono,

ich glaube Du verkennst den Sinn von lognumber, lognumber hat nichts mit dem Telefonbuch zu tun.

Ich benutze mehrere Nummern um per Anruf einige Events fernzusteuern, diese möchte ich natürlich nicht als verpasste Anrufe angezeigt sehen. Daher habe ich listen2fritz unter [log:mysql]
die Option lognumber hinzugefügt, da werden nur Anrufe an diese Nummer in die Tabellen eingetragen.

Wenn Du mehrere Nummern loggen willst, definier einfach mehrere Sektionen [log:mysql]
Code:
[log:mysql]
blah
blah
lognumber=4711

[log:mysql]
blah
blah
lognumber=4712

Zu Deiner /usr/share/google-api-php-client-master/
Die Rechte sind ja teilweise völlig durcheinander, einige Verzeichnisse darf nur root lesen, etc. Was hast Du denn damit gemacht???
Ich würde die mal löschen und neu reinkopieren. Dann wirds bestimmt auch was mit dem CalendarPlugin.

Gruß, Michael...

Nachtrag: ich sehe gerade, du hattest mir von listen2fritz den Auszug aus dem Log gesschickt, habe ich auf Smartphone mit der Ausgabe bei listen2fritz -f verwechselt und gedacht log:mysql läuft jetzt.
Bekommst du immer noch bei listen2fritz -f diese Fehlermeldung?
2015-01-28 10:56:42 listen2fritz[2213]:CRIT:log_mysql.c:l2f_LOG_MYSQL_process:96: [3] not configured -- skipped
 
Zuletzt bearbeitet:
Hallo Michael,
folgende Daten habe ich von listen2fritz "eingefangen", Auszug aus listen2fritz auf der Konsole:
Code:
2015-01-30 17:54:00 listen2fritz[4822]:DEBUG:log_mysql.c:l2f_LOG_MYSQL_process:85: logging to mysql database ...
2015-01-30 17:54:00 listen2fritz[4822]:CRIT:log_mysql.c:l2f_LOG_MYSQL_process:188: [3] lognumber does not match -- skipped
2015-01-30 17:54:00 listen2fritz[4822]:DEBUG:log_mysql.c:l2f_LOG_MYSQL_process:192: complete
2015-01-30 17:54:00 listen2fritz[4822]:DEBUG:log.c:l2f_LOG_process:56: complete
2015-01-30 17:54:00 listen2fritz[4822]:DEBUG:fritzboxfon.c:l2f_FRITZBOXFON_process:261: waiting for message from fritzbox ...
Auszug aus listen2fritz.log
Code:
30.01.2015 17:53:53; 2-L2F_EVENT_TYPE_RING; 0-L2F_EVENT_TYPE_UNKNOWN; 0; 0:00; 01111111111-; 4444444-
30.01.2015 17:54:00; 4-L2F_EVENT_TYPE_DISCONNECT; 2-L2F_EVENT_TYPE_RING; 0; 0:00; 01111111111-; 444444-
In die Datenbank infoframe gibt es keinen Eintrag. [lookup:mysql], lognumber ist aus- bzw. einkommentiert. Wobei der String aus listen2fritz.log vernünftig aussieht, es müssen halt nur noch die Nummern in if_call_log übernommen werden. Müsste der Datensatz dafür vollständig sein, oder können auch Felder leer bleiben bzw. müssen diese definiert belegt werden?
 
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.