diff options
author | Christian Franke <nobody@nowhere.ws> | 2013-06-20 19:25:15 +0200 |
---|---|---|
committer | Christian Franke <nobody@nowhere.ws> | 2013-06-20 19:25:31 +0200 |
commit | 9191312aac429e745388029ba57a29f015378541 (patch) | |
tree | 43fbbf740d0e2a0a231accb2db8e5f9df3af6c8c /envmon/onewire-ow.py | |
parent | 0ab0cbbda438fd30f24273f1db99d76746108a75 (diff) |
Add envmon code
Diffstat (limited to 'envmon/onewire-ow.py')
-rw-r--r-- | envmon/onewire-ow.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/envmon/onewire-ow.py b/envmon/onewire-ow.py new file mode 100644 index 0000000..6e3420b --- /dev/null +++ b/envmon/onewire-ow.py @@ -0,0 +1,46 @@ +""" +Onewire interface using owserver +""" + +import os +import ow + +class OnewireException(Exception): + pass + +ow.init('127.0.0.1:4304') + +_sensors = {} +with open(os.path.join(os.path.realpath(os.path.dirname(__file__)), 'onewire-sensors.txt'), 'r') as sensors_file: + for line in sensors_file: + line = line.strip() + address, name = line.split(' ', 1) + _sensors[name] = address + +def sensors(): + return list(_sensors.keys()) + +class SensorFacade(object): + def __init__(self, sensor, name): + self._sensor = sensor + self._name = name + + def __getattr__(self, name): + return getattr(self._sensor, name) + + @property + def temperature(self): + for i in range(1,3): + rv = float(self._sensor.temperature) + if rv > 65: + continue + if rv < -25: + continue + return rv + raise OnewireException("Bus error for %s" % self._name) + +def sensor(name): + if name not in _sensors: + raise OnewireException('Don\'t know about sensor %s' % name) + + return SensorFacade(ow.Sensor('/%s' % _sensors[name]), name) |