Smart Motor Controller
Water when it’s needed.
A pump that knows
when to stop.
An ESP32 controller that brings tank sensing, pump protection and everyday control together. Automatic at the tank. Accessible from your browser.
Explore the system, the dashboard and device sign-in. Select an image for a closer look.
The challenge
One everyday task.
Many conditions.
A water pump needs more than an on/off switch. It needs to respond to changing tank levels, recognise when water is unavailable and know when to try again.
The Smart Motor Controller puts those decisions on the device. A browser interface makes its state visible, while optional cloud access lets people check in and send commands remotely.
The control loop
Sense. Start. Check. Stop.
Read the tanks.
Level inputs track available capacity. In all-levels mode, the system waits for both the overhead full probe and the underground upper-level probe before declaring the tanks full.
Choose the moment.
A configurable operating window and separate retry intervals govern automatic starts. A physical button and browser controls provide manual operation.
Check the current.
An ACS712 sensor measures motor current. After a startup delay, the firmware compares readings with a configured threshold to detect a possible dry run.
Stop and reassess.
A confirmed full-tank signal stops the pump. Sustained low current triggers a dry-run stop; the controller waits for its retry interval before trying again.
Everyday operation
Know what the
pump is doing.
The local dashboard brings motor state, tank status, current draw and the next start into one view. Event logs show starts and stops, while configuration controls keep the schedule, retry intervals and dry-run settings close at hand.
The ESP32 serves the interface itself over its own access point or the home network. Local control does not depend on the cloud.
Protection in layers
Built for the
unexpected.
Real sensors fluctuate. Networks disconnect. A full reading can be caused by a brief splash. The firmware includes checks for these conditions, with decisions made locally on the controller.
Filter noisy readings.
Tank-state changes are debounced. The bare full-level electrode is pulse-sampled, and unusually short full-tank runs trigger an increasing automatic-start hold-off.
Know when to ask for attention.
After two maximum-runtime stops without a full-tank stop in between, automatic starts lock until a manual start. This lock persists across a power cycle.
Keep control responsive.
MQTT connection work runs on a separate task. The main loop retains control of the relay, and cloud commands older than 60 seconds are rejected when the device clock is synced.
The connected system
Close to the hardware.
Within reach remotely.
Tilism Cloud adds account access, device pairing and remote command dispatch. The cloud dashboard receives device updates through an MQTT broker; the firmware remains the only layer that can switch the relay.
ESP32-S3
Sensing, schedule, protection and relay control.
MQTT over TLS
Device updates, commands and acknowledgements.
Cloud dashboard
Live status via WebSockets. Commands through the PHP backend.
The PHP + MySQL backend manages accounts and pairing. The local dashboard communicates directly with the ESP32; cloud access is optional.
- ESP32-S3
- Arduino / C++
- ACS712
- DS3231 RTC
- WebSockets
- MQTT / TLS
- PHP + MySQL
Built at Tilism
Make an everyday
system smarter.
From sensing and embedded logic to a useful interface, we connect the physical system with the people who operate it.
Discuss a similar project