1. Wgrywanie obrazu poprzez atftpd.
2. Budujemy własny firmware.
3. WRT54G3G + PCMCIA,USB,block-extroot.
4. WRT54G3G + WEBCAM.
5. WRT54G3G + SERIAL.
6. WRT54G3G + Pomiar temperatury DS18B20 serial (RS232).
7. WRT54G3G + Pomiar temperatury DS18B20 + DS2490 (USB).
8. Wykresy temperatury przy pomocy rrdtool.
9. Opkg - przydatne komendy.
10. Tinyproxy.
11. Logrotate dla tinyproxy.

1. Instalacja nowego obrazu przy pomocy atftp # ifconfig eth0 192.168.1.2 netmask 255.255.255.0 # atftp # tftp> connect 192.168.1.1 # tftp> verbose # tftp> mode octet # tftp> put openwrt-wrt*-squashfs.bin Gdy wyskoczy błąd "incorect patern" Edytujemy plik obrazu openwrt-wrt54g3g-em-squashfs.bin (mc/F4) Jeśli cztery pierwsze litery w pierwszym wierszu to W3GN zamieniamy je na W54F. Zapisujemy obraz i wykonujemy powyższą procedurę ponownie. 2. Budujemy własny firmware: Na początek ściągamy Image Buildera z openwrt.org Gdy już mamy plik OpenWrt-ImageBuilder-brcm47xx-for-Linux-i686.tar.bz2, wypakowujemy go i wchodzimy do katalogu. Po wykonaniu polecenia "make info" dostaniemy listę: Current Target i Default Packages. Target w tym pzypadku jest brcm47xx. A Default Packages to domyślnie instalowane pakiety. Oczywiście budując swój firmware odejmujemy lub dodajemy potrzebne paczki. Aby kompilować domyślny firmware wpisujemy: # make image Aby skompilować firmware z dodatkowymi paczkami: # make image PACKAGES="kmod-pcmcia-core kmod-pcmcia-yenta" Aby usunąć paczki z defaulta np: ppp ppp-mod-pppoe: # make image PACKAGES="-ppp -ppp-mod-pppoe" Aby dodac do swojego firmwaru pliki lub skrypty: (Katalog files musimy stworzyć w katalogu po rozpakowaniu tara z openwrt.org) # make image FILES=files/ Oczywiście wszystkie powyższe opcje można łączyć w jedej lini: # make image PACKAGES="kmod-pcmcia-core kmod-pcmcia-yenta -ppp -ppp-mod-pppoe" FILES=files/ 3. WRT54G3G + PCMCIA,USB,block-extroot: Na początku musimy skompilować własny firmware z paczkami: kmod-pcmcia-core, kmod-pcmcia-yenta - które odpowiadaja za obsługe pcmcia. kmod-usb-storage, kmod-nls-base, kmod-usb-core, kmod-scsi-core, kmod-usb-storage kmod-usb2 - odpowiadają za obsługę storage, i usb. block-mount, kmod-fs-ext2 - odpowiadają za montowanie i obslugę systemu plików ext2. block-extroot - odpowiada za podmontowanie zewnętrznego dysku jako external rootfs. Ale to nie wszystko w przypadku urządzenia z pcmcia i karta pcmcia z wejściami USB, musimy załadować wcześniej odpowiednie moduły czyli pcmcia_core,pcmcia,rsrc_nonstatic,yenta_socket. A zrobimy to poprzez skompilowanie własnego firmwaru z nowym plikiem który będzie umieszczony w katalogu ImageBuilder/files/lib/preinit/01_pcmcia.conf: insmod pcmcia_core insmod pcmcia insmod rsrc_nonstatic insmod yenta_socket Można też umieśćić w naszym obrazie plik fstab z którego extroot pobierze potrzebne dane: ImageBuilder/files/etc/config/fstab config global automount option from_fstab 1 option anon_mount 1 config mount option target option device /dev/sda2 option fstype ext2 option options rw,sync option enabled 1 option enabled_fsck 1 option is_rootfs 1 Czyli reasumując odwołujemy się do artykułu wyżej. Musimy skompilować własny kernel z tymi paczkami i plikami żeby dostarczyć odpowiednich sterowników przy starcie urządzenia. Będzie to wygladac tak: make clean make image PACKAGES="kmod-pcmcia-core kmod-pcmcia-yenta \ kmod-usb-core kmod-scsi-core kmod-usb-storage kmod-usb2 kmod-usb-ohci \ kmod-fs-ext2 kmod-fs-mbcache block-mount kmod-nls-base \ block-extroot block-hotplug e2fsprogs" FILES=files/ Po udanym skompilowaniu naszego firmwaru przechodzimy do wgrywania atftp. 4. WRT54G3G + WEBCAM: Uruchomienie kamerki na usb sprawadza się do zainstalowania odpowiednich modułów. W moim przypadku kamerka wykorzystuje sterowniki uvc wiec musimy doinstalować takie pakiety: # opkg install kmod-input-core kmod-i2c-core kmod-usb2 kmod-usb-ohci kmod-video-uvc Fajnym programikiem do oglądania i rejestrowania obrazu jest motion. Ale niestety obciąża mocno CPU. # opkg install motion Szukamy w /etc/motion.conf opcji "webcam_localhost on" i zmieniamy na off Uruchamiamy: # motion 5. WRT54G3G + SERIAL: 6. WRT54G3G + Pomiar temperatury DS18B20 serial (RS232): Aby mieżyć temperature przy pomocy DS18B20 musimy zbudować przystawkę dla seriala czyli DS9097E. Schemat jest bardzo prosty i łatwy do znalezienia w necie. U mnie po zbudowaniu wygląda ona tak : Tekst alternatywny Po zbudowaniu przystawki możemy podłączyć ją bezpośrednio do portu COM lub zastosować kabel USB <=> Serial. Przy podłączeniu do routera na pewno trzeba było by zastosować dodatkowe zasilanie dla USB. Program obsługujący czujniki to digitemp. Po instalacji wywołujemy komendę digitemp_DS9097 -i -a. Która tworzy plik konfgiuracyjny (.digitemprc) i skanuje w poszukiwaniu czujników. 7. WRT54G3G + Pomiar temperatury DS18B20 + DS2490 (USB): W tym przypadku czujniki możemy podłączyć na USB ale sama przystawka DS2490 jest droższa na allegro koło 70 zl. Oczywiście podłączając do routera potrzebujemy dodatkowego zasilania najlepiej zmienić orginalny zasilacz 1000mA na jakiś większy np: 1.5A i zastosować stabilizator napięcia np: 7805 1.5A który będzie nam dawał dodatkowe 5V dla USB. Aby zobaczyć wyniki z czujników musimy wygenerować plik konfiguracyjny (.digitemprc) komendą digitemp_DS2490 -i -a. Nie wiem czy zawsze tak jest ale możę sie nie pokazać żaden odczyt wiec sprawdzamy po kolei czujniki komendą: /usr/bin/digitemp_DS2490 -t 0 -q -o%C gdzie -t 0 to nr czujnika. 8. Wykresy temperatury przy pomocy rrdtool: Skrypt tworzący bazy rrd i generujący wykresy (godzinny,dzienny,miesięczny,roczny) z małym opisem korzystania z rrdtool: #! /bin/bash cd /var/www/localhost/htdocs/rrdtool/temp_rrdtool/ echo "`date +%H%M`" >> wykonalosie if [ ! -e base/sensor0.rrd ] then { echo "tworze bazy"; # -s 60 (1min) co ile maja być analizowane próbki # DS źródło danych które przyjmuje 5 parametrów # DS:nazwa:rodzaj_źródła_danych:maksymalny_czas:wartość_min:wartość_max # nazwa = temp # rodzaj_źródła_danych = GAUGE próbki zapisywane bez zmian. np temp. # maksymalny_czas = 400 ilość czasu po którym próbka jest przyjmowana jako NaN Unknown. # wartość_min:wartość_max = -50:50 zakres przyjmowanych danych. U jeśli nie chcemy określać. # RRA gromadzenie próbek # RRA:typ_wartości:współczynnik:ilość_próbek:ilość_rekordów # typ_wartości = AVERAGE - wartość uśredniona, MIN, MAX, LAST # co 10 min daje 6 próbek na 1h. # 6 próbek*24hour*7day*4week*12month - baza wazy 1.5mb # co 1 min daje 60 próbek na 1h. # 60 próbek*24*7*4*12 =483840 baza wazy 15mb rrdtool create base/sensor0.rrd -s 600 DS:temp:GAUGE:700:-50:50 \ RRA:AVERAGE:0.5:1:48384 \ RRA:MAX:0.5:1:48384 \ RRA:MIN:0.5:1:48384 \ RRA:LAST:0.5:1:48384 rrdtool create base/sensor1.rrd -s 600 DS:temp:GAUGE:700:-50:50 \ RRA:AVERAGE:0.5:1:48384 \ RRA:MAX:0.5:1:48384 \ RRA:MIN:0.5:1:48384 \ RRA:LAST:0.5:1:48384 } else { echo "bazy sa"; } fi temp0=`/usr/bin/digitemp_DS9097 -c .digitemprc -t 0 -q -o%C` temp1=`/usr/bin/digitemp_DS9097 -c .digitemprc -t 1 -q -o%C` rrdtool update base/sensor0.rrd N:$temp0 rrdtool update base/sensor1.rrd N:$temp1 rrdtool graph img/hour.png \ --imgformat PNG \ --title="Wykres godzinny" \ --width 800 --height 300 \ --vertical-label="Stopnie Celsjusza C" \ -s -1hour \ DEF:temp=base/sensor0.rrd:temp:AVERAGE \ DEF:temp1=base/sensor1.rrd:temp:AVERAGE \ LINE1:temp#0000ff:"W domu " \ GPRINT:temp:LAST:"aktualna %2.2lf C" \ GPRINT:temp:MIN:"minimalna %2.2lf C" \ GPRINT:temp:MAX:"maksymalna %2.2lf C" \ GPRINT:temp:AVERAGE:"srednia %2.2lf C \n" \ LINE1:temp1#FF0000:"Na zewnatrz" \ GPRINT:temp1:LAST:"aktualna %2.2lf C" \ GPRINT:temp1:MIN:"minimalna %2.2lf C" \ GPRINT:temp1:MAX:"maksymalna %2.2lf C" \ GPRINT:temp1:AVERAGE:"srednia %2.2lf C \n" \ rrdtool graph img/day.png \ --imgformat PNG \ --title="Wykres dzienny" \ --width 800 --height 300 \ --vertical-label="Stopnie Celsjusza C" \ -s -1day \ DEF:temp=base/sensor0.rrd:temp:AVERAGE \ DEF:temp1=base/sensor1.rrd:temp:AVERAGE \ LINE1:temp#0000ff:"W domu " \ GPRINT:temp:LAST:"aktualna %2.2lf C" \ GPRINT:temp:MIN:"minimalna %2.2lf C" \ GPRINT:temp:MAX:"maksymalna %2.2lf C" \ GPRINT:temp:AVERAGE:"srednia %2.2lf C \n" \ LINE1:temp1#FF0000:"Na zewnatrz" \ GPRINT:temp1:LAST:"aktualna %2.2lf C" \ GPRINT:temp1:MIN:"minimalna %2.2lf C" \ GPRINT:temp1:MAX:"maksymalna %2.2lf C" \ GPRINT:temp1:AVERAGE:"srednia %2.2lf C \n" \ rrdtool graph img/week.png \ --imgformat PNG \ --title="Wykres tygodniowy" \ --width 800 --height 300 \ --vertical-label="Stopnie Celsjusza C" \ -s -1week \ DEF:temp=base/sensor0.rrd:temp:AVERAGE \ DEF:temp1=base/sensor1.rrd:temp:AVERAGE \ LINE1:temp#0000ff:"W domu " \ GPRINT:temp:LAST:"aktualna %2.2lf C" \ GPRINT:temp:MIN:"minimalna %2.2lf C" \ GPRINT:temp:MAX:"maksymalna %2.2lf C" \ GPRINT:temp:AVERAGE:"srednia %2.2lf C \n" \ LINE1:temp1#FF0000:"Na zewnatrz" \ GPRINT:temp1:LAST:"aktualna %2.2lf C" \ GPRINT:temp1:MIN:"minimalna %2.2lf C" \ GPRINT:temp1:MAX:"maksymalna %2.2lf C" \ GPRINT:temp1:AVERAGE:"srednia %2.2lf C \n" \ rrdtool graph img/month.png \ --imgformat PNG \ --title="Wykres miesieczny" \ --width 800 --height 300 \ --vertical-label="Stopnie Celsjusza C" \ -s -1month \ DEF:temp=base/sensor0.rrd:temp:AVERAGE \ DEF:temp1=base/sensor1.rrd:temp:AVERAGE \ LINE1:temp#0000ff:"W domu " \ GPRINT:temp:LAST:"aktualna %2.2lf C" \ GPRINT:temp:MIN:"minimalna %2.2lf C" \ GPRINT:temp:MAX:"maksymalna %2.2lf C" \ GPRINT:temp:AVERAGE:"srednia %2.2lf C \n" \ LINE1:temp1#FF0000:"Na zewnatrz" \ GPRINT:temp1:LAST:"aktualna %2.2lf C" \ GPRINT:temp1:MIN:"minimalna %2.2lf C" \ GPRINT:temp1:MAX:"maksymalna %2.2lf C" \ GPRINT:temp1:AVERAGE:"srednia %2.2lf C \n" \ rrdtool graph img/year.png \ --imgformat PNG \ --title="Wykres roczny" \ --width 800 --height 300 \ --vertical-label="Stopnie Celsjusza C" \ -s -1year \ DEF:temp=base/sensor0.rrd:temp:AVERAGE \ DEF:temp1=base/sensor1.rrd:temp:AVERAGE \ LINE1:temp#0000ff:"W domu " \ GPRINT:temp:LAST:"aktualna %2.2lf C" \ GPRINT:temp:MIN:"minimalna %2.2lf C" \ GPRINT:temp:MAX:"maksymalna %2.2lf C" \ GPRINT:temp:AVERAGE:"srednia %2.2lf C \n" \ LINE1:temp1#FF0000:"Na zewnatrz" \ GPRINT:temp1:LAST:"aktualna %2.2lf C" \ GPRINT:temp1:MIN:"minimalna %2.2lf C" \ GPRINT:temp1:MAX:"maksymalna %2.2lf C" \ GPRINT:temp1:AVERAGE:"srednia %2.2lf C \n" \ 9. Opkg - przydatne komendy: 1. Wywalanie pakietu i zaleznosci: # opkg remove --autoremove dsniff 2. Wyświetlanie zainstalowanych pakietów: # opkg list-installed 3. Wyświetlanie informacji o pakiecie: # opkg info dsniff 4. Update paczek: # opkg update 10. Tinyproxy: 1. Instalacja tinyproxy: # opkg install tinyproxy 2. Konfigurujemy proxy w pliku /etc/conf/tinyproxy: # option enable 0 Ustalamy na którym porcie server proxy ma nasłuchiwać: # option Port 8888 Ustalamy na którym adresie server proxy ma nasłuchiwać: #option Listen 192.168.0.1 Ustawiamy ile proceów proxy ma zostać uruchomionych przy starcie: # option StartServers 10 Jakie adresy mogą łączyć sie z proxy: # list Allow 192.168.0.0/16 Włączmy filtrowanie, lista blokowanych w pliku /etc/tinyproxy/filter: # option FilterURLs On 3. Iptables # iptables -t nat -I PREROUTING 1 -i br-lan -p tcp --dport 80 -j DNAT --to 192.168.1.1:8888 11. Logrotate dla tinyproxy: 1. Instalacja logrotate: # opkg install logrotate 2. W /etc/logrotate.d/ tworzymy plik tinyproxy a w nim: /overlay/log/tinyproxy.log { missingok rotate 4 size 100k daily }
.news | .kontakt | .info  |  strona leży na (kiedyś) darmowym hostingu http://www.pdg.pl  v2010.6.19