1 |
torben |
629 |
#!/usr/bin/python |
2 |
|
|
|
3 |
|
|
# Requireed python modules: |
4 |
|
|
# * Mechanize |
5 |
|
|
# * BeatifulSoup |
6 |
|
|
# apt-get install python-mechanize python-beautifulsoup beep |
7 |
|
|
|
8 |
|
|
|
9 |
|
|
|
10 |
|
|
from mechanize import Browser |
11 |
|
|
from mechanize import _response |
12 |
|
|
from BeautifulSoup import BeautifulSoup |
13 |
|
|
|
14 |
|
|
import time |
15 |
|
|
import sys |
16 |
|
|
import os |
17 |
|
|
|
18 |
|
|
savedVal1 = 0 |
19 |
|
|
|
20 |
|
|
class CheckDevice: |
21 |
|
|
|
22 |
|
|
def __init__(self): #constructor |
23 |
|
|
self.savedVal1 = 0 |
24 |
|
|
|
25 |
|
|
def beep(self): |
26 |
|
|
os.system("beep -l 200 -r 2") |
27 |
|
|
|
28 |
|
|
def printTime(self): |
29 |
|
|
os.system("date"); |
30 |
|
|
|
31 |
|
|
def checkVars(self): |
32 |
|
|
br = Browser() |
33 |
|
|
try: |
34 |
|
|
br.open("http://t-hoerup.dk/test.html") |
35 |
|
|
|
36 |
|
|
soup = BeautifulSoup( br.response().read() ) |
37 |
|
|
|
38 |
|
|
rows = soup.findAll('tr') |
39 |
|
|
|
40 |
|
|
for row in rows: |
41 |
|
|
key = row.contents[1].string |
42 |
|
|
val = row.contents[3].string |
43 |
|
|
# print "key ", key |
44 |
|
|
# print "val ", val |
45 |
|
|
|
46 |
|
|
if (key == "Key1"): |
47 |
|
|
if (val != self.savedVal1): |
48 |
|
|
self.beep() |
49 |
|
|
self.printTime() |
50 |
|
|
print "Val1 has changed %s -> %s\n" % ( str(self.savedVal1), str(val) ) |
51 |
|
|
self.savedVal1 = val |
52 |
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
except: |
56 |
|
|
print "Error, probably a 404 : ", sys.exc_info() |
57 |
|
|
|
58 |
|
|
# print "----------------------------- done-------------------------" |
59 |
|
|
|
60 |
|
|
|
61 |
|
|
|
62 |
|
|
|
63 |
|
|
def main(): |
64 |
|
|
|
65 |
|
|
cd = CheckDevice() |
66 |
|
|
|
67 |
|
|
#dumb continous main-loop abort with ctrl+c and ignore the error output |
68 |
|
|
while (1): |
69 |
|
|
cd.checkVars() |
70 |
|
|
time.sleep(1) #seconds |
71 |
|
|
|
72 |
|
|
|
73 |
|
|
#Finally, launch main function |
74 |
|
|
main() |