Kanon’s Status Report for 5/1

This week, I worked on testing the metrics between hardware and web app/database and also created a script to periodically monitor the information of the greenhouse. I also worked on the final presentation slides preparation.

Hiroko and I worked on the testing together. We were aiming to have time lag under 1 hour to send the data from web app to ESP32 from our initial presentation. It came out that it only takes around 2 seconds, which was a good surprise. For the transmission between ESP32 and DynamoDB, it also takes around 1 or 15 seconds. It seems like it takes around 15 seconds when we are on different wifi and 1 second when we are on the same wifi. However, because the time different seems so big, Hiroko and I are planning to test this out again this weekend.

My new script should constantly get the information of the greenhouse every 15 minutes. Once the user’s preferred goals are set, the script should detect this change and send appropriate signal to ESP32.

So far, I am on schedule. Next week, I will meet with Sarah in person and try to integrate her live video into the website. I am also aiming to improve the webUI because it seems a bit blunt right now if I have time.

Kanon’s Status Report for 4/24

This week, I focused on improving the webUI and backend algorithm based on the survey that I took two weeks ago. Our initial design of our website always showed current greenhouse information (i.e. temperature) under “User Settings” box. However, this is very confusing because even if the user saves the new settings, it will always show the current greenhouse information. Professor Gary and some of our survey results also pointed this flaw out, so I created another data model to save user settings. Now the users can actually see their most recent settings under User Settings. The users should now able to turn off/on light through the website, but Hiroko and I did not have time to check this out yet. There was a minor bug related to changing temperature unit, so I also fixed that issue.

Below is how our current website looks like.

Next week, once Hiroko is done setting up her hardwares in the junction box, we will meet up to test the communication between hardware-software once again. Sarah is also coming to setup the CV equipment at Hiroko’s place next week, so we will figure out how we should post the video onto our frontend. So far, I am on schedule, but assembling everything does seems a bit difficult, and I am also getting my second pfizer shot (which seems to have a bad side effect), so I will try to have a head start as soon as possible.

Kanon’s Status Report for 4/10

This week, I first worked on deploying our website onto EC2 because I was supposed to do this last week. I had a bit of trouble doing this because I had to set up boto3 library and AWS CLI on EC2 instance. I kept getting a boto3 error which made me unable to set up my database model. However, after working for a while, I was able to set them up. I still need to set up apache and check if DynamoDB works successfully.

I also conducted a survey with 5 people. It seems like the website was still buggy and 2 people had a problem logging in with GoogleOAuth. I might take this away depending on whether I can find the specific bug corresponding to OAuth. Most of them liked the simple design of the website and found it very easy to navigate through the page. However, they also pointed out that there can be some improvements made such as letting the user enter the value directly instead of letting them use the slide bar.

I think I am still a bit behind schedule. Even though I have an experience of deploying a website through EC2, because I am using AWS CLI and DynamoDB for the database, the deployment process is more complicated that I expected it to be.

Next week, I will continue working on deployment by setting up apache and checking if the DynamoDB works correctly. I will also set up a simple notification script by using Twilio API.

Kanon’s Status Report for 4/3

This week, I continued working on sending data from website to ESP32 that I was doing since last week, and also worked with Hiroko to calibrate sensor values.

Our website can now send data to ESP32 once the user changes the parameters (i.e. temperature, soil moisture) on the user page. The algorithm is pretty simple. If the user sets the temperature or soil moisture rate higher than the current value from the greenhouse, the website backend will send a binary signal to ESP32, and ESP32 will turn on the corresponding components such as heater or water pump. The LED light can be turned on and off in a similar manner.

The following is the data that we receive from ESP32 and is stored within AWS DynamoDB. As you can see, the soil_1 and soil_2 moisture sensors have values that are around 3000 or 2000. Hiroko and I had to calibrate this value so that the user can see them as a percentage.

This week, my actual schedule was to deploy the website to EC2, however, we had to work on calibration and had to play around with how we send data to ESP32, which can be done more easily when we work locally. Therefore, I decided to deploy the website next week, and I am off schedule for a week.

Next week, since initial schedule was dedicated for UI testing which is not a lot of work, I am aiming to deploy the website and also conduct UI testing at the same time.

Kanon’s Status Report for 3/27

Last week, I worked with Hiroko and mainly focused on connecting ESP32 to AWS. I set up AWS IoT, DynamoDB, and Lambda so that I can receive data from ESP32 via Lambda functions and store them inside of DynamoDB. I was also able to send data from my terminal to ESP32 by using API endpoint and curl. Therefore, the website can now show the most recent status of the greenhouse by fetching data from DynamoDB.

