Mercurial > code > home > repos > homeauto
changeset 416:655a11cde0ab
add request timeout. don't send NaN to influxdb. crash on failures.
Ignore-this: 7c5303376024a46e3cdc6aaf70cf4da8
author | drewp@bigasterisk.com |
---|---|
date | Tue, 26 Mar 2019 09:12:30 -0700 |
parents | 91b4a04a33e7 |
children | 10ec2744fe8a |
files | service/powerEagle/reader.py |
diffstat | 1 files changed, 13 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/service/powerEagle/reader.py Sat Mar 23 13:57:44 2019 -0700 +++ b/service/powerEagle/reader.py Tue Mar 26 09:12:30 2019 -0700 @@ -1,5 +1,5 @@ #!bin/python -import json, logging, time +import json, logging, time, os import sys sys.path.append("/my/proj/homeauto/lib") from logsetup import log @@ -34,25 +34,30 @@ <LocalCommand> <Name>get_price_blocks</Name> <MacId>0x{macId}</MacId> - </LocalCommand>'''.format(macId=macId)) + </LocalCommand>'''.format(macId=macId), + timeout=10) ret = json.loads(resp.body) if ret['demand_units'] != 'kW': raise ValueError if ret['summation_units'] != 'kWh': raise ValueError - influx.write_points([ + pts = [ dict(measurement='housePowerW', fields=dict(value=float(ret['demand']) * 1000), tags=dict(house='berkeley'), - time=int(startTime)), - dict(measurement='housePowerSumDeliveredKwh', - fields=dict(value=float(ret['summation_delivered'])), + time=int(startTime))] + sd = float(ret['summation_delivered']) + if sd > 0: # Sometimes nan + pts.append(dict(measurement='housePowerSumDeliveredKwh', + fields=dict(value=float()), tags=dict(house='berkeley'), - time=int(startTime)), - ], time_precision='s') + time=int(startTime))) + + influx.write_points(pts, time_precision='s') except Exception as e: log.error("failed: %r", e) log.error(repr(ret)) + os.abort() now = time.time() goal = startTime + periodSec - .2