comparison service/powerEagle/reader.py @ 1017:3edda1f7a322

LoopingCall sets the interview between calls, but I want the period of calls Ignore-this: 224af7b995395d5e0c43c382360e4c90 darcs-hash:ac6b7338bc3a80b4b53be59b63c4a612daf49f7b
author drewp <drewp@bigasterisk.com>
date Tue, 15 Dec 2015 00:41:51 -0800
parents 1c5ff4c16f1e
children 7a1e9ef4c8b2
comparison
equal deleted inserted replaced
1016:1c5ff4c16f1e 1017:3edda1f7a322
3 import sys 3 import sys
4 sys.path.append("/my/proj/homeauto/lib") 4 sys.path.append("/my/proj/homeauto/lib")
5 from logsetup import log 5 from logsetup import log
6 sys.path.append("/my/proj/room") 6 sys.path.append("/my/proj/room")
7 from carbondata import CarbonClient 7 from carbondata import CarbonClient
8 from twisted.internet.task import LoopingCall
9 from twisted.internet.defer import inlineCallbacks 8 from twisted.internet.defer import inlineCallbacks
10 from twisted.internet import reactor 9 from twisted.internet import reactor
11 from cyclone.httpclient import fetch 10 from cyclone.httpclient import fetch
12 11
13 from private_config import deviceIp, cloudId, installId, macId, periodSec 12 from private_config import deviceIp, cloudId, installId, macId, periodSec
17 carbon = CarbonClient(serverHost='bang') 16 carbon = CarbonClient(serverHost='bang')
18 17
19 class Poller(object): 18 class Poller(object):
20 def __init__(self, carbon): 19 def __init__(self, carbon):
21 self.carbon = carbon 20 self.carbon = carbon
22 self.lastPollTime = 0 21 reactor.callLater(0, self.poll)
23 LoopingCall(self.poll).start(interval=periodSec)
24 22
25 @inlineCallbacks 23 @inlineCallbacks
26 def poll(self): 24 def poll(self):
27 ret = None 25 ret = None
26 startTime = time.time()
28 try: 27 try:
29 resp = yield fetch( 28 resp = yield fetch(
30 'http://{deviceIp}/cgi-bin/cgi_manager'.format(deviceIp=deviceIp), 29 'http://{deviceIp}/cgi-bin/cgi_manager'.format(deviceIp=deviceIp),
31 method='POST', 30 method='POST',
32 headers={'Authorization': ['Basic %s' % auth]}, 31 headers={'Authorization': ['Basic %s' % auth]},
49 float(ret['summation_delivered'])) 48 float(ret['summation_delivered']))
50 except Exception as e: 49 except Exception as e:
51 log.error("failed: %r", e) 50 log.error("failed: %r", e)
52 log.error(repr(ret)) 51 log.error(repr(ret))
53 52
54 self.lastPollTime = time.time() 53 now = time.time()
54 goal = startTime + periodSec
55 reactor.callLater(max(1, goal - now), self.poll)
55 56
56 57
57 log.setLevel(logging.INFO) 58 log.setLevel(logging.INFO)
58 carbon = CarbonClient(serverHost='bang') 59 carbon = CarbonClient(serverHost='bang')
59 p = Poller(carbon) 60 p = Poller(carbon)