# HG changeset patch # User drewp@bigasterisk.com # Date 1581321699 28800 # Node ID e9366f73e612578f52747b39ecc46d27dae111d5 # Parent 9ca69f2be87b0eec76ec12a007f434b7cb8e0884 serve current usage as a graph Ignore-this: 76d210d576784acb639762cd6c6e6f13 diff -r 9ca69f2be87b -r e9366f73e612 service/powerEagle/reader.py --- a/service/powerEagle/reader.py Sat Feb 08 04:02:22 2020 -0800 +++ b/service/powerEagle/reader.py Mon Feb 10 00:01:39 2020 -0800 @@ -9,10 +9,13 @@ from twisted.internet import reactor from twisted.internet.defer import inlineCallbacks import cyclone.web +from rdflib import Namespace, Literal from standardservice.logsetup import log, verboseLogging +from patchablegraph import PatchableGraph, CycloneGraphHandler, CycloneGraphEventsHandler from private_config import deviceIp, cloudId, installId, macId, periodSec +ROOM = Namespace("http://projects.bigasterisk.com/room/") STATS = scales.collection('/root', scales.PmfStat('poll'), @@ -22,8 +25,9 @@ auth = binascii.b2a_base64(authPlain.encode('ascii')).strip(b'=\n') class Poller(object): - def __init__(self, influx): + def __init__(self, influx, graph): self.influx = influx + self.graph = graph reactor.callLater(0, self.poll) @STATS.poll.time() @@ -73,6 +77,11 @@ )) self.influx.write_points(pts, time_precision='s') + + self.graph.patchObject(context=ROOM['powerEagle'], + subject=ROOM['housePower'], + predicate=ROOM['instantDemandWatts'], + newObject=Literal(float(ret['demand']) * 1000)) except Exception as e: traceback.print_exc() log.error("failed: %r", e) @@ -94,7 +103,8 @@ verboseLogging(arg['-v']) influx = InfluxDBClient('bang', 9060, 'root', 'root', 'main') - p = Poller(influx) + masterGraph = PatchableGraph() + p = Poller(influx, masterGraph) reactor.listenTCP( int(arg['--port']),