Module src.main.python.sensor
Expand source code
class Sensor:
"""Sensor, measures an amount """
last_measure = -1
def __init__(self, range_min=0, range_max=4095, average_converging_speed=1 / 2):
""" constructor.
:param range_min: min value of sensor
:param range_max: max value of sensor
:param average_converging_speed: speed the average goes towards the last measure (range 0-1) """
self.range_min = range_min
self.range_max = range_max
self.average_converging_speed = average_converging_speed
self.average = (range_min + range_max) / 2
def __str__(self):
"""Prints the object."""
return "Sensor: average: {}, last measure {}, percentage: {}".format(self.get_average(),
self.get_last_measure(),
self.get_percentage())
def raw_measure(self):
"""returns only one raw measure"""
raise Exception("raw measure should be implemented")
def measure(self):
"""measures 3 times, makes average of them, updates global average, returns local average."""
sum_raw_measures = 0
for _ in range(3):
sum_raw_measures += self.raw_measure()
self.last_measure = sum_raw_measures / 3
self.average = self.last_measure * self.average_converging_speed + self.average * (
1 - self.average_converging_speed)
return self.last_measure
def get_average(self):
"""average (weighted exponentially) based on recent measures, more constant than last measure."""
return self.average
def get_last_measure(self):
"""last measure, raw data, average() instead returns a weighted average with the previous_sent_perc ones."""
return self.last_measure
def get_percentage(self):
"""actual percentage of the average between range passed."""
return (self.average - self.range_min) / (self.range_max - self.range_min)
Classes
class Sensor (range_min=0, range_max=4095, average_converging_speed=0.5)-
Sensor, measures an amount
constructor. :param range_min: min value of sensor :param range_max: max value of sensor :param average_converging_speed: speed the average goes towards the last measure (range 0-1)
Expand source code
class Sensor: """Sensor, measures an amount """ last_measure = -1 def __init__(self, range_min=0, range_max=4095, average_converging_speed=1 / 2): """ constructor. :param range_min: min value of sensor :param range_max: max value of sensor :param average_converging_speed: speed the average goes towards the last measure (range 0-1) """ self.range_min = range_min self.range_max = range_max self.average_converging_speed = average_converging_speed self.average = (range_min + range_max) / 2 def __str__(self): """Prints the object.""" return "Sensor: average: {}, last measure {}, percentage: {}".format(self.get_average(), self.get_last_measure(), self.get_percentage()) def raw_measure(self): """returns only one raw measure""" raise Exception("raw measure should be implemented") def measure(self): """measures 3 times, makes average of them, updates global average, returns local average.""" sum_raw_measures = 0 for _ in range(3): sum_raw_measures += self.raw_measure() self.last_measure = sum_raw_measures / 3 self.average = self.last_measure * self.average_converging_speed + self.average * ( 1 - self.average_converging_speed) return self.last_measure def get_average(self): """average (weighted exponentially) based on recent measures, more constant than last measure.""" return self.average def get_last_measure(self): """last measure, raw data, average() instead returns a weighted average with the previous_sent_perc ones.""" return self.last_measure def get_percentage(self): """actual percentage of the average between range passed.""" return (self.average - self.range_min) / (self.range_max - self.range_min)Class variables
var last_measure
Methods
def get_average(self)-
average (weighted exponentially) based on recent measures, more constant than last measure.
Expand source code
def get_average(self): """average (weighted exponentially) based on recent measures, more constant than last measure.""" return self.average def get_last_measure(self)-
last measure, raw data, average() instead returns a weighted average with the previous_sent_perc ones.
Expand source code
def get_last_measure(self): """last measure, raw data, average() instead returns a weighted average with the previous_sent_perc ones.""" return self.last_measure def get_percentage(self)-
actual percentage of the average between range passed.
Expand source code
def get_percentage(self): """actual percentage of the average between range passed.""" return (self.average - self.range_min) / (self.range_max - self.range_min) def measure(self)-
measures 3 times, makes average of them, updates global average, returns local average.
Expand source code
def measure(self): """measures 3 times, makes average of them, updates global average, returns local average.""" sum_raw_measures = 0 for _ in range(3): sum_raw_measures += self.raw_measure() self.last_measure = sum_raw_measures / 3 self.average = self.last_measure * self.average_converging_speed + self.average * ( 1 - self.average_converging_speed) return self.last_measure def raw_measure(self)-
returns only one raw measure
Expand source code
def raw_measure(self): """returns only one raw measure""" raise Exception("raw measure should be implemented")