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