Plant monitoring system.
Uses Raspberry PIs, NATS, and Prometheus.
Collects information about plants and soil moisture.
Publishs the collected data into a NATS cluster.
Processes the information and displays it with Prometheus/Grafana.
charts- helm charts from this repository (more info here)go-fibergateway-gr241ag- Go client for the Altice Fiber Gateway GR241AGingestion-service- service to ingest readings from NATS jetstreamk8s- setups a k8s cluster to run NATS and Prometheusmonitor-ghm- monitor running on raspberry pi with Pimonori Grow HAT Mini (GHM)router-config-controller- K8s controller to automatically expose cluster ports in the Altice Fiber Gateway
| What | Command |
|---|---|
| Stream summary | nats --server nats://192.168.1.131:4222 stream report |
| Delete stream | nats --server nats://192.168.1.131:4222 stream rm PlantReadings |
| List stream consumers | nats --server nats://192.168.1.131:4222 consumer ls PlantReadings |
| Delete stream consumer | nats --server nats://192.168.1.131:4222 consumer rm PlantReadings PlantReadingsIngestion |
Send data to NATS server/jetstreamsConsume jetstream messages and publish to prometheus- Dinamic configuration of the sensors
Show data on Grafana- Calibrate sensors
- Alarms for plants with low soil moisture
- Loadbalancer and external IP for NATS
- NATS security (TLS, auth, etc.)
- Mobile/Slack notifications
- IaC for K8s cluster (FluxCD)
- Acquire Raspberry Pico or ESP32, basic sensors, batery and GSM module
- Basic monitor
- Configure NATS to support MQTT
- Comunication MQTT via GSM
- Deep sleep
- Measure consumptions and batery life
- Batery life optimizations
The chart releaser action is used to release helm charts.
Check the workflow file at .github/workflows/helm-release.yaml.
Each service has its own versioning.
We use GitVersion to automatically generate new versions using SemVer.
Each service contains a GitVersion.yml file and a release action.
Example for the ingestion service:
ingestion-service/GitVersion.yml.github/workflows/ingestion-service-release.yaml