# HG changeset patch # User drewp # Date 1451816667 28800 # Node ID 651e5c5b1f3d96beda57578bbc858235b2c7183a # Parent 3edda1f7a3225e120a2ba797ab6ee2044168bb52 write some values to carbon/graphite upon polling Ignore-this: 7f4f05ad994a8c18c61df2da421e0308 darcs-hash:0c36784979aa717161b954a9abddc77aa28434d4 diff -r 3edda1f7a322 -r 651e5c5b1f3d service/arduinoNode/arduinoNode.py --- a/service/arduinoNode/arduinoNode.py Tue Dec 15 00:41:51 2015 -0800 +++ b/service/arduinoNode/arduinoNode.py Sun Jan 03 02:24:27 2016 -0800 @@ -25,6 +25,9 @@ sys.path.append("/my/site/magma") from stategraph import StateGraph +sys.path.append("/my/proj/room") +from carbondata import CarbonClient + log = logging.getLogger() logging.getLogger('serial').setLevel(logging.WARN) @@ -70,7 +73,7 @@ self._polledDevs = [d for d in self._devs if d.generatePollCode()] self._statementsFromInputs = {} # input device uri: latest statements - + self._carbon = CarbonClient(serverHost='bang') self.open() def description(self): @@ -115,6 +118,18 @@ elapsed = time.time() - t1 if elapsed > 1.0: log.warn('poll took %.1f seconds' % elapsed) + self._exportToGraphite() + + def _exportToGraphite(self): + # note this is writing way too often- graphite is storing at a lower res + now = time.time() + # objects of these statements are suitable as graphite values. + graphitePredicates = {ROOM['temperatureF']} + for s, graphiteName in self.graph.subject_objects(ROOM['graphiteName']): + for group in self._statementsFromInputs.values(): + for stmt in group: + if stmt[0] == s and stmt[1] in graphitePredicates: + self._carbon.send(graphiteName, stmt[2].toPython(), now) def currentGraph(self):