def foodSense(): print('Starting Food Sense') # Begin initializing necessary components) fb = Firebase() detect = Detect(fb) monitor = Monitoring(fb) scale = Scale() # Set scale calibration scale.setReferenceUnit(-25.725) scale.reset() scale.tare() ### START DEBUG ### ### END DEBUG ### ### MAIN LOOP ### while True: while monitor.powerOn: print('Power is on') time.sleep(1) while monitor.doorClosed(): print('Door is closed') monitor.checkTemp() time.sleep(1) if monitor.doorOpen(): print('Door was opened') monitor.startDoorTimer() while monitor.doorOpen(): print('Waiting for door to close') monitor.checkDoorTimer() monitor.checkTemp() time.sleep(1) else: print('Door was closed') scale.getWeight() detect.getImage() detect.detectItem() detect.parseResponse(scale.weight) else: pass else: print('Door must be closed on program startup') else: monitor.powerSave() else: pass
def run(self): # Set up LED pin LED = 27 GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(LED, GPIO.OUT) # Initialize objects f = Firebase(self.q) d = Detect(f, self.q) m = Monitoring(f, self.q) s = Scale(self.q) # Set scale calibration s.setReferenceUnit(-25.725) s.reset() s.tare() self.q.put('Ready') # Loop until stop event is set while not self.event.is_set(): # Loop while RPi is on AC power while m.powerOn: # Check if stop has been set if self.event.is_set(): break # Loop while fridge door is closed while m.doorClosed(): if not m.powerOn(): break m.checkTemp() # Check if stop hsa been set if self.event.is_set(): break else: print('Door was opened') self.q.put('Door opened') GPIO.output(LED, True) m.startDoorTimer() while m.doorOpen(): print('Waiting for door to close') m.checkDoorTimer() m.checkTemp() else: print('Door closed') self.q.put('Door closed') s.getWeight() d.getImage() d.detectItem() d.parseResponse(s.weight) s.tare() GPIO.output(LED, False) print('Done') self.q.put('Done') else: m.powerSave() f.close( ) # Firebase app must be closed before we can create another instance