def clean(self): for _ in range(1): # bring clean water to fishfeeder Context.check_water_sensor() Context.run_pump(Context.water_in, duration=0.25) # thrash water from fishfeeder Context.check_water_sensor() Context.run_pump(Context.water_out1, duration=2) for _ in range(1): for _ in range(1): # bring clean water to fishfeeder Context.check_water_sensor() Context.run_pump(Context.water_in, duration=0.25) for _ in range(1): # thrash water from fishfeeder Context.check_water_sensor() Context.run_pump(Context.water_out1, duration=1) for _ in range(1): # bring clean water to fishfeeder Context.check_water_sensor() Context.run_pump(Context.water_in, duration=2) for _ in range(1): # thrash water from fishfeeder Context.check_water_sensor() Context.run_pump(Context.water_out1, duration=20) Context.STATUS = "Cleaned" lprint("tanks cleaned")
def air_cleaning(self): for valve in self.valves_in_use_feeding: Context.control_box.open_valve(valve) Context.run_pump(Context.water_out1, duration=10) Context.control_box.close_valve(valve) lprint("Air_cleaning_done")
def check_water_sensor(cls): if GPIO.input(cls.water_sensor) == GPIO.LOW: lprint("no water warning by sensor") cls.control_box.set_pwm(cls.safety_pump, 0) else: lprint("WATER WARNING by sensor") cls.control_box.set_pwm(cls.safety_pump, 255)
def set_pwm(self, index, value): set_pwm_command = str.encode(f"#p {index} {value} \n") self.conn.write(set_pwm_command) rcv = self.conn.read(6) lprint(f"set_pwm index:{index}, value:{value}, rcv:{rcv}") sleep(1)
def close_valve(self, index): close_valve_command = str.encode(f"#vc {index} \n") self.conn.write(close_valve_command) rcv = self.conn.read(6) lprint(f"closed valve index:{index}, rcv:{rcv}") sleep(1)
def open_valve(self, index): open_valve_command = str.encode(f"#vo {index} \n") self.conn.write(open_valve_command) rcv = self.conn.read(6) lprint(f"opened valve index:{index}, rcv:{rcv}") sleep(1)
def general_priming(self): for valve in self.valves_in_use_feeding: Context.control_box.open_valve(valve) Context.run_pump(Context.water_in, duration=0.5) Context.run_pump(Context.water_out1, duration=4) Context.control_box.close_valve(valve) lprint("General_priming_done")
def prepare(self, food_amount_multiplier): # pour food into fishfeeder for _ in range(food_amount_multiplier): Context.rotate_food_servo(180) Context.rotate_food_servo(0) # bring clean water to fishfeeder #for _ in range(1): #Context.check_water_sensor() #Context.run_pump(Context.water_in, duration=0.5) #Context.STATUS = "FoodPrepared" lprint("food prepared")
def initialize(self): Context.initialize() if not self.check_early_stop(): Context.DAY, Context.TIME = datetime.datetime.today().strftime( '%Y-%m-%d %H:%M:%S').split() # Initialize water sensor GPIO.setmode(GPIO.BCM) GPIO.setup(Context.water_sensor, GPIO.OUT) GPIO.output(Context.water_sensor, GPIO.LOW) sleep(0.05) GPIO.setup(Context.water_sensor, GPIO.IN) lprint("initialized")
def priming(self, valves_in_use_feeding): # Open all valves for valve in valves_in_use_feeding: Context.control_box.open_valve(valve) # prime water In for _ in range(1): Context.check_water_sensor() Context.run_pump(Context.water_in, duration=0.5) # prime water Out for _ in range(1): Context.check_water_sensor() Context.run_pump(Context.water_out1, duration=3) Context.control_box.close_valve(valve) # # Close all valves # for valve in valves_in_use: # Context.control_box.close_valve(valve) lprint("pumps primed")
def stream(self): # stream water to fish tanks for i in range(2): Context.check_water_sensor() Context.run_pump(Context.water_out1, duration=1) # bring water and stream fishfeeder for _ in range(1): Context.check_water_sensor() Context.control_box.set_pwm(Context.water_in, 255) Context.control_box.set_pwm(Context.water_out1, 255) sleep(0.5) Context.control_box.set_pwm(Context.water_in, 0) Context.control_box.set_pwm(Context.water_out1, 0) Context.run_pump(Context.water_out1, duration=1) #for _ in range(1): #Context.check_water_sensor() #Context.run_pump(Context.water_in, duration=1) #for _ in range(1): #Context.check_water_sensor() #Context.run_pump(Context.water_out1, duration=2) lprint("food water mix streamed")
def initialize(self): if self.first_time: self.conn.write(self.get_state) rcv = self.conn.read(43) lprint(rcv) self.first_time = False self.conn.write(self.get_state) rcv = self.conn.read(78) lprint(rcv) rcv = self.conn.read(78) lprint(rcv)
def finalize(self): if not self.check_early_stop(): Context.control_box.set_pwm(Context.safety_pump, 0) lprint(Context.DAY, Context.TIME, Context.STATUS) lprint("finalized")