Plant133 Svelte Themes

Plant133

Firmware, circuit design, and 3D-printable components for an automated plant-watering system.

Plant133

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."

Features

  • Multi-Plant Support: Monitors and independently waters up to 4 plants.
  • Sensors:
    • Capacitive soil moisture sensing for each plant.
    • SHT3x temperature and humidity sensor for environmental monitoring.
    • Reservoir water level float switch detection.
  • User Interface:
    • OLED Screen: Rotates through status screens showing IP address, moisture levels, and environment data.
    • Web Dashboard: A modern Svelte-based responsive web interface for real-time monitoring and configuration.
  • Integration:
    • MQTT: Full support for Home Assistant auto-discovery and state reporting.
  • Safety:
    • Watchdog Timer: Hardware watchdog protects against system hangs.
    • Dose Limiting: Prevents over-watering by limiting the maximum number of pump cycles per day.
    • Reservoir Check: Prevents pump damage by detecting low water levels.

Usage

Please see the instructions for how to assemble and set up a Plant133 device hardware.

Development

Prerequisites

Building the Web Interface

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.

Building and Flashing Firmware

  1. Configure Secrets: Copy secrets.ini.example to secrets.ini and set your WiFi credentials, OTA password, and MQTT details.
  2. Build Firmware:
    pio run
    
  3. Upload Filesystem (contains the web interface):
    pio run -t uploadfs
    
  4. Upload Firmware:
    pio run -t upload
    

API Reference

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.

Software Libraries

This project is built using a custom C++ framework for ESP devices:

Hardware

PCBA

The full KiCAD project for the printed circuit board is in the KiCAD subdirectory.

3D Printed Components

Components are designed in OpenSCAD. Source code is in the scad subdirectory.

Project box

Housing for the PCBA (scad/box/).

Reservoir Hanger

Mounts the box to a water reservoir (scad/ebox_hook).

Reservoir Insert

Holds pumps and water level float (scad/reservoir_insert).

Moisture Sensor Cap

Holds the watering tube at the sensor location (scad/moisture_sensor_cap).

Watering Spike

Alternative watering method using a soil spike (scad/spike).

Top categories

Loading Svelte Themes