1 from datetime import datetime
3 from xively import XivelyAPIClient
4 from xively import Datastream
5 from xively import Datapoint
15 def __init__(self, config):
20 self.api = XivelyAPIClient(self.config.apikey)
21 self.feed = self.api.feeds.get(self.config.feedid)
22 self.last = datetime.utcnow()
30 if not self.api or not self.feed:
34 def append(self, state):
37 self.queue.append(state)
38 delta = datetime.utcnow() - self.last
39 if delta.total_seconds() > self.config.maxrate:
44 def isset(state, key):
45 value = getattr(state, key)
46 return any([x!=None for x in value])
48 points = [ Datapoint(s.time, getattr(s,key)) \
49 for s in items if isset(s,key) ]
50 stream = Datastream(id=key)
51 stream.datapoints = points
54 if not self.running() or len(self.queue) == 0:
57 self.feed.datastreams = [
58 get(self.queue, 'acc'),
59 get(self.queue, 'mag'),
60 get(self.queue, 'touch'),
61 get(self.queue, 'light'),
62 get(self.queue, 'a2d'),
66 self.last = datetime.utcnow()