From a78cca8863b3c84569ba2776433ffdee471ff2ef Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Mon, 10 Oct 2016 23:32:26 +0000 Subject: envmon: simplify after onewire problem is fixed onewire had a kernel bug in managing bus power... --- envmon/onewire2graphite.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'envmon/onewire2graphite.py') diff --git a/envmon/onewire2graphite.py b/envmon/onewire2graphite.py index 4b7743e..81c6b50 100755 --- a/envmon/onewire2graphite.py +++ b/envmon/onewire2graphite.py @@ -22,22 +22,22 @@ while True: nextslot = time.time() + 65 nextslot = nextslot - (nextslot % 60) - while nextslot - time.time() > 5.0: - for sensor in sensors: - try: - vals.setdefault(sensor, None) - vals[sensor] = sensobj[sensor].temperature - except onewire.SensorNotPresent, e: - print >>sys.stderr, sensor, 'SensorNotPresent:', str(e) - except onewire.OutOfRange, e: - # print >>sys.stderr, sensor, 'OutOfRange:', str(e) - pass - except Exception: - print >>sys.stderr, "On %s: Could not retrieve temperature for '%s':" % ( - time.strftime('%a, %d %b %Y %T %z'), sensor) - sys.excepthook(*sys.exc_info()) - print >>sys.stderr, '========================================' - time.sleep(0.5) + time.sleep(max(nextslot - len(sensors) * 0.8 - time.time(), 0)) + + for sensor in sensors: + try: + vals.setdefault(sensor, None) + vals[sensor] = sensobj[sensor].temperature + except onewire.SensorNotPresent, e: + print >>sys.stderr, sensor, 'SensorNotPresent:', str(e) + except onewire.OutOfRange, e: + # print >>sys.stderr, sensor, 'OutOfRange:', str(e) + pass + except Exception: + print >>sys.stderr, "On %s: Could not retrieve temperature for '%s':" % ( + time.strftime('%a, %d %b %Y %T %z'), sensor) + sys.excepthook(*sys.exc_info()) + print >>sys.stderr, '========================================' time.sleep(max(nextslot - time.time(), 0)) goodvals = [sensor for sensor in sensors if vals.get(sensor, None) is not None] -- cgit v1.2.1