|
![]() |
|
![]() Stefan Blechschmidt <sb/at/sbsbavaria.de> O Autorze: Bêd±c elektrykiem zosta³em posadzony przed monitorem stacji roboczej CAD w celu rozwijania pewnego prze³±cznika i stacji kontroli. Najwyra¼niej zarazi³em siê wtedy nieznanym "wirusem" i dobrze mi z tym. Translated to English by: Miros³aw Majka <mirek/at/ozimek.net.pl> Zawarto¶æ: |
Monitoring temperatury w Linuksie![]() Notka:
Serwery linuksowe sprawuj± siê odpowiedzialnie i bezpiecznie,
nie potrzebuj± specjalengo nadzoru, po prostu dzia³aj±, dzia³aj± i dzia³aj±... Ale co siê dzieje, kiedy ma³emu pingwinkowi zaczyna byæ za gor±co? Ostatnie lato nam nie¼le pokaza³o: powinni¶my sprawiæ naszemu ma³emu przyjacielowi system monitoringu temperatury. Ten artyku³ poka¿e Wam jak zainstalowaæ w³a¶nie taki system za cenê ok. 10 Euro. |
Brian C.Lane napisa³ program dla czujnika temperatury DS1820 from DALLAS Semiconductor Nie jest trudno z³o¿yæ omawiany system kontroli temp. przy u¿yciu dwóch takich komponentów i kilku innych czê¶ci.
Uwaga:
Brian C.Lane zmodyfikowa³ swoj± stronê i zaprzesta³ rozwijania wersji u¿ytej w tym artykule. Mo¿esz zatem ¶ci±gn±æ j± st±d:
digitemp-1.3.tar.gz
Ci z Was, którzy chc± u¿yæ aktualnej wersji digitemp-3.2.0.tar.gz mog± pobraæ j± z http://www.digitemp.com/software.shtml
.
Czujnik zosta³ oryginalnie wyprodukowany przez DALLAS Semiconductor,
która to fimra zosta³a wcielona do Maxim/Dallas Semiconductor.
Zgodnie ze specyfikacj±, czujnik mo¿e mierzyæ temperaturê w zakresie od -55°C do 125°C. Dane pomiarowe s± generowane jako cyfrowy sygna³ d³ugo¶ci 9 bitów. Dodatkowo, ka¿dy czujnik posiada 64 bitowy numer I.D., który pozwala pod³±czyæ wiêcej czujników. Mo¿liwe jest u¿ycie stu czujników na z³±czu d³ugo¶ci 300 metrów.
Obwód, który tutaj prezentujemy bêdzie dzia³a³ tylko z dziesiêcioma czujnikami na z³±czu 60 - metrowym. Obecnie u¿ywam czterech czujników na ok. 12 - metrowym z³aczu.
Mo¿esz znale¼æ wiêcej informacji na temat samego czujnika w Specyfikacji.
Chcia³bym dodaæ, ¿ê obwód prezentowany tutaj mo¿e mierzyæ maksymaln± temperaturê w wysoko¶ci 75°C, co powinno byæ adekwatne dla naszego zastosowania.
Aby móc pod³±czyæ czujnik do interfejsu szeregowego potrzebujemy kilku dodatkowych skladników. Znajdziesz je w wiêkszo¶ci sklepów detalicznych z czê¶ciami elektronicznymi, w internecie lub (najlepiej) w sklepie elektronicznym tu¿ za rogiem.
Ilo¶æ | Identyfikator | Typ | Typ alternatywny |
---|---|---|---|
1 | Opornik | 1,5 k Ohm | -------- |
2 | Dioda Schottky | 1N5818 | BAT 43 |
1 | Dioda Zener | 1N5228 | ZPY 3,9V |
1 | Dioda Zener | 1N5234 | ZPY 6,2V |
1 | Czujnik | DS18S20 | -------- |
1 | Gnizdko, Szeregowe | RS232C/9 | -------- |
1 | Pow³oka ³±cznika | SUB-D/9 | -------- |
1 | Deska do krojenia chleba | Papier laminowany | -------- |
Obwód interfejsu jest stosunkowo ³atwy do skonstruowania, wiêc wybra³em deskê do krojenia chleba jako podstawê. Przepraszam za moj± ma³o spójn± pracê :-).
Przy odrobninie umiejêtno¶ci komponenty mog± zostaæ zainstalowane we wtyczce interfejsu szeregowego.
Uwaga
Na tej stronie LinuxNetMag
mo¿emy znale¼æ artyku³ o digitemp, jak równie¿ i forum opisuj±ce obwód przystosowany do pomiarów wiêkszych ni¿ 75°C. Osobi¶cie jeszcze nie testowa³em ów obwodu.
Dla naszego obwodu interfejsu potrzebne s± tylko po³±czenia czujnika, ³±cze VDD mo¿e byæ usuniête. Ja je po prostu odci±³em :-).
Oto tabela obwodu karty interfejsu, czujnika i interfejsu szeregowego.
Opis | DB-25 | DB-9 | Czujnik |
DTR | 20 | 4 | Data (PIN 2) |
RXD | 3 | 2 | GND (PIN 1) |
TXD | 2 | 3 | |
GND | 1 and 7 | 5 |
Oprogramowanie jest dostêpne jako archiwum tar, mo¿na je zainstalowaæ w nastêpuj±cy sposób:
tar -xvzf digitemp-1.3.tar.gzw aktualnym katalogu.
W nowo zainstalowanym katalogu
digitemp1-3
znajduje siê kod ¼ród³owy,
dokumentacja i kilka skryptów Perla, jak równie¿ pliki binarne
digitemp
, które mog± zostaæ u¿yte od razu.
Je¶li digitemp
jest wywo³ywany bez parametrów, wtedy zobaczysz przegl±d mo¿liwych opcji.
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Usage: digitemp -s<device> [-i -d -l -r -v -t -p -a] -i Initalize .digitemprc file -s/dev/ttyS0 Set serial port -l/var/log/temperature Send output to logfile -f5 Fail delay in S -r500 Read delay in mS -v Verbose output -t0 Read Sensor # -a Read all Sensors -d5 Delay between samples (in sec.) -n50 Number of times to repeat -o2 Output format for logfile -o"output format string" See description below Logfile formats: 1 = One line per sensor, time, C, F (default) 2 = One line per sample, elapsed time, temperature in C 3 = Same as #2, except temperature is in F #2 and #3 have the data seperated by tabs, suitable for import into a spreadsheet or other graphing software. The format string uses strftime tokens plus 3 special ones for digitemp - %s for sensor #, %C for centigrage, %F for fahrenheight. The case of the token is important! The default format string is: "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59
"Pomoc" podpowiada, ¿e zainstalowane czujniki musz± zostaæ zainicjowane. Dlatego musimy zdefiniowaæ interfejs, do którego nasz obwód jest pod³±czony, jak równie¿ parametry pocz±tkowe.
Polecenie
digitemp -i -s/dev/ttyS0za³atwia to. W tym przypadku obwód interfejsu jest pod³±czony do pierwszego portu szeregowego.
Oprogramowanie wykrywa czujniki, wiadomo¶æ podobna do tej powinna siê pojawiæ:
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing ROM #0 : 1032724700080086 ROM #1 : 1092214400080089Zauwa¿amy, ¿e program wykry³ 2 czujniki. Dodatkowo w aktualnym katalogu zostaje utworzony plik
.digitemprc
, który bêdzie zawiera³ dane o czujnikach, interfejsie i formacie danych wyj¶ciowych.
Poleceniem ./digitemp -a
mo¿emy przeczytaæ dane wyj¶ciowe czujnika. Proszê zauwa¿yæ znak
./
, nadal jeste¶my w katalogu, ktory nie jest czê¶ci± zmiennej $PATH, czyli miejsc, gdzie pow³oka szuka plików wykonywalnych.
Dane wyj¶ciowe pomiaru
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Sep 24 21:53:35 Sensor 0 C: 37.94 F: 100.29 Sep 24 21:53:38 Sensor 1 C: 10.62 F: 51.129
Aby zintegrowaæ nasz program z systemem, musimy dokonaæ kilku poprawek.
Najpierw musimy skopiowaæ plik binarny
digitemp
w miejsce, które pozwala na uruchomienie go bez redefiniowania ¶cie¿ki. Ja wybra³em /usr/local/bin/
dla tego celu. Ci, którzy nie s± pewni co do ¶cie¿ki, mog± to sprawdziæ poleceniem echo
$PATH
. Ponadto, plik
.digitemprc
z danymi inicjacyjnymi powinien zostaæ skopiowany do katalogu domowego u¿ytkownika, który bêdzie dokonywa³ pomiarów. Aby zapisywaæ dane do pliku a nie na terminal, prze³±cznik -l[PATH/FILE NAME]
powinien zostaæ u¿yty.
Teraz przyda³oby siê zautomatyzowaæ nasze pomiary. Dobrze wypróbowany
cron powinien spe³niæ swoj± rolê. Poprzez crontab -u [USER]
-e
mo¿emy ustawiæ to dla ka¿dego u¿ytkownika. Wpis w /etc/crontab
0-59/15 * * * * /usr/local/bin/digitemp -a -l/var/log/digitemp.loginicjuje digitemp aby ten mierzy³ temperaturê co 15 minut i aby zapisywa³ wyniki do
/var/log/digitemp.log
.
Poleceniem tail /var/log/digitemp.log
mo¿emy sprawdziæ ostatnie linijki pomiarów. Je¶li plik
/var/log/digitemp.log
nie jest generowany,
proszê sprawdziæ prawa dostêpu do plików.
Archiwum tar zawiera kilka skryptów Perla do graficznej interpretacji wyników. Nie bêdê ich tutaj opisywa³. My¶lê nad napisaniem kolejnego artyku³u o tym jak zbieraæ dane czujników w bazie mySQL i jak interpretowaæ je poprzez stronê www.
Tak± sztuczkê mo¿na osi±gn±c dziêki Perlowi u¿ywaj±æ funkcji mySQL, CGI, graphic.
|
Strona prowadzona przez redakcjê LinuxFocus
© Stefan Blechschmidt, FDL LinuxFocus.org |
t³umaczenie:
|
2003-10-28, generated by lfparser version 2.43