From 56b08abd45396661c50790f7b1cccccda29efb31 Mon Sep 17 00:00:00 2001 From: Lars Bogner Date: Sat, 21 Aug 2021 17:36:40 +0200 Subject: [PATCH] Intermediate state --- RaspberryPie/config.py | 2 +- RaspberryPie/dataHandling.py | 2 +- RaspberryPie/hardwareControl.py | 22 ++++++++++++---------- RaspberryPie/internetHandling.py | 2 ++ RaspberryPie/logger.py | 8 +++++--- RaspberryPie/raspberryPie.py | 17 +++++++++-------- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/RaspberryPie/config.py b/RaspberryPie/config.py index c6e51cc..c3d483f 100644 --- a/RaspberryPie/config.py +++ b/RaspberryPie/config.py @@ -1,4 +1,4 @@ import configparser config = configparser.RawConfigParser() -config.read("config.cfg") # edit this file for your specific configuration \ No newline at end of file +config.read("config.cfg") # edit this file for your specific configuration diff --git a/RaspberryPie/dataHandling.py b/RaspberryPie/dataHandling.py index d6c60c6..4aeda6b 100644 --- a/RaspberryPie/dataHandling.py +++ b/RaspberryPie/dataHandling.py @@ -101,4 +101,4 @@ class BGenSecretary: return {"unix_time": [entry[0] for entry in entries], "time_string": [entry[1] for entry in entries], "picture": [entry[2] for entry in entries]} -bGenSecretary = BGenSecretary(config.config["File Locations"]["database_file"], config.config["File Locations"],["image_path"]) \ No newline at end of file +bGenSecretary = BGenSecretary(config.config["File Locations"]["database_file"], config.config["File Locations"]["image_path"]) \ No newline at end of file diff --git a/RaspberryPie/hardwareControl.py b/RaspberryPie/hardwareControl.py index e398be2..1cbf733 100644 --- a/RaspberryPie/hardwareControl.py +++ b/RaspberryPie/hardwareControl.py @@ -12,6 +12,8 @@ import RPi.GPIO as GPIO import RaspberryPie.config as config import RaspberryPie.dataHandling as dataHandling +GPIO.setwarnings(False) + captScribe = None def _set_captScribe(_captScribe): @@ -22,9 +24,9 @@ def _set_captScribe(_captScribe): class MajGenGPIOController: def __init__(self, pin_open, pin_close, delta_switchOff): - self.pinOpen = pin_open - self.pinClose = pin_close - self.deltaOff = delta_switchOff + self.pinOpen = int(pin_open) + self.pinClose = int(pin_close) + self.deltaOff = int(delta_switchOff) GPIO.setmode(GPIO.BCM) GPIO.setup(self.pinOpen, GPIO.OUT) @@ -68,7 +70,7 @@ class MajGenObserver: return self.captured def __init__(self, schedule_timing): - self.schedule_timing = schedule_timing + self.schedule_timing = int(schedule_timing) def get_schedule(self): return self.schedule_timing @@ -79,7 +81,7 @@ class MajGenAirChecker(MajGenObserver): schedule_timing = config.config["Timing"]["environmentdelta"] super().__init__(schedule_timing) - def execute(): + def execute(self): sensor = Adafruit_DHT.DHT22 pin = int(config.config["Hardware"]["dhtpin"]) humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) @@ -94,9 +96,9 @@ class MajGenVisualObserver(MajGenObserver): schedule_timing = config.config["Timing"]["picturedelta"] super().__init__(schedule_timing) - def execute(): + def execute(self): camera = PiCamera() - majGensDictatingMachine = super.DictatingMachine() + majGensDictatingMachine = super().DictatingMachine() camera.start_preview() time.sleep(5) # letting camera adjust to environment (exposure and wb) camera.capture(majGensDictatingMachine, format="jpeg") @@ -109,7 +111,7 @@ class MajGenAirRecoder(MajGenAirChecker): super().__init__(schedule_timing=schedule_timing) def execute(self): - data = super.execute() + data = super().execute() self.dataCollector.recordeAir({"air": (str(datetime.datetime.now()), data)}) class MajGenVisualRecoder(MajGenVisualObserver): @@ -118,7 +120,7 @@ class MajGenVisualRecoder(MajGenVisualObserver): super().__init__(schedule_timing=schedule_timing) def execute(self): - data = super.execute() + data = super().execute() self.dataCollector.recordePicture({"picture": (str(datetime.datetime.now()), data)}) @@ -127,4 +129,4 @@ majGenGPIOController = MajGenGPIOController(config.config["Hardware"]["pinopen"] majGenVisualObserver = MajGenVisualObserver() majGenAirChecker = MajGenAirChecker() majGenAirRecoder = MajGenAirRecoder(dataHandling.bGenSecretary) -majGenVisualRecoder = MajGenVisualRecoder(dataHandling.bGenSecretary) +majGenVisualRecorder = MajGenVisualRecoder(dataHandling.bGenSecretary) diff --git a/RaspberryPie/internetHandling.py b/RaspberryPie/internetHandling.py index 8e78a82..06ac043 100644 --- a/RaspberryPie/internetHandling.py +++ b/RaspberryPie/internetHandling.py @@ -94,6 +94,8 @@ class MajGenApiCom: imap.logout() except: captScribe.error("Logout of imap failed.", "MajGenApiCom.get_emails") + + return mail_box def delete_mail(self, id): imap = None diff --git a/RaspberryPie/logger.py b/RaspberryPie/logger.py index 8fb1dfe..caffabf 100644 --- a/RaspberryPie/logger.py +++ b/RaspberryPie/logger.py @@ -1,6 +1,6 @@ # general imports import logging - +import logging.handlers class CaptScribe: def __init__(self, log_info, log_error): @@ -8,15 +8,17 @@ class CaptScribe: self.logfile_error = log_error self.loggers = [logging.getLogger("log_info"), logging.getLogger("log_error")] self.formatters = [logging.Formatter("%(asctime)s : %(level), %(message)s"), logging.Formatter("%(asctime)s : %(message)s: %(sinfo)")] - self.handlers = [logging.TimedRotatingFileHandler(self.logfile_info, when='midnight', interval=1), logging.TimedRotatingFileHandler(self.logfile_error, when='midnight', interval=1)] + self.handlers = [logging.handlers.TimedRotatingFileHandler(self.logfile_info, when='midnight', interval=1), logging.handlers.TimedRotatingFileHandler(self.logfile_error, when='midnight', interval=1)] for i, handler in enumerate(self.handlers): handler.setFormatter(self.formatters[i]) - for i, logger in self.loggers: + for i, logger in enumerate(self.loggers): logger.addHandler(self.handlers[i]) self.loggers[0].level = logging.INFO self.loggers[1].level = logging.ERROR + + self.loggers[0].addHandler(logging.StreamHandler()) def critical(self, msg, func=""): for logger in self.loggers: diff --git a/RaspberryPie/raspberryPie.py b/RaspberryPie/raspberryPie.py index d3186df..71f6967 100644 --- a/RaspberryPie/raspberryPie.py +++ b/RaspberryPie/raspberryPie.py @@ -15,12 +15,12 @@ import RaspberryPie.config as config import RaspberryPie.logger as logger import RaspberryPie.internetHandling as internetHandling -captScribe = logger.CaptScribe(config.config.config["File Locations"]["logfile_info"], config.config.config["File Locations"]["logfile_error"]) +captScribe = logger.CaptScribe(config.config["File Locations"]["logfile_info"], config.config["File Locations"]["logfile_error"]) internetHandling._set_captScribe(captScribe) hardwareControl._set_captScribe(captScribe) -ltGenInterpreter, genScheduler = None +ltGenInterpreter, genScheduler = None, None tasks = [ tasks.Task(hardwareControl.majGenGPIOController.open, lambda msg: 1 if ("auf" == msg.subject.lower() or "open" == msg.subject.lower()) else 0), @@ -31,8 +31,8 @@ tasks = [ class LtGenInterpreter: def __init__(self, tasks: list, communicator: internetHandling.MajGenApiCom, schedule_timing=None): if not schedule_timing: - schedule_timing = config.config.config["Timing"]["maildelta"] - self.schedule_timing + schedule_timing = config.config["Timing"]["maildelta"] + self.schedule_timing = schedule_timing self.tasks = tasks self.communicator = communicator @@ -52,8 +52,8 @@ class GenScheduler: self.schedule = {} self.schedule_delta = {} for subordinate in self.subordinates: - self.schedule[subordinate] = list(datetime.datetime.now()) - self.schedule_delta[subordinate] = list(subordinate.get_schedule()) + self.schedule[subordinate] = [datetime.datetime.now()] + self.schedule_delta[subordinate] = [subordinate.get_schedule()] self.time = datetime.datetime.now def execute(self): @@ -62,7 +62,7 @@ class GenScheduler: for subordinate in self.schedule: if self.schedule[subordinate][np.argmin(self.schedule[subordinate])] <= self.time(): subordinate.execute() - self.schedule[subordinate][np.argmin(self.schedule[subordinate])] += self.schedule_delta[subordinate][np.argmin(self.schedule[subordinate])] + self.schedule[subordinate][np.argmin(self.schedule[subordinate])] += datetime.timedelta(seconds=float(self.schedule_delta[subordinate][np.argmin(self.schedule[subordinate])])) time_list = lambda: [self.schedule[subordinate][np.argmin(self.schedule[subordinate])] for subordinate in self.schedule] sleep_duration = time_list()[np.argmin(time_list())] @@ -84,10 +84,11 @@ def init(): def main(): suspend_shutdown = False - if genScheduler is GenScheduler: + if type(genScheduler) is GenScheduler: try: genScheduler.execute() except Exception as e: + print(e) captScribe.critical(str(e), "main()") if e is KeyboardInterrupt: suspend_shutdown = True