Team Status Report for 04/19/2025

All of our sensors and actuators have been integrated with web app. We are done with implementing the basic requirements of the project . The web app now has all the core functionalities – to automatically/manually control the plant conditions, detect the plant species and health, store sensor data, and live stream. We tested some of the subsystems – live streaming latency, late fusion network, plant identification API, and level of water absorbed per day.

Progress:

  • Sensor data collection
  • Put blackout film on windows
  • Bought more plants
  • Set up mister, heater, watering system
  • Implement late fusion network for plant health ML model
  • Test live streaming latency, late fusion network, plant identification API, level of water absorbed per day
  • All the sensors/actuators fully integrated with web app
  • Automatic and manual scheduling functionalities implemented
  • Enable water/nutrients dispensed based on the number of plants in the greenhouse

Next Steps:

As we have a final presentation and a final demo left, we will have to implement everything, test everything that we planned before, and refine web app and the system to be presented in the final demo.

  • Test PID controls
  • Test overall system performance (leave the greenhouse barely touched/modified for several days for testing)
  • Ensure durability (waterproofing/heating/misting)
  • Improve web app UI
  • Conduct web app user experience survey

Yuna’s Status Report for 04/19/2025

This week I mostly spent time on fixing bugs, adding small details, and improving UI. I also worked on final presentation slides and spent time preparing for the presentation.

  1. Manual health check button: Users can now manually request health check.
  2. More actuators/sensors integrated with web app
  3. Starting/stopping the actuators: I helped Zara with the code for starting/stopping the actuators based on the auto-schedule.
  4. Options of Automatic<->Manual Scheduling: If automatic state, the actuator controls and auto-schedule update are disabled.
  5. # of plants info stored: Users can now input/change the number of plants in their greenhouse. The amounts of water/nutrients dispensed will be based on the # of plants.
  6. White light control in Live Streaming Page: Users can control white light in the live streaming page to better see the plant.
  7. Detected Result Page: I added a page that tells the users the plant species detected by the API, as shown below:
  8. Keeping track of Actuators&Camera Status: The pages that have switches for camera and actuators now display the current on/off status.
  9. Fixed previously undetected bugs

I am slightly behind the schedule because I only manually tested the web app and haven’t written the test code yet. I will make sure to finish writing test code by early next week.

Next Week’s Deliverables:

  • Focus on small details/UI for the last time: I will improve small details by early next week to leave time for writing the test code.
  • Test Code: I’ll mock different scenarios by writing test cases and verify the web app works as expected.
  • User Experience Survey: As planned, I will ask 10 different users to rate their experience in using our web app.

As I’ve designed, implemented, and debugged my project, I had to self-learn a number of new concepts and technologies. Although I had some experience with React, I still wasn’t an expert in it; I have never had experiences in MQTT protocol, RaspberryPi, websockets, deploying web app on the RPi, or converting http to https. I had to make good use of online resources to learn about all of these concepts. For most of them, I read the official/unofficial documents and took a look at the example code in the documents. I also referred to other people’s code on github and forum posts on different websites as well because many official documents were not detailed enough for me to fully understand the applications.  Whenever I had bugs that looked unfamiliar to me, I used websites like StackOverflow and Raspberry Pi Forums to see if others had the same problem. The forums also helped me in the designing process – they gave me ideas of what tech stacks may be useful for our project.

Yuna’s Status Report for 04/12/2025

Progress I made this week:

  1. Plant Species Detection: When the user tries to add a new plant and they don’t know what the species is, the web app now detects the plant species using ML.
  2. Manual Auto-scheduling: I added a manual auto-scheduling page for users to manually control the plant care conditions if their plant is not in the webscraped database. The user can now set their own auto-schedule.
  3. Chrome Notifications: I implemented a notification system using Chrome Notifications API to notify the users whenever the plant conditions are unhealthy or the sensor data goes beyond the ideal threshold. (The original plan of using Twilio API for notifications have been changed to chrome notifications due to cost issues.)
  4. Camera On/Off: The camera can be now turned on and off using a switch on the web app, allowing users to control security.
  5. Deployment on RPi: The web app has been deployed to RPi. It was initially using http, but I realized chrome notifications API requires https instead. Now the website can be accessed in https url.