This week, I focused on improving the website UI a bit and also wrote a function so that curl command can be sent from python script or website backend, instead of sending the command directly from terminal.

So far, I think I’m on schedule. I still need to figure out how to send back data efficiently to ESP32 but this can be done as we calibrate our sensors. Next week, I will be working on deploying the website by AWS EC2.

Kanon’s Status Report for 3/13

This week, I worked on practicing for the design review presentation, setting up dynamoDB, and writing a draft for Design Review Report.

For design review presentation, there was a lot to cover within each slides so I had a hard time coming up with a script that fits within 12 minutes. In fact, I feel like I spoke a bit too fast while the presentation. However, looking back at the peer review, I figured out that most of our classmates were happy with what we covered within the presentation, so that was a relief.

For setting up DynamoDB, it was a more complicated task and took more time than I expected. There was multiple ways to set up DynamoDB and AWS official document was sometimes really unhelpful. I over-spent some of my time researching for other documentations. I was eventually able to set up my database locally and had sample code running. However, there’s a way of using NoSQL locally with AWS and I think this is an easier way to visualize our database so I might go with this route next week.

I also spent some time coming up with a draft for Design Review Report by writing Architecture and/or Principle of Operation section.

I think I am still on track for the schedule but also realized that the setup for AWS components may take a while. Next week, I will continue working on linking DynamoDB to our web application. I will also a draft Design Trade Studies for web application component so that we can talk together about this on Monday.

Kanon’s Status Report for 3/6

This week, I continued working on web application development. I implemented our own login/registration functionality by using Django authentication. I had some trouble because the default authentication by Django only accepts the pair of username + password while it does not accept the pair of email + password. Because the users log in via Google OAuth2, using their email address, I might change the authentication settings in more detail to make the login parameters the same.

I also researched some more about AWS credits. It seems like EC2 costs the most so I would need to remind myself to turn off EC2 everytime I’m not testing/using the website once I deploy it. Moreover, for the notification/alert, it turned out there’s a website called Twilio that provides SMS API, so I’m going to use this API to send out notifications.

Lastly, as other team members did, I worked on the presentation by coming up with a more detailed block diagram and solutions for the web application component. I will also be the one to present next week so I have been practicing the presentation too.

Next week, I will start setting up DynamoDB and try to link the dataset to Django backend so whenever a user changes the parameters/value on the website, that data will be sent and stored within the database.

Kanon’s Status Report for 2/27

This week, I mainly focused on the basic design of our web application. Currently, I’m thinking of having a single page layout of the website as it would be easier for the user to navigate through. Moreover, because the users will be using this web application on their phone, this single page layout will look like a normal iPhone/Android App. Therefore, there is no need to develop an actual smartphone application.

I heard that implementing Google OAuth with Django is a bit of hassle, so I also decided to implement Google OAuth login this week. It did turn out to be much harder than I expected it to be. There are many ways to implement Google OAuth but some information was outdated, so I had to go through all of them and gather knowledge to come up with the most optimal way to implement this API. Eventually I was able to make it work, but I did not have enough time to look into how to register with Google OAuth.

Lastly, I have set up AWS related accounts and got credits from Tamal. I have read through the basic documentation of DynamoDB and figured out it will cost every time when we try to write/read data to it. The rough calculation gave me $1 per month, which definitely is feasible under our budget. However, I will need to look into EC2 costing so that the total operation cost on AWS will be under $50.

Next week, I will start implementing CSS designs and refurbish registration +  login/logout functionality as it currently only supports Google OAuth login. The users should be able to register with email while also  being able to register with a Google account. I will further need to look into how the Django database is storing Google emails because we might use this information to send notifications/alerts to users.

Kanon’s Status Report for 2/20

This week, as my other teammates have, I worked on making a proposal presentation slides and did some research about receiving/ sending data between arduino and a website using wifi. There are already many similar projects to ours so I went through their projects and saw what kind of difficulties they had and how they overcame them so that if we face a similar issue, it would be much easier to deal with it. From looking at these sources, it seems like using arduino and ESP with AWS DynamoDB is a good idea to receive/send data between hardware and software.

I’ve also thought about some basic web designs that can be used for our application but I would like to dive deeper into this because our web application should be really intuitive to use, and I want to keep it as concise as possible.

Next week, I will start working on coding the basic structure of the web application (HTML + CSS) and research about how I should set up DynamoDB and link that to our backend (JS / Django).