Files
PlantPal/README.md
programmingPug 9bce8577ce Update README.md
2025-01-17 17:36:53 -05:00

4.6 KiB


Logo

PlantPal

Because knowing when to water your plants is hard

About The Project

Prototype 1

I love having plants around but I often forget to water them or how much to water them. So I initially started this project to just check if soil was dry and have a small piezo buzzer go off when a plant needed water. Well things escalated as I wanted to add features and now I'm at the point where it's a multi-system product with multiple moving parts.

Where the project is now

At this point the project consists of:

  • Probe nodes that record soil moisture data
  • Reporter node that collects and sends the probe data to an API
  • An API that serves to both the reporter node and a front-end client
  • Front-end client that provides a web interface for viewing the collected plant moisture data.

Where the project is going

The end goal is to have the probe nodes collect soil moisture, soil temperature, relative humidity, air temperature and light spectrum values. With all this information I'm hoping to be able to optimism plant health and maybe even help figure out resource distribution for farming... but that's years down the road.

Built With

This project is built on the following technologies:

Project Structures:

  • plant-browser: Front-end client.
  • SoilMoistureAPI: Backend API.
  • Eagle: PCB project for soil nodes.
  • batteryValidationTest: Arduino project for testing batteries.
  • soilReporterNode: Arduino project for probe notes to report and forward data to API.
  • soilProbeNode: Arduino project for gathering plant information.

Requirement (Client and API)

  • Node: v22.12.0
  • NPM: v10.9.0
  • Docker: v27.4.0

Requirement (Hardware)

Installing for Local Development:

API:

You will need to modify a few things int he API project for local development.

  1. program.cs
options.ListenAnyIP(80) --> options.ListenAnyIP(8000)
  1. appsettings.json
"DefaultConnection": "Data Source=app/data/SoilMoisture.db" --> "DefaultConnection": "Data Source=SoilMoisture.db"

Then just click "http" to run the API.

Install client dependencies:

From the client folder

Install dependencies

npm install

Run the Client:

ng s

Building Images:

Building images for runtime distrobution

API image:

Build docker image

docker build --no-cache -t plantpal-api:latest .

Tag image

docker image tag plantpal-api 192.168.1.193:5000/plantpal-api

Push to registry

docker push 192.168.1.193:5000/plantpal-api

Client image:

Building images for runtime distrobution

Build docker image

docker build -t plantpal-client:latest .

Tag image

docker image tag plantpal-client 192.168.1.193:5000/plantpal-client

Push to registry

docker push 192.168.1.193:5000/plantpal-client

Running Docker Images:

Create Docker Network

Create new docker network for the containers to communicate

docker network create plantpal_network

Run API Image

docker run -d --name plantpal_api --network plantpal_network -p 8000:80 plantpal_api:latest

Run Client Image

docker run -d --name plantpal_client --network plantpal_network -p 3000:80 plantpal_client:latest

Docker Compose:

optionally You can also use docker compose with the file at the root

docker-compose up -d --build

Roadmap

  • Functional API
  • Functional Client
  • Functional reporter node
  • Functional prob node
  • Unraid integration
  • Initial PCB design

Contributing

Currently this is closed to contributing till V1 is functional.

License

Distributed under the MIT License. See MIT License for more information.

Contact

Christopher Koch - ckoch@lazypug.net

Project Link: https://github.com/programmingPug/plantpal