I am currently a little behind schedule because some of the features in the web app were not fully implemented and verified, but I’ll make sure to finish everything by early next week to leave time for testing.

Next week’s deliverables:

  • Auto-scheduling Feature: fully implement the auto-scheduling feature and verify it works. Currently there is code for making sure the conditions change according to the schedule, but haven’t tested if it works.
  • More Sensors/Actuators Integration: Our team has some sensors and actuators that haven’t been fully integrated to the system yet, so I’ll work on integrating them with web app.
  • Focus on details: fix small details in the web app – for example, currently the switches for turning on/off the actuators do not know the current status of the actuators. I will make sure the web app gets notified of the current on/off status of the actuators from RPi.
  • Tests: write tests for the web app code. Test if the system works.

Yuna’s Status Report for 03/29/2025

Progress I made this week:

  1. I fixed the bug for MQTT communication from the web app to the RPi. When the user clicks on switches on the web app, the web app sends on/off command to the RPi through MQTT. Below is the page where the users can control the actuators:

    Zara and I worked together to make the water pump successfully get turned on/off when user control the switch. The other actuators will be integrated in the future.
  2. I integrated web scraped data with the web app. I saved all the plant names and image urls to the database so that all the plant species can be displayed in the AddPlantPage. However, details about the ideal plant care conditions are stored in the database only when user selects that species (this is to ensure that database doesn’t store unnecessary data). Below is the page where users can name their plant and select the species:

    After the user add their plant, the ideal plant care conditions are now stored in the database and are shown to the user like this:
    The user’s plant information now gets saved in the database and are displayed on the home page (name, health status, species, and its cute image)
  3. I made sensor data get displayed on the homepage as charts. To ensure the database does not contain too much data, I set it up so that the oldest sensor data gets deleted once it goes beyond 1440 limit (The data gets stored every 1 minute, and we aim to display the past 24 hours of sensor data. 60/min * 24 hours = 1440 sets of data) The home page now only displays temperature and humidity charts, but the other sensor charts will be added in the future.

    Websockets (django channels) were used to update the chart based on the real-time sensor data. Sensor data charts get updated every 1 minute, and health status gets updated every 24 hours.

I’m on schedule.

Deliverables for the next week:

  • implement auto-scheduling feature
  • activate plant detection for ML classification on webapp
  • integrate API for plant identification on webapp
  • add more sensors and actuators that can work with web app
  • start exploring deployment (probably on RPi)
  • start integrating Twilio API

Team Status Report for 03/22/2025

There were no major changes to our design.

Challenges & Mitigation:

  • Not enough ML data: This is an ongoing issue that we may not be able to collect enough plant data to sufficiently train the ML model. To solve this, we will start collecting our own data from our plants next week and keep prioritizing setting up sensors.

Progress:

  • Web Scraping: Except for pH data, we are done with web scraping that provides plant information essential for growth.
  • Plant Identification API: Plant Identification API was set up for identifying plant species.
  • Light Sensor: We confirmed our code for light sensor is working.
  • Communication between RPi and Web App: We successfully transmitted data from the RPi to the web app, and we’re almost done with transmitting data from the web app to the RPi.
  • ML Integration with Web App: RPi captures images, runs the ML model for identification, and sends results to web app.
  • RPi Camera Integration with Web App: The camera was successfully integrated with web app.

Next Steps:

  • Collect our own data from our plants
  • Set up the greenhouse environment for demo
  • Develop and test multi-classification ML models
  • Finish MQTT setup
  • Display web scraped data on web app
  • Implement auto-scheduling feature
  • Set up all sensor data to be sent to the web app

Yuna’s Status Report for 03/22/2025

I worked with Jana to successfully integrate the Raspberry Pi Camera into the web app using MJPEG streamer, as shown:

I also worked with Zara to implement MQTT for connections between the Raspberry Pi and the web app. We confirmed that the sensor data are sent to the web app periodically, which will be collected to later show a trend in the real-time dashboard.

I added a page in the web app for users to turn on/off the actuators.  I wrote code for sending user’s command data to the Raspberry Pi using MQTT as well, but for some reason the RPi is not receiving the message – I will resolve this bug next week.

