This is a full distribution of the Plant133 plant-watering device. This device can monitor and water up to 4 plants at a time. This repository hosts the firmware, PCBA design, and OpenSCAD code for all components.
A writeup about this project is at "Plant1337: "Water 4 plants."
Please see the instructions for how to assemble and set up a Plant133 device hardware.
The web interface is built with Svelte and must be compiled before uploading to the ESP32's filesystem.
./build-svelte.sh
This generates the static HTML/CSS/JS files in data/static/, then converts them into a header file (using svelteesp32)to include them all in the firmware.
secrets.ini.example to secrets.ini and set your WiFi credentials, OTA password, and MQTT details.pio run
pio run -t uploadfs
pio run -t upload
The device exposes a JSON API for integration and control:
GET /api/status: Returns system status (temp, humidity, water level).GET /api/plants: Returns configuration for all plants.GET /api/moisture: Returns current moisture readings.PUT /api/plants/{id}: Update configuration for a specific plant.POST /test/pump: Run a pump for a specific duration (JSON body: { "pumpId": 1, "duration": 1000 }).POST /api/restart: Restart the device.This project is built using a custom C++ framework for ESP devices:
The full KiCAD project for the printed circuit board is in the KiCAD subdirectory.
Components are designed in OpenSCAD. Source code is in the scad subdirectory.
Housing for the PCBA (scad/box/).
Mounts the box to a water reservoir (scad/ebox_hook).
Holds pumps and water level float (scad/reservoir_insert).
Holds the watering tube at the sensor location (scad/moisture_sensor_cap).
Alternative watering method using a soil spike (scad/spike).