Tilism Design

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.

Disciplines
Embedded systems · Firmware · Interface · Cloud
Platform
ESP32-S3 · Local web dashboard · Tilism Cloud

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.

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

  2. Choose the moment.

    A configurable operating window and separate retry intervals govern automatic starts. A physical button and browser controls provide manual operation.

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

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

15 secondsOf sustained low current required to confirm a dry run during normal running.
4 hoursAbsolute runtime cap, independent of tank and dry-run checks.
Local firstTank sensing and relay control remain on the ESP32 when the cloud is unavailable.
  • 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.

01 / Device

ESP32-S3

Sensing, schedule, protection and relay control.

02 / Connection

MQTT over TLS

Device updates, commands and acknowledgements.

03 / Remote view

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