-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Dakota Chang
authored and
Dakota Chang
committed
Jan 24, 2024
1 parent
2f38469
commit 97400a8
Showing
73 changed files
with
8,275 additions
and
563 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,88 @@ | ||
# Getting Started | ||
# Welcome to the Onboarding for Hydroponics! | ||
|
||
Welcome to Olin's PInT Out Maine subteam's official/unnoficial documentation site! Here you'll be able to find documentation specifc to our subteam(i.e how we mantain our github repository). If you're ever lost about a certain script or how to reinstall an application, come here! | ||
[FAQs and Common Issues](https://www.notion.so/FAQs-and-Common-Issues-d0cd1165783843e1b3c2f8da77492a7a?pvs=21) | ||
|
||
_Note: This is maintained by Kenneth Xiong '27. There are some things that are missing because I forgot about them, or I don't understand how they work. If there's an error or something missing, feel free to reach [out](mailto:[email protected])._ | ||
### What is Hydroponics? | ||
|
||
## Installing Unity | ||
_We use version **2020.3.32f1** of Unity. Any other version will not be able to open the project._ | ||
Hydroponics is the technique of growing plants using water-based nutrient solutions instead of soil. Hydroponics could be the future of agriculture (dare we say aquaculture) because of hydroponic gardens’ compactness, fast growth, resistance to pests, and lower water consumption. | ||
|
||
1. Go to [https://unity.com/releases/editor/archive](https://unity.com/releases/editor/archive) and download version **2020.3.32f1** of Unity for you os(runder 2020.x tab). **DO NOT OPEN THE FILE YET!** | ||
### Our Goals | ||
|
||
2. Download Unity Hub. | ||
As a PInT subteam one of our primary goals is to help you learn and grow as individuals by doing. If you’re not passionate about any of the existing subprojects that we’re working on, then talk to your lead and we can find a fit for you. | ||
|
||
3. Open Unity Hub FIRST. Follow the prompts to create a new account. | ||
Automation’s goal is to create a living garden; that is, a garden that can give itself more water or nutrient substrate when it’s needed. We’re implementing this using a microcontroller that should check plant metrics (pH, water content, etc.) and deliver the nutrients a plan needs to survive. We plan to allow the community to interact with the hydro wall without needing to be there in person, so we have designed an API and are constantly improving our API and frontend dashboard so that we provide a good user experience. | ||
|
||
## Installing Github | ||
_You might be thinking "I'm not a programmer, I don't need this," get it :3_ | ||
### To Contribute: | ||
|
||
1. Download **Git** for your os [here](https://git-scm.com/downloads). | ||
2. Run the file with default settings. Make sure that git is added to your computer's PATH. | ||
3. Download *Github Desktop* [here](https://docs.github. | ||
com/en/enterprise-cloud@latest/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop). | ||
Visit our Computational Setup and Install Packages pages, which detail how you can install the software you need to succeed on Hydroponics. | ||
|
||
_This step is **not** optional for advanced users. Unity is not command line friendly when it comes merging branches._ | ||
[Computational Setup - General](https://www.notion.so/Computational-Setup-General-751cbe826a9f4a2fa62c351c19af5d31?pvs=21) | ||
|
||
4. Run the installation file and log in. | ||
[Install Packages](https://www.notion.so/Install-Packages-e498eccb0dc74e59ba2a6f249f6f7667?pvs=21) | ||
|
||
_If you haven't already now is a good time to create a github account._ | ||
Our GitHub is organized into several subdirectories, each with a focus on one aspect of the Hydro automation workflow. You can view our GitHub here: https://github.com/Olin-Hydro. | ||
|
||
5. Select "Clone a Repository from the Internet". Paste "https://github.com/lilibaker/outmaine.git" into the space for a web adress. Make note of file path that the repository has been copied to. You will need it in the next step. | ||
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/8469ebe1-5030-4ff4-9e93-da19dccf0706/dbbf3a3d-b1ef-4f4c-9f4c-4167e1eecc98/Untitled.png) | ||
|
||
_If this throws an error, reach out to Kenneth. You don't have access to the repository(oops!)._ | ||
### Hydrangea | ||
|
||
6. Open Unity Hub. Click "Add Project" and select "From Disk". Nagivate to where you cloned repository earlier. If everything was setup correctly, the project should open in Unity. YAY!!!! | ||
Hydrangea is a messenger between all the component. It’s an Application Programming Interface (API) written in Python, which is essentially a contract between anything application that has a distinct function. Here’s how [Amazon Web Services](https://aws.amazon.com/what-is/api/#:~:text=on%20your%20phone.-,What%20does%20API%20stand%20for%3F,of%20service%20between%20two%20applications.) describes it: API “defines how the two communicate with each other using requests and responses.” | ||
|
||
## Installing Photoshop | ||
We are constructing a path where the microcontrollers, database, and the frontend dashboard can all interact with each other and communicate. Currently, we are using a REST API architecture with routes built for `GET`ting, `POST`ing, and updating (`PUT`ting): | ||
|
||
_Different from past semesters, we will be using photoshop to create our pixel art. Fun Fact! Olin gives all students access to the entire Adobe suite._ | ||
- Configuration settings (`Config`) for scheduling sensor readings (`SensorSchedule`) and actuators (`SASchedule`, `RASchedule`) | ||
- Gardens (`Garden`), pods (`Pod`), sensors (`Sensor`), reactive actuators (`Reactive_Actuator`), and scheduled actuators (`Scheduled_Actuator`) | ||
- Commands (`Command`) for a specific execution of an actuator | ||
- Various logs for sensors (`Reading`), scheduled actions (`Scheduled_Action`), and reactive actions (`Reactive_Action`) | ||
|
||
1. Self explanatory. Download Adobe Creative Cloud(if you haven't already). Install Photoshop. | ||
This API uses [FastAPI framework](https://fastapi.tiangolo.com/) and AWS Lambda function to host. We are using MongoDB as our database and `pymongo` library for Python interface. | ||
|
||
That's it! You're now ready to start designing :) | ||
You’ll need Python 3.10+ and [MongoDB Community Edition](https://www.mongodb.com/docs/manual/administration/install-community/#std-label-install-mdb-community-edition) to start contributing. | ||
|
||
### Saffron | ||
|
||
Saffron is the frontend page that graphically displays data and provides convenient controls for the hydroponic system. It’s a dashboard for viewing the gardens and pods registered in the database and their corresponding data collected from the microcontroller — such as sensor readings, actuator logs, and etc. The repository uses mainly Typescript and React (”a free and open-source front-end JavaScript library for building user interfaces based on components,” [Wikipedia page on React](<https://en.wikipedia.org/wiki/React_(software)>)). Additionally, we use `axios` library for concise API requests and error handling. The graphic designs and mockups (made by Jasper K. `23) are available on [this Figma page](https://www.figma.com/file/g259C0UL7i5YMckjOJcDcR/Hydro-Frontend-V0.2?type=design&node-id=0-1&mode=design). | ||
|
||
You’ll need Node.js and `npm` to start contributing. | ||
|
||
### Mother-nature | ||
|
||
Mother Nature is a high level controller written in Golang and applied using AWS Lambda. It acts as a checker for plant condition and communicates with the Hydro API to ensure plant health. We’re trying to move away from Mother Nature as it is over-engineered for our purposes. | ||
|
||
### Mini-Gardener | ||
|
||
Mini-Gardener is an embedded application for ESP-8266 that controls sensors and actuators, and communicates relevant data to database and/or frontend dashboard via Hydrangea (API). It’s written in C++ and uses PlatfromIO for VSCode IDE integration. The purpose of Gardener is to provide control over physical electronic components and automate the process of nurturing plants by running on provided logic and schedules. | ||
|
||
You’ll need PlatformIO to start contributing. | ||
|
||
**Let a lead know what you would like to work on and we’ll invite you to collaborate!** | ||
|
||
Questions from Documentation Review: | ||
|
||
- Where is the DB hosted? | ||
- Why is it hosted on MongoDB and not AWS when the API is hosted on AWS | ||
- What does the architecture look like geographically? | ||
- Mentorship? | ||
- Include diagram in docs | ||
- What is least clear about our platform? | ||
- “I feel like i have a better picture looking at this diagram, but there’s a lot happening” | ||
- If i had to guess I would guess like the pH changed or something so that gardener sends commands to API and you send back configs to the local system | ||
- Don’t know what’s happening with mother nature | ||
- Can you guess what components are hosted on what services? | ||
- Web-UI | ||
- React | ||
- Sensor Data | ||
- mongoDB | ||
- Data API | ||
- hosted on AWS lambda | ||
- using Python | ||
- In short, yes! | ||
- List specific projects for students to work on? | ||
- if the student doesn’t want to work on one of the existing projects, then they can come to you | ||
- otherwise, list projects that they can work on | ||
- FAQs and Common bugs page | ||
- Node.js error that keeps happening with version mismatch | ||
- How does our workflow look like? Need to write workflow—PRs? Fork then push? | ||
- Do an exercise and do code review that exercise to get used to workflow? | ||
- They should be trying things themselves and in general not getting stuck (if they get stuck they can come to you but shouldn’t realllllly need to) | ||
- Have students try out our docs and figure out what we still need / would benefit from |
Binary file not shown.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.