Four taps. No staff at the station. No paperwork. The cabinet handles the unlock-detect-relock loop in the background while the rider just inserts and lifts.
The rider only ever taps four things. Cabinet unlock, payment authorisation, telemetry sync, and history log all happen in the background.
Rider scans the cabinet QR or taps an RFID card from the User App. Cloud verifies that the rider is live, KYC-approved, deposit-paid.
Razorpay UPI authorisation. Single click. No paperwork. Receipt issued automatically.
Empty pod unlocks. Insert old pack. Pod relocks. Charged pod unlocks. Lift it out.
Receipt in History. Admin Dashboard updates instantly. Old pack starts charging.
The cabinet, the cloud, and the apps coordinate over MQTT in real time. By the time the rider lifts the new pack, every system in the network already knows.
QR scan or RFID tap fires /swap/check. Cloud verifies KYC, deposit, available pod. Returns target station and pod number in under 300ms.
Cloud publishes unlock_pod over MQTT to electica/station/<id>/command. ESP32 acknowledges on /status, throws the solenoid. Door unlocks within 1s.
CAN bus detects pack insertion or removal in <200ms. ESP32 publishes the swap event. Server writes to Postgres + fans out via MQTT to all open admin dashboards.
| Step | Avg time | What's happening |
|---|---|---|
| Scan QR | 3-5s | Camera focus, decode, app handshake with cloud. |
| Pay | 5-8s | Razorpay UPI flow. Single click in most cases. |
| Pod unlock | <1s | MQTT command + solenoid actuation. |
| Insert old pack | 8-12s | Rider walks up, slots pack, door auto-locks on detect. |
| Charged pod unlock | <1s | System picks the highest-SOC pack, unlocks that pod. |
| Lift & install | 15-25s | Rider lifts, walks to bike, slots into bike. |
| Receipt + history | Instant | Server writes the swap record before the rider is off the bike. |
Razorpay returns an error. No pod unlocks. Rider sees a "Try again" prompt with a fallback to UPI Intent. No charge, no swap.
If the cabinet doesn't ACK within 30s, the cloud retries automatically. After 3 retries the rider is auto-refunded. Operator gets an alert.
BMS detects swollen / overheated / faulty pack. Cabinet auto-isolates the slot. Provider App gets a fault notification. Refund processed if needed.