- Due to my increasing interest toward the Rust programming language, I will convert the current embedded project from C++ to Rust. Consequently, I will freeze development for this repo.
- Moreover, I will take this opportunity to re-organize the current repo and separate it into smaller components (into mobile, embedded, web,...).
- This system takes input from environment sensors(soil moisture, humidity, light sensor) and enables automation in watering.
- Users may set these automated tasks on scheduled, manual, or turn it off and enable only the data monitoring capability.
- Additionally, there will be a mobile app for users to interact with the embedded system.
- Workspace: The defined physical space that encompasses monitored plants. (garden beds, pots,...)
- This system is used to ease some aspects of plant nurturing process (watering, ventilation, or lighting).
- Many people have workspaces where they take care of their plants. Some typical tasks can be adjusting light, watering plants, and checking soil. However, it is impossible to manually monitor your plants all the time since you may go on vacations or simply procrastination. This is where the system comes in as it shares some responsbilities of plant nurturing.
-
The project includes an embedded system and a mobile app for users to interact with the system.
EMBEDDED SYSTEM
- Microcontrollers:
- ESP32: collects and uploads sensors data to the cloud
- Raspberry Pi 4: facilitates plant's health emails and sends them to subscribed users on a daily basis.
- Sensors & Actuators (non exhaustive list):
- photoresistor
- humidity sensor (DHT22)
- waterproof ultrasonic water level measuring module (JSN-SR04T)
- water pump
- solid state relay (to power water pump)
- soil moisture sensor
MOBILE APP
- Functionality:
- Add, remove workspaces
- Add plant for a workspace
- View collected data in numeric format
- View collected data in graphical format
- Opt-in to receive emails regarding your plants health. This email report includes stats from yesterday, year-to-date, and recommendations on what to do
- Selecting between modes:
- Auto: system takes care of your plant depending on what modules are enabled (watering, lighting, ventilation) and decision making is based on sensors input.
- Scheduled: system still performs automated tasks, however, it is now on demand. Users schedule these automated tasks.
- Disabled: no automation tasks. Users still receive sensors data.
- A built-in plant wiki for references
- Microcontrollers:
- C# .NET MAUI is used for mobile app development
- sqlite3 is used to store local workspace, plant, email information
- InfluxDB is used for storing time-series data
- Firestore is used as a common database for mobile app and ESP32, storing configuration info
- Python facilitates plants report email to users
- C, C++ are for embedded development
- ReactJS is for web app development
This section is for visitors to see how the project is going. Every task or sub-task once reaches 100%, they will have an image of their final version displayed. Every task below if they are actively in progress, they will be displayed as hyperlinks.
- Main page (100%)
- Email Sub view model
- Graphical Plant view model
- Plant view model
- Main Page view model
- Workspace view model
- EmailListDBService class
- EmailService class
- InfluxService class
- WorkspaceService class
- Water Tank prototype (100%)