czyli na OpenWrt te偶 si臋 da
Ostatnia zmiana: 2014-01-10 22:42

Dysponuj膮c interfejsem RS232C (pe艂nym, z odpowiednimi napi臋ciami), mo偶na pos艂u偶y膰 si臋 opisem interfejsu pasywnego. Poniewa偶 z pewnych powod贸w nie mo偶na by艂o zrobi膰 tego na WL-500gP, zosta艂 zakupiony interfejs aktywny na DS2490 (koszt ok 50pln), na USB. Wykorzystano Asusa WL-500gP z OpenWrt Kamikaze 8.09

Instalacja

Niezb臋dne elementy to:
- interfejs DS2490


(kliknij, aby powi臋kszy膰)

Jest to de facto konwerter USB na magistral臋 1Wire. Mo偶na wi臋c pod艂膮czy膰 ca艂膮 mas臋 chip贸w wyposa偶onych w magistral臋 1-Wire, nie tylko czujnik temperatury.

- dowolna liczba czujnik贸w DS18S20 lub DS18B20

Monta偶 ca艂o艣ci jest prosty, interfejs nale偶y pod艂膮czy膰 do portu USB asusa, i pod艂膮czy膰 odpowiednio czujnik DS18S20 (masa do masy, 1wire do 1 wire). Przew贸d mo偶e by膰 do 30m, jednak z r贸偶nych powod贸w nie nale偶y przesadza膰 z d艂ugo艣ci膮. Spos贸b budowy czujnika opisany jest przy okazji interfejsu pasywnego - n贸偶k臋 DQ pod艂膮czy膰 do 1wire, natomiast dwie skrajne z艂膮czy膰 ze sob膮 i po艂膮czy膰 do masy. Liczba czujnik贸w mo偶e by膰 dowolna, pod艂膮czamy je r贸wnolegle z istniej膮cymi.

W sprzeda偶y znajduje si臋 tak偶e modu艂 oparty o DS2480B (to nie jest to samo co DS2490!).

Uruchomienie

Do pomiaru zostanie wykorzystany program digitemp. Instalujemy go w standardowy spos贸b:


    # opkg install digitemp

Zak艂adaj膮c 偶e mamy pod艂膮czony czujnik prawid艂owo, sprawdzamy, czy wszystko dzia艂a i generujemy plik konfiguracyjny:


    # digitemp_DS2490 -a -i

Wynikiem powinna by膰 informacja, 偶e wykryto interfejs DS2490 na magistrali USB, wyszukano i znaleziono czujniki. Oraz oczywi艣cie odczyt temperatury z czujnik贸w. Je偶eli nie dzia艂a, nale偶y w pierwszej kolejno艣ci sprawdzi膰, czy w艂a艣ciwie zosta艂 pod艂膮czony czujnik pod interfejs.

Dla DS2480B:


    # opkg install kmod-usb-serial-ftdi digitemp
    # digitemp_DS9097U -s /dev/ttyUSB0 -a -i

Pomiar

Pomiar i archiwizacja pomiar贸w sprowadza si臋 do napisania odpowiedniego skryptu (do umieszczenia w /usr/sbin/gettemp.sh):


    # echo `digitemp_DS2490 -t 0 -q -o "%Y-%m-%d %H:%M:%S %.2C" | grep -v Found` >> temperature.txt

(lub digitemp_DS9097U...)
Dane s膮 odczytywane i dodawane do pliku temperature.txt w formacie "YYYY-MM-DD HH:MM:SS 00.00" w kolejnych liniach. Oczywi艣cie, zapis pomiaru mo偶na zrealizowa膰 inaczej, wk艂ada膰 do bazy danych lub wy艣wietla膰 bezpo艣rednio na WWW.

Automatyzacja sprowadza si臋 do dodania odpowiedniego polecenia do crona


    # echo "0,10,20,30,40,50 * * * * /usr/sbin/gettemp.sh" >> /etc/crontabs/root

Maj膮c zebran膮 dostateczn膮 ilo艣膰 danych mo偶na sporz膮dzi膰 wykres korzystaj膮c z dost臋pnych narz臋dzi (rrdtool, php czy gnuplot). W tym przypadku zosta艂 wykorzystany gnuplot.