<base>/cmdYour commands
{"cmd":"water_now","seconds":10}
Anatomy of the app
Shikor
OnlineDry
32%
Soil moisture
Last watered 3 h ago
Hover or tap a number
Anatomy of the device
← Hover or tap a number →
Relay power goes to VIN (5 V), never 3V3.
Anatomy of a watering
The ESP32 checks them every 5 seconds. Fail one and it stops right there.
Stops here. Fault. Pump locked out, red LED blinks.
Stops here. Nothing to do. Green LED.
Stops here. Waits. Soil dries slowly.
Stops here. “Not now” pauses requests for 4 h. No answer cancels it after 30 min.
Then quiet for 6 hours.
Anatomy of the link
Both reach the same broker, through different doors. No shared Wi-Fi needed.
Phone and device can be in different cities.
<base>/cmdYour commands
{"cmd":"water_now","seconds":10}
<base>/dataSoil, state, pump (kept by the broker)
soil: 32
<base>/askPermission request
Water now?
<base>/statusonline / offline
online
Retained: the app sees the real state the moment it opens.
Built to fail safe
At power-up: red, then green. Both lit means LEDs and wires are fine.
20 s
Longest single run
Adjustable
10 min
Manual mode hard stop
6 h
Quiet after a watering
30 min
A request expires
4 h
Quiet after “Not now”
5 s
Soil read interval
2 s of data while pumping
Auto mode keeps watering offline. It retries Wi-Fi every 30 s.
A broken sensor never reads as “dry”. The pump stays off.
The BOOT button is ignored, so a stray press can’t stop watering.
Know before you build
Anyone who guesses your topic can run the pump. Use a long random topic.
MQTT needs the app open. Real push needs a small server.
Closed app means no readings are recorded.
The pump can run dry for up to the max seconds.
Mini pumps push water up about 40–110 cm.
The hotspot password is in the code. Someone nearby could join it.