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:
Anhang anzeigen InfoFrame.pdf
InfoFrame:
Fernbedienung:
listen2fritz:
Raspi einrichten:
InfoFrame einrichten:
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!
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:
- KEY_PLAY: Startet die Slideshop (SlidePlugin.php)
- KEY_STOP: Stoppt die Slideshow (normaler Modus)
- 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:
- 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
. - 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
Ab hier kann man bereits mit PUTTY auf den Raspi, das macht die Sache etwas einfacher, da man mit copy und paste arbeiten kann.
. - 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
. - nützliche Utilities (opt.)
$ apt-get install joe
$ apt-get install mc
. - System auf den neuesten Stand bringen (opt.)
$ apt-get update
$ apt-get upgrade
$ apt-get -u dist-upgrade
. - neue Firmware/Kernel/etc (opt.)
$ rpi-update
$ reboot
. - 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
- 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
. - 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
- 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 ....
. - 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:
- 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.
. - php5
$ apt-get install php5 php5-curl php5-dev php5-gd php5-imap php5-mysql
. - 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)
. - 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
. - 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
. - 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"
- 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]
. - Infoframe aus crontab minütlich ausführen
$ joe /etc/crontab
Code:# minuetlich aufrufen * * * * * root wget localhost/infoframe.php -qO /dev/null
- 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
listen2fritz automatisch starten lassen
$ joe /etc/rc.local
Code:[...] /usr/local/bin/listen2fritz
. - 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
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.
"Installiete Anwendung" und "Sonstige" auswählen
Danach seht ihr dann eure Client-ID und -Schlüssel.
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.
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).
. - 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");
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><img src="http://infoframe/cache/'.$frame_mode.'.jpg" alt="" /></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.
. - 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
- 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.gz1.1 MB · Aufrufe: 125
-
listen2fritz-m424-0.9.4.tar.gz212.4 KB · Aufrufe: 88
-
playusb.tar.gz2.7 KB · Aufrufe: 56
-
infoframe_0.tar.gz1.7 MB · Aufrufe: 162
-
infoframe_PDO_1.tar.gz1.4 MB · Aufrufe: 91
-
infoframe_PDO_0.tar.gz1.5 MB · Aufrufe: 101
-
infoframe_PDO_2.tar.gz32.7 KB · Aufrufe: 46
Zuletzt bearbeitet: