def add(self, object): possible_plant_ids = range(0, 4) # Find plant ids we can use for plant in plants: if plant["plant_id"] in possible_plant_ids: possible_plant_ids.remove(plant["plant_id"]) plant_id = possible_plant_ids[0] # Add plant data to the list plant_image = "Graphics/plants/plant{0}.png".format(self.plant_type) plant_name = self.name_label.text owner = self.owner_label.text print self.plant_type new_plant = { "plant_id": plant_id, "plant_image": plant_image, "name": plant_name, "owner": owner, "water": 50, "temp": 50, "fertilizer": 50, "last_watered": time.time(), "last_fertilized": time.time() } plants.append(new_plant) log_functions.save_data(plants) # Return the main menu, update plants self.manager.transition.direction = "right" self.manager.current = "main" self.mainMenu.update_plants()
def remove_plant(self, object): # Delete current plant plants.remove(self.plant) log_functions.save_data(plants) # Return the main menu and update plants self.manager.transition.direction = "right" self.manager.current = "main" self.mainMenu.update_plants()
def fertilize(self, object): # turn on fertilizer pump for the appropriate plant (id + 2, as pump 1 is the water pump) plant_id = self.plant["plant_id"] - 1 # self.mainMenu.pump_command_for_fertiliser[plant_id] = fertSM[plant_id].step(self.plant["last_fertilized"]) if self.mainMenu.pump_command_for_fertiliser[plant_id] == 'available': print("Fertilizer") pump_number = self.plant["plant_id"] + 2 print pump_number pump.pump(pump_number, 1) # update plant stats self.plant["fertilizer"] += 5 self.plant["fertilizer"] = min(self.plant["fertilizer"], 100) self.plant["last_fertilized"] = time.time() self.update_data() log_functions.save_data(plants)
def water(self, object): ''' water plants ''' print("Trying to water") # turn on water pump for 2 seconds if self.mainMenu.pump_command_for_water == 'available': print("Watering") pump.pump(1, 5) # update plant stats plants[0]["water"] += 5 plants[0]["water"] = min(plants[0]["water"], 100) plants[0]["last_watered"] = time.time() self.update_data() # update plant stats log_functions.save_data(plants)
def update(self, *args): ''' Update data from all sensors ''' temp_humidity = sensors.get_humidity_temp( ) #{'temperature': 0, 'humidity': 0 } # formatting humidity and temperature text self.temperature_widget.text = "[b][size=18][color=#5C4940]Temperature: {0} C[/color][/size][/b]".format( temp_humidity["temperature"]) self.humidity_widget.text = "[b][size=18][color=#5C4940]Humidity: {0}%[/color][/size][/b]".format( temp_humidity["humidity"]) # Log the humidity and temperature values to file log_functions.log_data() last_water_time = plants[0]["last_watered"] self.pump_command_for_water = waterSM.step(last_water_time) if self.pump_command_for_water == 'auto_water': pump.pump(1, 5) plants[0]["water"] += 5 plants[0]["water"] = min(plants[0]["water"], 100) plants[0]["last_watered"] = time.time() log_functions.save_data(plants) # Check fertilizer SM in the case of auto fertilization for i in range(len(plants)): last_fertilized = plants[i]["last_fertilized"] self.pump_command_for_fertiliser[i] = fertSM[i].step( last_fertilized) if self.pump_command_for_fertiliser[i] == 'auto_fertilise': pump_number = i + 2 pump.pump(pump_number, 1) # update plant stats plants[i]["fertilizer"] += 5 plants[i]["fertilizer"] = min(plants[i]["fertilizer"], 100) plants[i]["last_fertilized"] = time.time() log_functions.save_data(plants) self.grid_layout.do_layout()
class MyApp(App): def build(self): sm = ScreenManager() main = MainMenu(name="main") detail = Detail(name="detail", main=main) addPlant = AddPlant(name="add", main=main) main.addPlant = addPlant sm.add_widget(main) sm.add_widget(detail) sm.add_widget(addPlant) sm.current = "main" # Update temperature data every 3 seconds update_interval = 5 # Initialize update first main.update() Clock.schedule_interval(main.update, update_interval) return sm if __name__ == '__main__': plants = log_functions.load_data() log_functions.save_data(plants) MyApp().run()