| 
 | 
|  | 
| 
 | 
| Ten dokument jest dostępny w następujących językach: English Castellano Deutsch Francais Turkce Polish | 
|   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