Lcd4linux: Unterschied zwischen den Versionen
Zeile 10: | Zeile 10: | ||
== Bilderrahmen | == Bilderrahmen patchen == | ||
[http://tech.section5.ch/files/dpfhack-0.1alpha.tgz Hier] | |||
Der pearl Birlderrahmen muss dazu erst gepatched werden. Wie das geht wird http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/ ]hier erklärt | Der pearl Birlderrahmen muss dazu erst gepatched werden. Wie das geht wird http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/ ]hier erklärt | ||
Am einfachsten geht es am PC unter LInux bzw Linux in virtueller Umgebung dazu angehängtes Paket entpacken. | Am einfachsten geht es am PC unter LInux bzw Linux in virtueller Umgebung dazu angehängtes Paket entpacken. | ||
cd lcd4linux | cd lcd4linux | ||
cd ../src | cd ../src |
Version vom 21. Februar 2012, 15:56 Uhr

Einführung | Freetz Pakete | Freetz Addons | Freetz Tipps | Freetz chroot | Freetz Images | Freetz Faqs |
Bilderrahmen patchen
Der pearl Birlderrahmen muss dazu erst gepatched werden. Wie das geht wird http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/ ]hier erklärt Am einfachsten geht es am PC unter LInux bzw Linux in virtueller Umgebung dazu angehängtes Paket entpacken.
cd lcd4linux cd ../src sudo python hackit.py /dev/sg0
vorher mit dmesg überprüfen auf welchem port das Gerät liegt , meisst sg0 oder sg1 Gerät anschliessen und Menue drücken und mit PC verbinden mit ja bestätigen
Wenn alles glatt gelaufen ist erscheint am Ende
Patching at offset 000002b9, chunk size 1 Read 503 bytes Analyzing module 37... Module already patched Now disconnect the DPF from USB. To activate the 'developer mode': Press and hold MENU while USB is plugged in. If successful, you will get the 'USB connect' message and the device will appear as non-USB storage device To put the device back into (almost) original state working as USB storage, press the RESET button. zebra@zebra:~/lcd2/dpf/src$
Wenn folgende Fehlermeldung kommt...
Opening generic SCSI device '/dev/sg2' Reading flash... done ]No DPF found. Create a record or look for one ('20090504', 'Mar 27 2010\xff\xff\xff\xff\xff', 'ProcTbl5')[/CODE] ...muss noch die Datei profiles.py angepasst werden.
Original:
[ ('20090504', 'Mar 26 2010\xff\xff\xff\xff\xff', 'ProcTbl5' ), "pearl", "http://www.pearl.de/a-HPM1184-5618.shtml", { }, [ 0, 0x200000, patch_320x240 ] ],
Modifiziert:
[ ('20090504', 'Mar 27 2010\xff\xff\xff\xff\xff', 'ProcTbl5' ), "pearl", "http://www.pearl.de/a-HPM1184-5618.shtml", { }, [ 0, 0x200000, patch_320x240 ] ],
Neuer Versuch, hier wird es auch als Perl-Display erkannt:
Patching at offset 000002b9, chunk size 1 Read 503 bytes Analyzing module 37... Module already patched Now disconnect the DPF from USB. To activate the 'developer mode': Press and hold MENU while USB is plugged in. If successful, you will get the 'USB connect' message and the device will appear as non-USB storage device To put the device back into (almost) original state working as USB storage, press the RESET button. zebra@zebra:~/lcd2/dpf/src$
Jetzt das DPF abstecken und wieder an der Fritzbox anstecken. In den Developer-Mode gehen (Menü-Taste länger gedrückt halten).
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 14 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=ff(vend.) Sub=ff Prot=ff MxPS= 8 #Cfgs= 1 P: Vendor=1908 ProdID=0102 Rev= 2.00 [COLOR="#FFFF00"]S: Manufacturer=hackfin S: Product=USB-Display[/COLOR] S: SerialNumber=0000 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbfs E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Hinweis:
Das Gerät kann durch einfaches Reset wieder auf Werkseinstellungen zurück gesetzt werden
Links : [url]http://www.zebradem.com/61688-fb-7270v3-cccam-monitor-mit-pearl-2-90-display-und-lcd4linux#post440387[/url]
lcd4linux
Lcd4linux muß natürlich für die antsprechende Architektur (mipsel bei der 7170) mit DPF-Support gebaut werden. Empfehlenswert ist es auch, lcd4linux (mit dpf-unterstützung) sich für den desktop selbst zu bauen solang es noch nicht in den Repositories der Linux-Distributionen ist. Dann kann man vorher erst alles probieren und sich mit der Konfiguration vertraut machen. Dabei fiel mir nämlich auf daß der normale Text-Font ziemlich winzig ist und es nur diesen einen gibt. Abhilfe fand ich mit einem Scaletext-Patch im VDR-Portal. Devzero war so frei das Paket komplett mit scaletext-Patch für mipsel und mips zu bauen. Thnx nochmal an ihn, hat mir viel Arbeit gespart. Schlußendlich die Binary (in dem Fall lcd4linux-mipsel-linux-svn-1165-scaletext-freetz) auf den USB-Stick kopieren.
Konfiguration
Selbst wenn das lcd4linux schon auf bzw an der Box ist, läuft es noch lange nicht *gg*. Die lcd4linux.conf sollte außerdem Permissions 600 haben sonst gibts nur Meckerei, also chmod 600 ... nicht vergessen! Ich hab vorerst alles nach /var/tmp kopiert und sichere nur auf USB-Stick von Hand (die conf) oder via cron (die daten, falls man längere statistiken machen will) Natürlich muß man dazu in freetz cron gebaut haben und aktivieren/laufen haben) Hier mal meine aktuelle
crontab
*/2 * * * * for i in ds_attenuation ds_margin dsl_ds_rate dsl_us_rate ds_attainable us_attainable ds_delay modem_ShowtimeSecs; do ctlmgr_ctl r sar status/$i > /var/tmp/$i; done 5 * * * * ctlmgr_ctl r sar status/StatMinSNR | tr ',' '\n'|awk '{ i=i+1; printf("\%05d \%s\n", i,$0); }' | sort -r | cut -b 7- > /var/tmp/StatMinSNR */5 * * * * ctlmgr_ctl r sar status/StatCRC | tr ',' '\n' > /var/tmp/StatCRC */5 * * * * ctlmgr_ctl r sar status/StatVolume | tr ',' '\n' > /var/tmp/StatVolume 15 23 * * * cp /var/tmp/onlinezeiten /var/media/ftp/uStor01; tail /var/tmp/onlinezeiten > /var/tmp/onlinezeiten2
StatMinSNR ist hier mal mit Sortierung gemacht, braucht man nicht wirklich wenn man in der lcd4linux.conf die Reihenfolge der Zeilen berücksichtigt (aktuellster Wert ist letzte Zeile) und die aktuellen Werte mit tail unten abfischt. Einfacher scheint es nicht zu gehen mit Sortieren, da alles nur busybox ist und nicht die vollen Optionen der Originaltools zur Verfügung stehen. Viele werden sich fragen, "warum nicht alles via dem exec-plugin von lcd4linux?" - ganz einfach: die 7170 ist da viel zu Leistungssschwach für (CPU und auch RAM)
lcd4linux.conf
Hier die im obigen Bild genutzte lcd4linux.conf. Einige Sachen sind noch nicht im fertigen Zustand, andere irgendwie noch Buggy vom lcd4linux her.
#Display 'Image' Display 'dpf' Variables { # update-zeiten tick 2000 tack 500 minute 60000 _10min 600000 stunde 3600000 # farbdefinitionen gn '22ff22' rt 'ff9999' bl '5f5fff' hbl '9999ff' rtbusy 'ff6060' gnbusy '227722' # farbensettings # C_SNRBar bl # C_SNRBarNow hbl # C_CRCBar # C_CRCBarNow C_Busy 'ff6060' C_BusyBG '227722' C_OnBar '777777' C_OnBarNow '999999' } Display Image { Driver 'Image' Format 'PNG' Size '320x240' Pixel '1+0' Gap '0x0' Font '8x10' Foreground 'ffffff' Background '000000' Basecolor '000000' } Display dpf { Driver 'DPF' Port 'usb0' # Font '6x8' Font '8x10' Foreground 'ffffff' Background '222222' Basecolor '222222' } Widget RAM { class 'Text' expression meminfo('MemFree') prefix 'RAM ' postfix 'k' precision 0 width 10 align 'L' update tack Background '225522' } Widget dslspeed { class 'Text' expression 'Dn/Up '.file::readline('/var/tmp/dsl_ds_rate', 1).' / '.file::readline('/var/tmp/dsl_us_rate', 1).'kBit' width 39 align 'L' update minute } Widget IPaddy { class 'Text' expression exec('get_ip', 60000) #expression '127.0.0.1' width 15 align 'L' update minute } Widget ltg { class 'Text' expression file::readline('/var/tmp/ds_attainable', 1).' / '.file::readline('/var/tmp/us_attainable', 1).'kBit LD '.file::readline('/var/tmp/ds_attenuation', 1).' dB' Prefix 'Ltng. ' width 35 align 'L' update minute } Widget BusyText { class 'Text' prefix 'CPU Load ' expression loadavg(1) align 'L' width 23 precision 1 Foreground 'ffffff' Background 'ffffff00' update tick } Widget BusyBar { class 'Bar' expression proc_stat::cpu('busy', 500) # expression 30 length 10 max 100 direction 'E' update tick style 'H' Foreground C_Busy Background C_BusyBG BarColor0 C_Busy BarColor1 C_Busy } Widget SNRBar1 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 1) expression2 file::readline('/var/tmp/StatMinSNR', 2) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar2 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 3) expression2 file::readline('/var/tmp/StatMinSNR', 4) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar3 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 5) expression2 file::readline('/var/tmp/StatMinSNR', 6) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar4 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 7) expression2 file::readline('/var/tmp/StatMinSNR', 8) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar5 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 9) expression2 file::readline('/var/tmp/StatMinSNR', 10) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar6 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 11) expression2 file::readline('/var/tmp/StatMinSNR', 12) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar7 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 13) expression2 file::readline('/var/tmp/StatMinSNR', 14) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar8 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 15) expression2 file::readline('/var/tmp/StatMinSNR', 16) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar9 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 17) expression2 file::readline('/var/tmp/StatMinSNR', 18) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar10 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 19) expression2 file::readline('/var/tmp/StatMinSNR', 20) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar11 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 21) expression2 file::readline('/var/tmp/StatMinSNR', 22) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBar12 { class 'Bar' expression file::readline('/var/tmp/StatMinSNR', 23) expression2 file::readline('/var/tmp/StatMinSNR', 24) max 15 length 5 direction 'N' update _10min Foreground '5f5fff' BarColor0 '5f5fff' BarColor1 '5f5fff' } Widget SNRBarNow { class 'Bar' expression file::readline('/var/tmp/ds_margin', 1) max 15 length 5 direction 'N' update minute style 'H' Foreground '9999ff' BarColor0 '9999ff' BarColor1 '9999ff' } Widget wlanText { class 'Text' expression ((netdev::fast('tiwlan0', 'Rx_bytes', 1000) + netdev('tiwlan0', 'Tx_bytes', 1000))/1024) #expression 2700 prefix 'wlan ' width 21 precision 0 align 'L' update tick Foreground 'ffffff' Background '00000000' } Widget adslText { class 'Text' expression ((netdev::fast('adsl', 'Rx_bytes', 1000) + netdev('adsl', 'Tx_bytes', 1000))/1024) # expression 2700 prefix 'adsl ' width 21 precision 0 align 'L' update tick Foreground 'ffffff' Background '00000000' } Widget adslBar { class 'Bar' expression (netdev::fast('adsl', 'Rx_bytes', 1000)/1024) expression2 (netdev::fast('adsl', 'Tx_bytes', 1000)/1024) # expression 1800 # expression2 900 length 18 direction 'E' update tack max 1800 Foreground 'ffffff' Background '00000000' BarColor0 '5f5fff' BarColor1 'ff5f5f' } Widget wlanBar { class 'Bar' expression (Display == 'dpf') ? (netdev::fast('tiwlan0', 'Rx_bytes', 1000)/1024) : '1800' expression2 (Display == 'dpf') ? (netdev::fast('tiwlan0', 'Tx_bytes', 1000)/1024) : '900' # expression 1800 # expression2 900 length 18 direction 'E' update tack max 1800 Foreground 'ffffff' Background '00000000' BarColor0 '5f5fff' BarColor1 'ff5f5f' } Widget lanBar { class 'Bar' expression (netdev::fast('eth0', 'Tx_bytes', 1000)/1024) expression2 (netdev::fast('eth0', 'Rx_bytes', 1000)/1024) # expression 1800 # expression2 900 length 37 direction 'E' update tack max 1800 Foreground 'ffffff' Background '00000000' BarColor0 '5f5fff' BarColor1 'ff5f5f' } Widget lanText { class 'Text' expression ((netdev::fast('eth0', 'Rx_bytes', 1000) + netdev('eth0', 'Tx_bytes', 1000))/1024) # expression 2700 max 1800 precision 0 prefix 'LAN ' width 30 align 'L' update tick Foreground 'ffffff' Background 'FFFFFF00' } Widget SNRBarTextOben { class 'Text' expression '15 _10000' width 13 align 'L' Foreground 'ffffff' Background 'FFFFFF00' } Widget SNRWert { class 'Text' expression file::readline('/var/tmp/ds_margin', 1).' dB' width 5 align 'R' Foreground 'ffffff' Background 'FFFFFF00' } Widget SNRBarTextUnten { class 'Text' expression '0 _1' width 17 Foreground 'ffffff' Background '222222' update minute } Widget CRCNull { class 'Text' expression a=file::readline('/var/tmp/StatCRC', 1);(a == 0 ? '_0' : '' ) width 2 Foreground '22ff22' Background '000000ff' update minute } # ----------Online Bars------------------ Widget OnBar1 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 1),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 2),11)) max 5 length 5 direction 'N' update stunde Foreground C_OnBar BarColor0 C_OnBar BarColor1 C_OnBar } Widget OnBar2 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 3),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 4),11)) max 5 length 5 direction 'N' update stunde Foreground C_OnBar BarColor0 C_OnBar BarColor1 C_OnBar } Widget OnBar3 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 5),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 6),11)) max 5 length 5 direction 'N' update stunde Foreground C_OnBar BarColor0 C_OnBar BarColor1 C_OnBar } Widget OnBar4 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 7),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 8),11)) max 5 length 5 direction 'N' update stunde Foreground C_OnBar BarColor0 C_OnBar BarColor1 C_OnBar } Widget OnBar5 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 9),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 10),11)) max 5 length 5 direction 'N' update stunde Foreground C_OnBar BarColor0 C_OnBar BarColor1 C_OnBar } Widget OnBar6 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 11),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 12),11)) max 5 length 5 direction 'N' update stunde Foreground C_OnBar BarColor0 C_OnBar BarColor1 C_OnBar } Widget OnBar7 { class 'Bar' expression log(substr(file::readline('/var/tmp/onlinezeiten2', 13),11)) expression2 log(substr(file::readline('/var/tmp/onlinezeiten2', 14),11)) max 5 length 5 direction 'N' update stunde style 'H' Foreground C_OnBarNow BarColor0 C_OnBarNow BarColor1 C_OnBarNow } # ----------Online Bars Ende------------- # ----------CRC Bars---------------------- Widget CRCBarNow { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 1);a == 1 ? '0.2' : log(a) expression b=file::readline('/var/tmp/StatCRC', 2);b == 1 ? '0.2' : log(b) max 5 length 5 direction 'N' update minute style 'H' Foreground 'ff9999' BarColor0 'ff9999' BarColor1 'ff9999' } Widget CRCBar1 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 3);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 4);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar2 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 5);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 6);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar3 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 7);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 8);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar4 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 9);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 10);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar5 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 11);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 12);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar6 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 13);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 14);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar7 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 15);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 16);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar8 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 17);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 18);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar9 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 19);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 20);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar10 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 21);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 22);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } Widget CRCBar11 { class 'Bar' expression2 a=file::readline('/var/tmp/StatCRC', 23);a == 0 ? '0.1' : log(a) expression b=file::readline('/var/tmp/StatCRC', 24);b == 0 ? '0.1' : log(b) max 5 length 5 direction 'N' update minute Foreground 'ff5f5f' BarColor0 'ff5f5f' BarColor1 'ff5f5f' } # ---------------------CRC Bars Ende-------------------------- Widget VolBarNow { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 1)) expression log(file::readline('/var/tmp/StatVolume', 2)) #expression2 log(10) #expression log(1000) max 3.8 length 4 direction 'N' update minute style 'H' Foreground 'fdee00' BarColor0 'fdee00' BarColor1 'fdee00' } Widget VolBar1 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 3)) expression log(file::readline('/var/tmp/StatVolume', 4)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar2 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 5)) expression log(file::readline('/var/tmp/StatVolume', 6)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar3 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 7)) expression log(file::readline('/var/tmp/StatVolume', 8)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar4 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 9)) expression log(file::readline('/var/tmp/StatVolume', 10)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar5 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 11)) expression log(file::readline('/var/tmp/StatVolume', 12)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar6 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 13)) expression log(file::readline('/var/tmp/StatVolume', 14)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar7 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 15)) expression log(file::readline('/var/tmp/StatVolume', 16)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar8 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 17)) expression log(file::readline('/var/tmp/StatVolume', 18)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar9 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 19)) expression log(file::readline('/var/tmp/StatVolume', 20)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar10 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 21)) expression log(file::readline('/var/tmp/StatVolume', 22)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } Widget VolBar11 { class 'Bar' expression2 log(file::readline('/var/tmp/StatVolume', 23)) expression log(file::readline('/var/tmp/StatVolume', 24)) max 3.8 length 4 direction 'N' update minute Foreground 'ff7e00' BarColor0 'ff7e00' BarColor1 'ff7e00' } # ------------- Ende VolumeBars------------------------------ Widget SNRText { class 'Text' expression '1d SNR Marge' width 13 Foreground '8888ff' } Widget CRCText { class 'Text' expression 'CRC-Errors' width 10 Foreground 'ff5f5f' } Widget OnText { class 'Text' expression 'Onlinezeit' width 10 Foreground '999999' } Widget CRCBarTextMitte { class 'Text' expression '_100' width 4 Foreground 'ffffff' } Widget CRCBarText10 { class 'Text' expression '_10 Err/h' width 9 Foreground 'ffffff' } Widget CRCBarText1000 { class 'Text' expression '_1000' width 5 Foreground 'ffffff' } Widget VolText1 { class 'Text' expression ' 7 MB/h' width 10 Foreground 'ffffff' Background '00000000' } Widget VolText10 { class 'Text' expression ' 0,24h ___________ _70' width 23 Foreground 'ffffff' Background '00000000' } Widget VolText100 { class 'Text' expression '_2,4h ___________ _700' width 24 Foreground 'ffffff' Background '00000000' } Widget VolText1000 { class 'Text' expression '_ ___________ _' width 21 Foreground 'ffffff' Background '00000000' } Widget VolTextFull { class 'Text' expression '_24h ___________ _7000' width 25 Foreground 'ffffff' Background '00000000' } Widget VolBarText { class 'Text' expression 'Traffic' width 7 Foreground 'ff7e00' Background '00000000' } Widget Uptime { class 'Text' expression uptime('%dd%H:%M').' Online '.strftime('%H:%M',(time()-file::readline('/var/tmp/gone_online', 1))) width 31 align 'L' prefix 'Up ' update minute } Layout mylayout { Layer 0 { Row02.Col16 'BusyText' Row07.Col03 'wlanText' Row07.Col25 'adslText' Row08.Col03 'lanText' Row10.Col30 'CRCBarText1000' Row11.Col30 'CRCBarTextMitte' Row12.Col30 'CRCBarText10' Row13.Col30 'CRCNull' Row10.Col09 'SNRWert' Row18.Col09 'VolText10' Row17.Col09 'VolText100' Row16.Col09 'VolText1000' Row15.Col09 'VolTextFull' } # (Layer 1) 1. zeile oben frei Row02.Col02 'RAM' Row03.Col02 'ltg' Row04.Col02 'dslspeed' Row05.Col02 'IPaddy' Row02.Col19 'BusyBar' # Row07.Col02 'wlanBar' Row07.Col21 'adslBar' Row08.Col02 'lanBar' # Row09.Col15 'SNRBarTextOben' Row09.Col02 'SNRBar1' Row09.Col03 'SNRBar2' Row09.Col04 'SNRBar3' Row09.Col05 'SNRBar4' Row09.Col06 'SNRBar5' Row09.Col07 'SNRBar6' Row09.Col08 'SNRBar7' Row09.Col09 'SNRBar8' Row09.Col10 'SNRBar9' Row09.Col11 'SNRBar10' Row09.Col12 'SNRBar11' Row09.Col13 'SNRBar12' Row09.Col14 'SNRBarNow' # Row09.Col18 'CRCBar11' Row09.Col19 'CRCBar10' Row09.Col20 'CRCBar9' Row09.Col21 'CRCBar8' Row09.Col22 'CRCBar7' Row09.Col23 'CRCBar6' Row09.Col24 'CRCBar5' Row09.Col25 'CRCBar4' Row09.Col26 'CRCBar3' Row09.Col27 'CRCBar2' Row09.Col28 'CRCBar1' Row09.Col29 'CRCBarNow' Row14.Col02 'SNRText' Row14.Col18 'CRCText' # Row16.Col02 'OnBar1' Row16.Col03 'OnBar2' Row16.Col04 'OnBar3' Row16.Col05 'OnBar4' Row16.Col06 'OnBar5' Row16.Col07 'OnBar6' Row16.Col08 'OnBar7' # Row16.Col08 'OnBar8' # Row16.Col08 'OnBar9' # Row16.Col08 'OnBar10' # Row16.Col08 'OnBar11' # Row16.Col17 'VolBar11' Row16.Col18 'VolBar10' Row16.Col19 'VolBar9' Row16.Col20 'VolBar8' Row16.Col21 'VolBar7' Row16.Col22 'VolBar6' Row16.Col23 'VolBar5' Row16.Col24 'VolBar4' Row16.Col25 'VolBar3' Row16.Col26 'VolBar2' Row16.Col27 'VolBar1' Row16.Col28 'VolBarNow' Row19.Col29 'VolText1' Row20.Col21 'VolBarText' # Row21.Col02 'OnText' # Row23.Col02 'Uptime' # leerzeile ganz unten Layer 2 { Row13.Col15 'SNRBarTextUnten' } } Layout 'mylayout'
onlinechanged
Für die Onlinezeit-Statistiken benötigt man außerdem noch hilfe via onlinechanged bzw /var/tmp/onlinechanged
#!/bin/sh case "$1" in online ) date +%s > /tmp/gone_online ;; offline ) ONLINE=$(cat /tmp/gone_online) OFFLINE=$(date +%s) echo $ONLINE $(($OFFLINE-$ONLINE)) >> /tmp/onlinezeiten ;; esac
Dazu gibt es auch ein addon , näheres dazu ist hier zu finden http://www.zebradem.com/49910-infos-zu-addons#post421209