Mercurial > code > home > repos > homeauto
comparison service/arduinoNode/arduinoNode.py @ 213:9c8674329a13
write some values to carbon/graphite upon polling
Ignore-this: 7f4f05ad994a8c18c61df2da421e0308
author | drewp@bigasterisk.com |
---|---|
date | Sun, 03 Jan 2016 02:24:27 -0800 |
parents | 6c6897a139da |
children | 254d656af72e |
comparison
equal
deleted
inserted
replaced
212:a7dd996617ef | 213:9c8674329a13 |
---|---|
23 from loggingserial import LoggingSerial | 23 from loggingserial import LoggingSerial |
24 | 24 |
25 sys.path.append("/my/site/magma") | 25 sys.path.append("/my/site/magma") |
26 from stategraph import StateGraph | 26 from stategraph import StateGraph |
27 | 27 |
28 sys.path.append("/my/proj/room") | |
29 from carbondata import CarbonClient | |
30 | |
28 log = logging.getLogger() | 31 log = logging.getLogger() |
29 logging.getLogger('serial').setLevel(logging.WARN) | 32 logging.getLogger('serial').setLevel(logging.WARN) |
30 | 33 |
31 ROOM = Namespace('http://projects.bigasterisk.com/room/') | 34 ROOM = Namespace('http://projects.bigasterisk.com/room/') |
32 HOST = Namespace('http://bigasterisk.com/ruler/host/') | 35 HOST = Namespace('http://bigasterisk.com/ruler/host/') |
68 self._devCommandNum = dict((dev.uri, ACTION_BASE + devIndex) | 71 self._devCommandNum = dict((dev.uri, ACTION_BASE + devIndex) |
69 for devIndex, dev in enumerate(self._devs)) | 72 for devIndex, dev in enumerate(self._devs)) |
70 self._polledDevs = [d for d in self._devs if d.generatePollCode()] | 73 self._polledDevs = [d for d in self._devs if d.generatePollCode()] |
71 | 74 |
72 self._statementsFromInputs = {} # input device uri: latest statements | 75 self._statementsFromInputs = {} # input device uri: latest statements |
73 | 76 self._carbon = CarbonClient(serverHost='bang') |
74 self.open() | 77 self.open() |
75 | 78 |
76 def description(self): | 79 def description(self): |
77 """for web page""" | 80 """for web page""" |
78 return { | 81 return { |
113 if byte != 'x': | 116 if byte != 'x': |
114 raise ValueError("after poll, got %x instead of 'x'" % byte) | 117 raise ValueError("after poll, got %x instead of 'x'" % byte) |
115 elapsed = time.time() - t1 | 118 elapsed = time.time() - t1 |
116 if elapsed > 1.0: | 119 if elapsed > 1.0: |
117 log.warn('poll took %.1f seconds' % elapsed) | 120 log.warn('poll took %.1f seconds' % elapsed) |
121 self._exportToGraphite() | |
122 | |
123 def _exportToGraphite(self): | |
124 # note this is writing way too often- graphite is storing at a lower res | |
125 now = time.time() | |
126 # objects of these statements are suitable as graphite values. | |
127 graphitePredicates = {ROOM['temperatureF']} | |
128 for s, graphiteName in self.graph.subject_objects(ROOM['graphiteName']): | |
129 for group in self._statementsFromInputs.values(): | |
130 for stmt in group: | |
131 if stmt[0] == s and stmt[1] in graphitePredicates: | |
132 self._carbon.send(graphiteName, stmt[2].toPython(), now) | |
118 | 133 |
119 | 134 |
120 def currentGraph(self): | 135 def currentGraph(self): |
121 g = Graph() | 136 g = Graph() |
122 | 137 |