Botanical Workspace was inspired by productivity apps like Forest and Pomodoro, which help you focus by promising a reward at the end of your work time, such as a five-minute break, or the growth of a virtual tree. We decided to use that idea, but to add a sense of urgency, by involving a real, living plant.
What it does
Botanical Workspace is connected to your houseplant and lets you view its surrounding temperature and humidity in real time. You can set a timer for yourself with our web app. Stay focused throughout your entire work period without switching pages, and Botanical Workspace will make sure your plant is well taken cared for and watered. However, if you get distracted, Botanical Workspace will douse your plant with a small flood of water. Over time, the excess of water can lead to repercussions such as dropping or wilting leaves and root rot. Make sure you remain focused to keep your plant happy and healthy!
How we built it
An Arduino senses the temperature and humidity of the plant, which is relayed to a Flask server. This data is then send through API calls to our React app and used to determine whether or not the plant needs watering. The React app also allows you to set your timer. If you switch pages and fail, an HTTP request is sent to the Flask server which in turn tells the Arduino to release the floodgates! If you succeed, the Arduino will care for your plant and water it regularly.
Challenges we ran into
We faced many problems during the creation of the many technologies, such as reading bytes of data from the Arduino's sensors. The format of this data was confusing and had to be relayed to the Flask server in the form of a POST request. We fiddled around with the server for a long time to get all the requests working correctly. Also, none of us had any experience with React, so it was a challenge to write the app and learn at the same time.
Accomplishments that we're proud of
- We made a completely functional hardware hack remotely!
- We took an idea and added a completely new twist to it.
- We automated a process and gave it the added benefit of increased productivity.
What we learned
- How to use React.js for web apps
- Communications between Arduinos and computers through serial
- How to correctly hand POST requests from multiple origins with CORS
What's next for Botanical Workspace
We really want to be able to cater to different types of plants with different watering needs. We also briefly considered the idea of using a halogen/UV bulb to supply light to the plant, and turning it off when the user fails to remain focused.