Local API & Developer Guide
The Intellidwell Sprinkler Controller exposes a clean REST API on your local network, enabling custom scheduling, automated integrations, and scripting.
Local HTTP REST API
All REST calls should be made to the local IP address assigned to your controller.
1. Fetch System Status
Returns the current state of all relays, active timers, CPU/Wi-Fi parameters, and sequential queue metrics.
GET http:///api/status
{
"relay_states": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
"timers": {
"1": 248
},
"queue": {
"active": false,
"steps": [],
"current_index": 0,
"remaining_seconds": 0
}
}
2. Activate Zone with Timer
Starts a timed zone irrigation cycle. Zone indexes are 0-indexed (0 to 9).
GET http:///relay-timer//
3. Cancel Zone Timer
Cancels any active timer running on a specific zone and turns off the relay.
GET http:///cancel-timer/
4. Direct Relay Control
Directly toggle a relay state manually. State parameter must be on or off.
GET http:///relay//
5. Set Rain Delay
Halts all scheduled irrigation activities for a specified number of days.
GET http:///set-rain-delay/
6. Reboot Controller
Performs a hardware reset cycle on the ESP32 chip.
POST http:///restart
Serial Reprogramming Guide
If you need to manually flash MicroPython or install raw firmware modules, you can connect to the controller's internal header pins using a USB-to-UART serial bridge (such as an FTDI adapter).
Header Pin Configuration:
- VCC: Connect to 3.3V power (Do not use 5V)
- GND: Connect to Common Ground
- TX: Connect to UART Bridge RX
- RX: Connect to UART Bridge TX
- IO0: Tie to Ground during boot to enter flashing mode
Flashing MicroPython with esptool:
# 1. Erase flash
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
# 2. Write firmware image
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20250912-v1.22.bin