Commit | Line | Data |
---|---|---|
bba33fe1 JM |
1 | #!/bin/bash |
2 | ||
3 | DEV=/dev/ttyUSB0 | |
4 | TIMEOUT=5 | |
5 | LOCK=/var/tmp/readtemp.lock | |
6 | ||
7 | SYSDEV=/sys/bus/usb/devices | |
8 | for i in $SYSDEV/* | |
9 | do | |
10 | if [ -f "$i/interface" ] | |
11 | then | |
12 | if grep -q "CP2102 USB to UART" "$i/interface" | |
13 | then | |
14 | DEV=/dev/$(basename `ls -d $i/ttyUSB* `) | |
15 | # dont break here, keep going so we get the last one | |
16 | # break | |
17 | fi | |
18 | fi | |
19 | done | |
20 | ||
21 | if ! lockfile -r 3 -l 5 $LOCK | |
22 | then | |
23 | echo "Failed to obtain lock" | |
24 | exit; | |
25 | fi | |
26 | ||
27 | if ! stty --file=$DEV | grep -q 'speed 19200' | |
28 | then | |
29 | stty --file=$DEV 19200 | |
30 | sleep 1 | |
31 | fi | |
32 | ||
33 | if ! stty --file=$DEV | grep -q '-echo' | |
34 | then | |
35 | stty --file=$DEV -echo | |
36 | sleep 1 | |
37 | fi | |
38 | ||
39 | echo -n "t" >> $DEV | |
40 | ||
41 | MODE=plain | |
42 | if [ $# -ge 1 ] && [ "$1" == "-c" ]; then | |
43 | MODE=cacti | |
44 | fi | |
45 | ||
46 | while read -t $TIMEOUT -u 3 CODE ID TEM OTH; do | |
47 | # last one | |
48 | if [ "$CODE" == "END" ]; then | |
49 | break; | |
50 | fi | |
51 | ||
52 | # not a valid line | |
53 | if [ "$CODE" != "TEMP" ]; then | |
54 | echo "ERROR CODE=$CODE ID=$ID TEM=$TEM" | |
55 | continue; | |
56 | fi | |
57 | ||
58 | # truncate for paranoia | |
59 | TEM=${TEM:0:4} | |
60 | ||
61 | # calculate degrees from the hex code | |
62 | DEGC=`echo "16 i $TEM A i 4 k 0.0625 * p" | dc` | |
63 | # display the result | |
64 | if [ $MODE == "cacti" ]; then | |
65 | printf "id:%s temp:%s\n", "$ID" "$DEGC" | |
66 | else | |
67 | printf "%s %s degC\n" "$ID" "$DEGC"; | |
68 | fi | |
69 | done 3< $DEV | |
70 | ||
71 | rm -f $LOCK |