I’m currently slightly behind the schedule since I wasn’t able to fix a bug for MQTT, but will catch up next week.

Next week’s deliverables:

  • fix the bug for sending data from the web app to RPi
  • make sensor data reflect on the web app (by storing sensor data in MySQL and putting the stored data to the web app)
  • work with Zara to integrate web scraped data (plant info) to the web app
  • start working on auto-scheduling feature

Yuna’s Status Report for 03/15/2025

This week, I spent much time on the ethics assignment. There was a big change in the plan for the web app part – instead of using AWS, we decided to use different options like MySQL, MQTT, and Twilio API. Although using AWS is possible, it had more risks since we had a limited amount of time and I do not have a lot of experience in AWS. As discussed in the meeting with the professor Tamal, we decided to use Replit to deploy the web app instead. Below is the rough diagram:

I added some pages to the frontend (MonitoringPage and AddPlantPage), changed the database from SQLite to MySQL, added websockets between the frontend and the backend, and explored how I am going to implement MQTT between the web app and the RPi. I also explored how I am going to use Replit to deploy the app.

I am slightly behind the original schedule since I wasn’t able to integrate the RPi with the web app, but mostly on track. I’ll put as much time as I can into implementing MQTT next week.

Next week’s deliverables:

  • complete MQTT between the web app and the RPi, verify it works
  • start integrating live camera feed
  • keep improving the design of the app

Yuna’s Status Report for 03/08/2025

This week, I spent half of the time working on the design report and the other half on the web application. I mostly worked on design trade studies, test and validation parts, and parts that need explanations about web app. I revised it with the team at the end.

For the web application, now I have a rough outline for everything. I spent most of the time reading different react documents and learning how to use different libraries. I have a working frontend that displays plant info and backend that has plant models, though I will still need to work on specific frontend designs using bootstrap. (Right now the website has very basic components)

I am on schedule. As planned in the schedule, next week I will start working on the data transmission part on the web application. The rough web application is set up, but the sensors and APIs are yet to be integrated. I will improve the design and UIs as I integrate those into the web app.

Next week’s deliverables:

  • Implement django channels (websocket).
  • Replace the current database with AWS dynamoDB.
  • Integrate RaspberryPi with web app.
  • Keep improving the design of the app.

Yuna’s Status Report for 02/22/2025

This week, I specifically worked on Solution Approaches and Testing, Verification, and Validation part in the design presentation. My team and I ordered different plants and additional components for the plant care, including soil and  liquid nutrients. Our team also assembled the greenhouse together.

I designed a rough user interface, and currently have a partially working web app. Here’s the rough UI design (it’s high likely to change in the future):

I did more research about what specific AWS services to be used for data transmission between the web app and the microcontroller. For database, we were planning to use AWS dynamoDB, but after research I realized we could also use AWS IoT to connect dynamoDB with RaspberryPi.

I am currently on schedule.

Next Week’s Plan:

  • Finish frontend and backend – have a working web app by the end of spring break
  • Explore more about how data will be transmitted from/to the web app (AWS services, HTTP/MQTT)

Team Status Report for 02/22/2025

There were no major changes to the existing design.

Challenges & Mitigation:

  • Datasets for ML not having all necessary data: There were no single datasets that have all the data we needed for health detection, so multiple datasets were selected to be combined. 
  • Potential plant loss during training: We planned to let the system support three plants last time. In order to ensure a larger dataset and be ready for plant loss, we ordered 4 plants for each plant type. We are planning to set up the sensors and actuators as quickly as possible.
  • Increased costs: We ordered plants and additional components (blackout window film, liquid nutrients, soil, basil plants, hamalayamix foliage plants, flowering plants), which was a larger increase in costs than we expected. To mitigate this, we found the cheap but appropriate components to be purchased and minimized the amount of extra components like soil.

Progress:

  • Finalized and ordered plants and additional components for growing plants.
  • Assembled the greenhouse.
  • Worked on code that runs sensors.
  • Started working on the design review report. Split up sections of the report for each person.
  • Keep working on ML integration and web app.

Next Steps:

  • Keep setting up temperature/humidity sensors and start setting up a heater.
  • Finalize web app and user interface.
  • Establish initial training framework for the ML model.
  • Keep working on the design report.