diff options
Diffstat (limited to 'doorwatch.py')
-rw-r--r-- | doorwatch.py | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/doorwatch.py b/doorwatch.py index c88ac6a..cdb22fb 100644 --- a/doorwatch.py +++ b/doorwatch.py @@ -5,33 +5,45 @@ import subprocess import os -import urllib +import urllib2 import json import sys import time if __name__ == '__main__': workdir = os.path.realpath(os.path.dirname(__file__)) - was_closed = False # Don't ding at startup + was_closed = None # Only react to changes + last_ref = None while True: time.sleep(1) try: r = None - r = urllib.urlopen('http://172.22.83.5/subcan.json') - data = json.loads(r.read()) + req_url = 'http://beaglebone.local.sublab.org/longpoll' + if last_ref is not None: + req_url += '?' + last_ref + r = urllib2.urlopen(req_url, timeout=120) + buf = r.read() + if not buf.strip(): + continue + data = json.loads(buf) except Exception: sys.excepthook(*sys.exc_info()) + last_ref = None continue finally: if r is not None: r.close() + last_ref = data['ref'] + data = data['data'] + closed = data['door.left']['value'] - if was_closed and not closed: - print "Door has been opened!" - subprocess.call(['paplay', os.path.join(workdir, 'doorwatch.wav')]) - if not was_closed and closed: - print "Door has been closed." + if was_closed is not None: + if was_closed and not closed: + print "Door has been opened!" + subprocess.call(['paplay', '--volume=32661', os.path.join(workdir, 'doorwatch.wav')]) + if not was_closed and closed: + print "Door has been closed." was_closed = closed |