import datetime import time from threading import Thread, Timer from . import hardware, helpers class SensorReadout: """Overview class for (actual and potential) sensor sources""" def __init__(self, prst=object): """""" self.persistence = prst self.sensor_modules = { # we already call them, they are objects and not classes anymore "temperature" : hardware.sensors.TemperatureModule(), "humidity" : hardware.sensors.HumidityModule(), "brightness" : hardware.sensors.BrightnessModule(), # more to come? } def start(self): helpers.timer.RepeatedTimer(300, self.spread_measure) def spread_measure(self): results = dict((el,[]) for el in self.sensor_modules.keys()) # create an empty dict with a list for each readout-type for _ in range(5): # number of measures to average out for name in self.sensor_modules.keys(): measure = self.sensor_modules[name].readout() results[name].append(measure) time.sleep(3) self.save_results(results) def save_results(self, results): current_minute = int(datetime.datetime.now().timestamp() // 60) self.persistence["clock"]["sensors"]["time"] += [current_minute] for name in results.keys(): keep_value = sum(results[name]) / len(results[name]) self.persistence["clock"]["sensors"][name] += [keep_value]