Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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()
Пример #6
0

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()