changeset 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 a7dd996617ef
children 254d656af72e
files service/arduinoNode/arduinoNode.py
diffstat 1 files changed, 16 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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):