Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion probes/ads1015_adafruit.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def read_voltage(self, port):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/ads1115.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def read_voltage(self, port):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/ads1115_adafruit.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def read_voltage(self, port):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
52 changes: 42 additions & 10 deletions probes/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@
'''

class ProbeInterface:
def __init_subclass__(cls, *, uses_temp_queue=None, **kwargs):
super().__init_subclass__(**kwargs)
if uses_temp_queue is None:
raise TypeError(
'ProbeInterface subclasses must declare '
'uses_temp_queue=True or uses_temp_queue=False'
)
if not isinstance(uses_temp_queue, bool):
raise TypeError('uses_temp_queue must be True or False')
cls.uses_temp_queue = uses_temp_queue

def __init__(self, probe_info, device_info, units):
self.units = units
Expand Down Expand Up @@ -93,8 +103,9 @@ def _build_output_data(self, probe_info):
def _build_ports(self):
''' Build ports objects. '''
self.port_queues = {}
for port in self.port_map:
self.port_queues[port] = TempQueue(qlength=10, units=self.units)
if self.uses_temp_queue:
for port in self.port_map:
self.port_queues[port] = TempQueue(qlength=10, units=self.units)

def _temp_to_resistance(self, temp, probe_profile):
'''
Expand Down Expand Up @@ -204,15 +215,9 @@ def read_all_ports(self, output_data):
''' Convert Voltage to Temperature and Tr '''
port_values[port], self.output_data['tr'][self.port_map[port]] = self._voltage_to_temp(port_values[port], self.probe_profiles[port], port=port)

''' Enqueue the Temperature Readings to Port Queues '''
if port_values[port] == None:
''' If the read value is None, pass that to the output instead of adding to the queue '''
output_value = None
else:
self.port_queues[port].enqueue(port_values[port])
output_value = self.port_queues[port].average()
output_value = port_values[port]

''' Get average temperature from the queue and store it in the output data structure'''
''' Store converted temperature in the output data structure '''
if port == self.primary_port:
self.output_data['primary'][self.port_map[port]] = output_value
elif port in self.food_ports:
Expand All @@ -225,8 +230,35 @@ def read_all_ports(self, output_data):

return self.output_data

def apply_temp_queue(self, output_data):
'''Apply this device's probe values to its per-port TempQueue.'''
if not self.uses_temp_queue:
return output_data

for port, label in self.port_map.items():
if port == self.primary_port:
group = 'primary'
elif port in self.food_ports:
group = 'food'
elif port in self.aux_ports:
group = 'aux'
else:
continue

if label not in output_data[group]:
continue

value = output_data[group][label]
if value is None:
continue

output_data[group][label] = self.port_queues[port].enqueue(value)

return output_data

def update_units(self, units):
self.units = 'C' if units == 'C' else 'F'
self._build_ports()
self._init_device()

def set_profiles(self, probe_info):
Expand Down
2 changes: 1 addition & 1 deletion probes/bt_ibbq.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ def get_status(self):
self.status['hardware_id'] = self.hardware_id
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):
def __init__(self, probe_info, device_info, units):
self.hardware_id = device_info['config'].get('hardware_id', None)
if self.hardware_id == '':
Expand Down
2 changes: 1 addition & 1 deletion probes/bt_ibbq_alt.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ def get_status(self):
return self.status


class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):
def __init__(self, probe_info, device_info, units):
self.hardware_id = device_info['config'].get('hardware_id', None)
if self.hardware_id == '':
Expand Down
2 changes: 1 addition & 1 deletion probes/bt_igrill_alt.py
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ def get_status(self):
return self.status


class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):
def __init__(self, probe_info, device_info, units):
self.hardware_id = device_info['config'].get('hardware_id', None)
self.debug_enabled = _to_bool(device_info['config'].get('debug', IGRILL_DEBUG_DEFAULT), default=IGRILL_DEBUG_DEFAULT)
Expand Down
2 changes: 1 addition & 1 deletion probes/bt_meater.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ def get_status(self):
self.status['probe_id'] = str(self.probe_id)
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):
def __init__(self, probe_info, device_info, units):
self.hardware_id = device_info['config'].get('hardware_id', None)
if self.hardware_id == '':
Expand Down
2 changes: 1 addition & 1 deletion probes/bt_meater_alt.py
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ def get_status(self):
return self.status


class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):
def __init__(self, probe_info, device_info, units):
self.hardware_id = device_info['config'].get('hardware_id', None)
if self.hardware_id == '':
Expand Down
2 changes: 1 addition & 1 deletion probes/bt_meater_exp.py
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,7 @@ def get_status(self):
self.status['hardware_id'] = self.address
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):
def __init__(self, probe_info, device_info, units):
self.hardware_id = device_info['config'].get('hardware_id', None)
if self.hardware_id == '':
Expand Down
2 changes: 1 addition & 1 deletion probes/disabled.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
*****************************************
'''

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
4 changes: 2 additions & 2 deletions probes/ds18b20.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ def get_status(self):
self.status['ready'] = self.initialized
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down Expand Up @@ -154,4 +154,4 @@ def read_all_ports(self, output_data):
elif port in self.aux_ports:
self.output_data['aux'][self.port_map[port]] = tempF if self.units == 'F' else tempC

return self.output_data
return self.output_data
1 change: 1 addition & 0 deletions probes/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ def read_probes(self):
}
for device in self.probe_device_list:
device_data = device.read_all_ports(output_data)
device_data = device.apply_temp_queue(device_data)
for group in device_data:
for probe in device_data[group]:
output_data[group][probe] = device_data[group][probe]
Expand Down
2 changes: 1 addition & 1 deletion probes/max31865.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ def close(self):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/max31865_adafruit.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def resistance(self):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/mcp9600_adafruit.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def temperature(self):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/prototype.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def read_voltage(self, port):
def get_status(self):
return self.status

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=True):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/virtual_average.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
*****************************************
'''

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/virtual_highest.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
*****************************************
'''

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/virtual_lowest.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
*****************************************
'''

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down
2 changes: 1 addition & 1 deletion probes/virtual_median.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
*****************************************
'''

class ReadProbes(ProbeInterface):
class ReadProbes(ProbeInterface, uses_temp_queue=False):

def __init__(self, probe_info, device_info, units):
super().__init__(probe_info, device_info, units)
Expand Down