From 17312a546194084a44cc7712d80035958626abe0 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 6 Jan 2021 13:36:09 +0000 Subject: [PATCH] Update --- README.md | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 20585d6..c0e46fa 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,18 @@ #### Reducing water waste by automatically dispensing lower bound water amounts, calculated using a ML Model using present weather data ## About -About +This project aims to integrate hardware IoT sensors (some RPi Zero's with I2C probes) and Machine Learning (Deep-NN) to predict how much water a outdoor garden will need every day. + +The ML Model uses the last 24hrs of collected weather data to make a prediction around mow much water needs to be dispensed to keep the plants alive. + +This approach hopes to reduce the overall water use by not watering plants in excess. ## Project diagram ```TODO``` ## File Structure - +
This part is long, click to expand - `data_collector/` Main data collector and uploader module @@ -50,7 +54,30 @@ About - `.gitignore` Gitignore file preventing all my API keys from showing up online... - `README.md` See `README.md` - +
+ +## Installation and running +1. Clone this repo +2. Create the secrets folders +3. Generate a set of firebase and OpenWeather API credentials and place them in the secrets folders, rename accordingly +4. Move the `master` folder to the main Pi +5. Move the `satellite` folder to the sensor Pi +6. Install Docker on all Devices +7. Build the docker images on the relevant architectures (for me everythong was build on armv7) + - `data_colelctor`: `docker build -t siot-weather-collector .` + - `data_processor`: `docker build -t siot-data-processor .` + - `master/irrigator`: `docker build -t master-node .` + - `master`: `docker build -t irrigator .` + - `satellite`: `docker build -t satellite .` +8. *NOTE: The ML Dockerfile is very long and complicated because tensorflow does not play well with a 32 bit arm architeture, if you are building for x86 or arm64, you may need to change the file* +9. Run the docker containers: + - The `data_collector` on the cloud device: `docker run -d --restart always --name siot_weather_collector siot-weather-collector` + - The `data_processor` on the cloud device: `docker run -dp 3535:3535 --restart always --name siot_watering_predictor siot-data-processor` + - The `master` on the master Pi: `docker run -dp 3333:3333 --privileged --restart always master-node` + - The `master/irrigator` on the master Pi: `docker run -d --privileged --restart always irrigator` + - The `satellite` on the sensor Pi: `docker run -d --privileged --restart always satellite` +10. While you are free to use my ML model included in this repo, I suggest you explore the `manual_data_processing` folder and create your own. +11. You will also need at least 24hrs of data before the model can make predictions, so the `siot-weather-collector` image must be started at least 24hrs before the others ## Maintainers and Contributors