This repository has been archived by the owner on Jan 5, 2019. It is now read-only.
/
ds18b20.py
64 lines (55 loc) · 2.08 KB
/
ds18b20.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
This module consists of code for interacting with a DS18B20 Temperature sensor.
"""
from w1thermsensor import W1ThermSensor
import logging
class DS18B20:
"""
Class that represents a DS18B20 Temperature sensor instance and provides functions
for interfacing with it.
"""
def __init__(self, pseudo=False):
logging.basicConfig()
self.logger = logging.getLogger(__name__)
self.logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('/home/pi/openag_brain_box/ui/main.log')
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
self.logger.addHandler(handler)
self.logger.debug('Initializing sensor')
self.pseudo = pseudo
self.sensor_is_connected = False
self.temperature = None
self.connect()
def connect(self):
if self.pseudo:
self.logger.info('Connected to pseudo sensor')
return
try:
self.sensor = W1ThermSensor()
if not self.sensor_is_connected:
self.sensor_is_connected = True
self.logger.info('Connected to sensor')
except:
if self.sensor_is_connected:
self.sensor_is_connected = False
self.logger.warning('Unable to connect to sensor')
def poll(self):
if self.pseudo:
self.temperature = 21.2
return
if self.sensor_is_connected:
try:
self.temperature = self.sensor.get_temperature()
except:
self.temperature = None
self.sensor_is_connected = False
else:
self.connect()
def transmitToConsole(self, id='Water Temperature'):
if self.temperature is not None:
print(id, ': ', self.temperature, 'C')
def transmitToMemcache(self, memcache_shared, id='water_temperature'):
if self.temperature is not None:
memcache_shared.set(id, '{0:.1f}'.format(self.temperature))