# HG changeset patch # User drewp@bigasterisk.com # Date 1450168044 28800 # Node ID 7d3645c2157ef7db0e1c55506b1688964836ec8f # Parent 75717a0be824cba7ca51ad10ae018c7616e8b85b rainforest eagle data -> carbon Ignore-this: 953342d0ec8b882acb5a107468457b69 diff -r 75717a0be824 -r 7d3645c2157e service/powerEagle/reader.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/service/powerEagle/reader.py Tue Dec 15 00:27:24 2015 -0800 @@ -0,0 +1,60 @@ +#!bin/python +import json, logging, time +import sys +sys.path.append("/my/proj/homeauto/lib") +from logsetup import log +sys.path.append("/my/proj/room") +from carbondata import CarbonClient +from twisted.internet.task import LoopingCall +from twisted.internet.defer import inlineCallbacks +from twisted.internet import reactor +from cyclone.httpclient import fetch + +from private_config import deviceIp, cloudId, installId, macId, periodSec + +auth = (cloudId + ':' + installId).encode('base64').strip() + +carbon = CarbonClient(serverHost='bang') + +class Poller(object): + def __init__(self, carbon): + self.carbon = carbon + self.lastPollTime = 0 + LoopingCall(self.poll).start(interval=periodSec) + + @inlineCallbacks + def poll(self): + ret = None + try: + resp = yield fetch( + 'http://{deviceIp}/cgi-bin/cgi_manager'.format(deviceIp=deviceIp), + method='POST', + headers={'Authorization': ['Basic %s' % auth]}, + postdata=''' + get_usage_data + 0x{macId} + + + get_price_blocks + 0x{macId} + '''.format(macId=macId)) + ret = json.loads(resp.body) + if ret['demand_units'] != 'kW': + raise ValueError + if ret['summation_units'] != 'kWh': + raise ValueError + self.carbon.send('system.house.powerEagle.demand_w', + float(ret['demand']) * 1000) + self.carbon.send('system.house.powerEagle.summation_delivered_kWh', + float(ret['summation_delivered'])) + except Exception as e: + log.error("failed: %r", e) + log.error(repr(ret)) + + self.lastPollTime = time.time() + + +log.setLevel(logging.INFO) +carbon = CarbonClient(serverHost='bang') +p = Poller(carbon) +reactor.run() diff -r 75717a0be824 -r 7d3645c2157e service/powerEagle/requirements.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/service/powerEagle/requirements.txt Tue Dec 15 00:27:24 2015 -0800 @@ -0,0 +1,3 @@ +cyclone==1.1 +service-identity==14.0.0 +Twisted==15.5.0