def door_close(): try: door_funcs.setup(open_door_pin, close_door_pin) door_funcs.activate_door('close', 26, open_door_pin, close_door_pin) except: return render_template("index.html") return render_template("hen_door.html")
def custom_door(): time = float(request.form['time']) direction = request.form['direction'] try: door_funcs.setup(open_door_pin, close_door_pin) door_funcs.activate_door(direction, time, open_door_pin, close_door_pin) except: return render_template("index.html") return render_template("hen_door.html")
from collections import Counter from twilio.rest import Client sys.path.insert(0, '../src/') #sys.path.append(os.path.join(os.path.dirname(sys.path[0]), '../src/')) import funcs as myfuncs import hen_door as door_funcs # setup pins open_door_pin = 17 close_door_pin = 18 open_door_pin = 26 close_door_pin = 20 # setup hen door - these are pins door_funcs.setup(open_door_pin, close_door_pin) # for log.. print('-------------------------------------------------------------') print('----------------- new app instance --------------------------') print('-------------------------------------------------------------') print(f'app start time: {datetime.now()}') # setup twilio stuff # these are stored in /etc/rc.local account_sid = os.environ.get('TWILIO_ACCOUNT_SID') auth_token = os.environ.get('TWILIO_AUTH_TOKEN') twilio_phone = os.environ.get('TWILIO_PHONE_NUM') my_phone = os.environ.get('MY_PHONE_NUM') # mer_phone = os.environ['MER_PHONE_NUM']
def main(open_time, close_time): ''' function to control hen door params are open and close times in datetime format runs forever (while loop) ''' logging.info('starting hen door func...') # setup current_time current_time = datetime.datetime.now().replace(microsecond=0).time() logging.info(f'setting hen door func current time as {current_time}') # setup current status of door.. # TODO: how do we determine this?? # this only gets complicated if we start pi and door is closed # when it should be open.. # assume it is in correct position.. # TODO: maybe we can track the time in each direction to correct if needed # and also to define time limits in both direction just in case.. if current_time >= open_time and current_time <= close_time: door_open = True logging.info( f'setting door as open because: current time is {current_time}' f' and open time is {open_time} and close time is {close_time}') else: door_open = False logging.info( f'setting door as closed because: current time is {current_time}' f' and open time is {open_time} and close time is {close_time}') # setup while forever to keep checking time.. while True: # logging.info('starting or continuing hen door while loop to check time...') # check time current_time = datetime.datetime.now().replace(microsecond=0).time() # logging.info(f'current time is: {current_time}') # if time is in range.. if current_time >= open_time and current_time <= close_time and door_open == False: # then open door.. try: door_funcs.setup(open_door_pin, close_door_pin) door_funcs.activate_door('close', 26, open_door_pin, close_door_pin) logging.info( f'opening door.. because current time is {current_time}') door_open = True except: return None elif current_time >= close_time and door_open == True: # then close door.. try: door_funcs.setup(open_door_pin, close_door_pin) door_funcs.activate_door('open', 25, open_door_pin, close_door_pin) logging.info( f'closing door..because current time is {current_time}') door_open = False except: return None else: # logging.info(f'waiting because open or close conditions not met and current time is {current_time}') pass # then wait 2.5 mins before checking again # logging.info(f'waiting for 2.5 mins because current time is {current_time}') time.sleep(150) current_time = datetime.datetime.now().replace(microsecond=0).time()