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.
secrets.ini.example to secrets.ini and set your WiFi credentials, OTA password, and MQTT details.cd svelte
npm install
# For a specific board (e.g. usb_cactus)
pio run -e usb_cactus
pio run -e usb_cactus -t upload
The device exposes a JSON API for integration and control:
GET /api/status: Returns system status (temp, humidity, water level, MQTT connection).GET /api/plants: Returns configuration for all plants.GET /api/moisture: Returns current moisture readings and watering states.PUT /api/plants/{id}: Update configuration for a specific plant.GET /api/wifi: Get current WiFi SSID and board name.GET /api/mqtt: Get MQTT configuration status.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).