Statusdisplay Fritzbox 7390: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Krikan (Diskussion | Beiträge) K (Anpassung an neues Repository) |
||
Zeile 11: | Zeile 11: | ||
== Vorbereitung == | == Vorbereitung == | ||
Ein fertig vorbereitetes und schon mit dem scaletext-Patch versehenes lcd4linux für die Fritzbox 7390 hat der User devzero im [http://www.vdr-portal.de/board18-vdr-hardware/board11-lcds/p1043999-pearl-display-textskalierung-unter-lcd4linux/#post1043999 VDR-Portal] zur Verfügung gestellt. Für die FB 7390 müsst ihr die "mips" Version nehmen und nicht von dem Posting beirren lassen - ihr braucht kein Freetz für die Verwendung auf eurer Fritzbox. | Ein fertig vorbereitetes und schon mit dem scaletext-Patch versehenes lcd4linux für die Fritzbox 7390 hat der User devzero im [http://www.vdr-portal.de/board18-vdr-hardware/board11-lcds/p1043999-pearl-display-textskalierung-unter-lcd4linux/#post1043999 VDR-Portal] zur Verfügung gestellt. Für die FB 7390 müsst ihr die "mips" Version nehmen und nicht von dem Posting beirren lassen - ihr braucht kein Freetz für die Verwendung auf eurer Fritzbox. | ||
Nach dem Download entpackt ihr das Paket und benennt das enthaltene Binary lcd4linux-mips-linux-svn-1165-scaletext-freetz nach lcd4linux um.<br>Eine einsatzbereite Binary-Datei für die Fritz!Box und die Raspberry Pi kann man inzwischen auch [http:// | Nach dem Download entpackt ihr das Paket und benennt das enthaltene Binary lcd4linux-mips-linux-svn-1165-scaletext-freetz nach lcd4linux um.<br>Eine einsatzbereite Binary-Datei für die Fritz!Box und die Raspberry Pi kann man inzwischen auch [http://svn.fhem.de/trac/browser/trunk/fhem/contrib/lcd4linux hier im FHEM SVN] herunterladen. | ||
Wir brauchen nun ein Programmverzeichnis für lcd4linux auf dem internen Speicher der Fritzbox. Dazu navigiert ihr über fritz.nas oder ftp auf den Speicherbereich der Fritzbox und legt auf der gleichen Ebene wie der Programmordner fhem einen neuen Ordner "dpf" an (dpf = digital photo frame). Kopiert das entpackte Binary lcd4linux und eine leere Datei lcd4linux.conf in das Verzeichnis. | Wir brauchen nun ein Programmverzeichnis für lcd4linux auf dem internen Speicher der Fritzbox. Dazu navigiert ihr über fritz.nas oder ftp auf den Speicherbereich der Fritzbox und legt auf der gleichen Ebene wie der Programmordner fhem einen neuen Ordner "dpf" an (dpf = digital photo frame). Kopiert das entpackte Binary lcd4linux und eine leere Datei lcd4linux.conf in das Verzeichnis. |
Aktuelle Version vom 12. Dezember 2016, 15:59 Uhr
Statusdisplay für die Anzeige von Informationen der Hausautomation FHEM an einer Fritzbox 7390
Einleitung
Bei der Suche nach einer kostengünstigen Möglichkeit, einige Temperaturen, Wetterinformationen und Schaltzustände zu visualisieren, bin ich auf den kleinen 2,4" digitalen Bilderrahmen des Elektronikversenders Pearl gestossen. Nach einem Firmware-Patch ist dieser von der Fa. AppoTech mit dem Chip AX206 bestückte Bilderrahmen über lcd4linux ansprechbar und wird schon in einigen Unix/Linux Projekten erfolgreich eingesetzt.
Der User Mick hat auf der Wiki-Seite Infodisplay Linux-Rechner schon ausführlich das Patchen des Bilderrahmens und das Kompilieren der Library lcd4linux für die allgemeine Verwendung dokumentiert. Ich möchte in diesem HowTo die spezielle Einrichtung und das Betreiben an einer Fritzbox 7390 beschreiben. Wichtig war mir dabei auch, möglichst nichts an der Standardkonfiguartion der Fritzbox zu verändern und mit der etwas beschränkten Linux Umgebung auszukommen.
Die anzuzeigenden Werte entnehme ich aus der Datei fhem.save, in die FHEM vor jedem Neustart die Sicherung alle variablen Werte einträgt. Damit die Werte immer rel. aktuell sind, habe ich in FHEM einen Timer erstellt, der die Sicherung alle 10min automatisch vornimmt. Das ist der einfachste, mir bekannte Weg in FHEM, alle aktuellen Werte und Zustände in einer Datei zu haben.
Vorbereitung
Ein fertig vorbereitetes und schon mit dem scaletext-Patch versehenes lcd4linux für die Fritzbox 7390 hat der User devzero im VDR-Portal zur Verfügung gestellt. Für die FB 7390 müsst ihr die "mips" Version nehmen und nicht von dem Posting beirren lassen - ihr braucht kein Freetz für die Verwendung auf eurer Fritzbox.
Nach dem Download entpackt ihr das Paket und benennt das enthaltene Binary lcd4linux-mips-linux-svn-1165-scaletext-freetz nach lcd4linux um.
Eine einsatzbereite Binary-Datei für die Fritz!Box und die Raspberry Pi kann man inzwischen auch hier im FHEM SVN herunterladen.
Wir brauchen nun ein Programmverzeichnis für lcd4linux auf dem internen Speicher der Fritzbox. Dazu navigiert ihr über fritz.nas oder ftp auf den Speicherbereich der Fritzbox und legt auf der gleichen Ebene wie der Programmordner fhem einen neuen Ordner "dpf" an (dpf = digital photo frame). Kopiert das entpackte Binary lcd4linux und eine leere Datei lcd4linux.conf in das Verzeichnis.
Als nächstes müssen die Ordner/Dateiberechtigungen und die Besitzer Einstellungen im Linux angepasst werden. Dazu müsst ihr den Telnet Zugang auf der Fritzbox aktivieren. Das geht ganz einfach über ein Telefon mit folgendem Code: #96*7* Telnet an (#96*8* Telnet aus). Meldet euch dann per Telnet bzw. Putty.exe unter Windows an der Fritzbox an.
Passt die Besitzer Einstellungen vom Ordner und den Dateien an:
chown -R root:root /var/InternerSpeicher/dpf
Setzt dann die Berechtigungen auf den Ordner und die Dateien
chmod 777 -R /var/InternerSpeicher/dpf
Übergabedatei
Zur Übergabe der anzuzeigenden Werte und Zustände im Bilderrahmen wird die Datei fhem.save automatisch alle 10min in das Log Verzeichnis von FHEM geschrieben (siehe FHEM Konfiguartion). Aus dieser Datei muss nun mittels Unix Text- und Zeichenkettenfunktionen (grep, cut, tr..kein AWK in der Fritzbox!!) der interessante Teil zur Anzeige herausgefiltet werden und in eine neue Textdatei (fhemdata.log) zeilenweise übertragen werden.
Ich habe mir ein ausführbares Script mit dem Namen "startdpf" mit folgendem Inhalt gebaut und im fhem Programmordner abgelegt. Dies enthält neben den Befehlen zur Umwandlung der Texte auch die Befehle zum Start/Stop des Bilderrahmens, sowie Befehle zum Setzen der richtigen Berechtigungen der Konfiguartionsdatei lcd4linux.conf als Startparameter von "startdpf".
#!/bin/sh homedpf=/var/InternerSpeicher/dpf homefhem=/var/InternerSpeicher/fhem fhemlog=/var/InternerSpeicher/fhem/log cd $homedpf case $1 in AN) ./lcd4linux -f lcd4linux.conf ;; AUS) killall lcd4linux ;; 600) chmod 600 lcd4linux.conf ;; 777) chmod 777 lcd4linux.conf ;; LOG) grep 'WZ_Temp temp' $fhemlog/fhem.save | cut -d\: -f2 | tr -d ' ' > $homedpf/fhemdata.log grep 'KS300 T:' $fhemlog/fhem.save | cut -d\: -f2 | tr -d 'H' | tr -d ' ' >> $homedpf/fhemdata.log grep 'RollosZU Next' $fhemlog/fhem.save | cut -d\: -f2,3,4 >> $homedpf/fhemdata.log grep '#' $fhemlog/fhem.save | cut -b 13-17 >> $homedpf/fhemdata.log ;; esac
Beispielsweise wird hier der Sicherungszeitpunkt, eine Temperatur eines 1-Wire Sensors, die Aussentemperatur vom KS300 und das nächste Herunterfahren der Rolladen ausgeschnitten und zeilenweise in die Datei fhemdata.log übertragen.
FHEM Konfiguration
In der FHEM Konfiguration fhem.cfg wird nun ein neuer Timer für die Aktion Speichern der Geräte-Stati und Datenaufbereitung alle 10min erstellt:
define fhemsave at +*00:10 { WriteStatefile() };;sleep 2;;{system("(./startdpf LOG)")} attr fhemsave loglevel 4 attr fhemsave room Display
Der ehemals hier eingesetzte Befehl Befehl {fhem "save"} hat den unerwünschten Nebeneffekt, die Datei fhem.save und auch die Datei fhem.cfg zu speichern und deren Formatierung zu überarbeiten. Der nun eingesetzte Befehl { WriteStatefile() } sichert nur die Stati in der Datei fhem.save.
Alternativkönnen die Stati auch über Perl Coding in eine Datei ausgelesen werden - hier als Beispiel alle FS20 Stati:
define fhemsave notify fhemsave {open(REPORT, ">", "/var/InternerSpeicher/fhem/fhemsave.txt");;_ my @@mdev=devspec2array("TYPE=FS20");;foreach(@@mdev){my $state= Value($_);;print REPORT "$_ $state\n";;}close REPORT;;} define fhemsave_timer at +*00:10:00 trigger fhemsave
Damit ich den Bilderrahmen auch über FHEM an- und ausschalten kann, wird noch ein FS20 dummy mit einem notify erstellt:
define Statusdisplay FS20 1234 00 attr Statusdisplay dummy 1 attr Statusdisplay eventMap on:AN off:AUS attr Statusdisplay room Display
define n_Statusdisplay notify Statusdisplay {Log 1, 'Status Display %';;system("(./startdpf %)")} attr n_Statusdisplay loglevel 4 attr n_Statusdisplay room Display Loglevel 4 habe ich gesetzt, da ich die Rückmeldung -1 im fhem.log unterdrücken will, die immer kommt, wenn eine externe Datei ausgeführt wird.
Anzeigekonfiguration
Nach der Umwandlung der Daten sieht der Inhalt der erstellten Übergabedatei fhemdata.log z.B so aus:
21:50 18:19:35 -7.4 21,3
In die bis jetzt leere Konfiguration des Bilderrahmens lcd4linux.conf kommt jetzt der Anzeigeteil. Zur Bearbeitung muss die Datei immer mit den Unix Rechten 777 versehen werden. Ihr könnt die Datei über //fritz.nas direkt mit z.B. Notepad++ bearbeiten. Zum Lesen der Werte aus der Datei fhemdata.log benutzen wir hier das Plugin File Reading von lcd4linux
Beispiel: hier wird genau die Zeile 3 aus der Übergabetabelle fhemdata.log gelesen
expression file::readline('/var/InternerSpeicher/dpf/fhemdata.log', 3)
Erklärungen zur Konfiguration erhaltet ihr auf der lcd4linux Projektseite
Meine Beispiel Konfiguration sieht dann so aus:
Variables { up_zehn 10000 color_white 'ffffff' color_blue '000066' color_green '008000' color_black '000000' } Display DPF { Driver 'DPF' Port 'usb0' Font '12x16' Foreground color_white Background color_blue Basecolor color_blue } Widget Zeit { class 'Text' expression strftime('%d.%m.%G %H:%M',time()) width 18 align 'L' update up_zehn background color_black } Widget FHEMZeit { class 'Text' prefix 'SV' expression file::readline('/var/InternerSpeicher/dpf/fhemdata.log', 1) width 8 align 'R' update up_zehn background color_black } Widget tempAU { class 'Text' prefix 'Aussen' expression file::readline('/var/InternerSpeicher/dpf/fhemdata.log', 3) width 11 align 'R' update up_zehn background color_black } Widget tempWZ { class 'Text' prefix ' Wohnzim.' expression file::readline('/var/InternerSpeicher/dpf/fhemdata.log', 4) width 15 align 'R' update up_zehn background color_black } Widget rolldown { class 'Text' prefix 'Roll. schliessen ' expression file::readline('/var/InternerSpeicher/dpf/fhemdata.log', 2) width 26 align 'L' update up_zehn background color_black } Layout Default { Row1 { Col1 'Zeit' Col19 'FHEMZeit' } Row3 { Col1 'tempAU' Col12 'tempWZ' } Row5 { Col1 'rolldown' } } Display 'DPF' Layout 'Default'
Anschließend muss die Datei wieder mit den Unix Rechten 600 versehen werden - erst dann läuft lcd4linux an.
Dazu geht ihr in der Telnet Sitzung in den dpf Programmordner
cd /var/InternerSpeicher/dpf
setzt die Berechtigungen
chmod 600 lcd4linux.conf
und startet lcd4linux mit folgenden Parametern im Debug Modus
./lcd4linux -Fvv -f lcd4linux.conf
Wenn alles nach euren Wünschen funktioniert, könnt ihr Telnet an der Fritzbox wieder deaktivieren. Das Display kann nun mit dem angelegten Schalter Statusdisplay im FHEM an und aus geschaltet werden.
--Benutzer:MichaS 10:30, 10. Feb. 2012 (CET)
Bekannte Probleme
Unter bestimmten Konfiguration der FritzBox (VDSL + WLAN + Telefongespräch) kommt die CPU an ihre Leistungsgrenze. Ein zusätzlicher Prozess wie lcd4linux und fhem führt dann zu langen Verzögerungen von FHEMWEB und zu Aussetzern und Stimmverzerrungen beim Telefonieren. Üblicherweise stürzt lcd4linux dann auch ab.