← Back to case studies

Case study

UV Disinfection Robot Controller

A tablet app for operating ultraviolet disinfection robots, used by cleaning operators to run, monitor, and report on room disinfection jobs.

Industry
Robotics & Automation
Tech stack
FlutterDartBluetooth SerialTCP SocketsAES EncryptionQR Code Scanner
UV Disinfection Robot Controller screen 1

Overview

The client builds ultraviolet disinfection robots for hospitals, clinics, and commercial facilities. Cleaning operators move a robot from room to room, run a disinfection cycle, and record what was treated. Every cycle has to be supervised, because ultraviolet light is unsafe around people. The company needed a single controller app that pairs with the robot, drives the cycle, and produces the paperwork that follows it.

The Challenge

Operators had no reliable way to talk to a robot on site. Facility Wi-Fi is inconsistent, and many rooms sit outside network coverage, so a cloud-only controller was not an option. Supervising a running cycle meant standing in the doorway with no view of the room and no way to confirm the robot had stopped when someone walked in. Task records were written up after the fact, which left managers without a dependable log of what was disinfected, by whom, and for how long. They needed an on-site controller that connects directly to the robot, streams what it sees, and keeps working when the network does not.

The Solution

We built the operator app in Flutter for Android tablets. The operator scans an encrypted QR code on the robot to identify it, pairs over Bluetooth Serial, hands the robot its Wi-Fi credentials, then switches to a direct TCP socket for control. We wrote a length prefixed JSON protocol over that socket, with a challenge and response handshake so only an authorized tablet can issue commands. A second socket carries a live camera feed from the robot into the app. The app runs three task modes: autonomous room disinfection, timed multi spot tasks, and manual joystick driving. A room safety checklist and legal notice gate every cycle before it can start. All rooms, robots, operators, and task reports are stored locally in Hive and written through to the API when a connection is available, so the app works the same offline.

The Result

Operators run a full cycle from the tablet, watch the live feed, and see the robot pause on its own when a person is detected. Battery level, temperature, elapsed time, and remaining spots stay on screen throughout the task. Managers get a task report for every cycle, filed automatically with the operator, room, mode, duration, and session log attached.

Our approach

  • Discover: Mapped the on-site workflow with the client team, from scanning the robot to filing the task report, and identified where facility networks drop out.
  • Design: Planned a tablet first interface for gloved use in corridors, with large controls, a persistent robot status bar, and a safety checklist that blocks any unsafe start.
  • Build: Implemented the Bluetooth pairing and Wi-Fi handoff flow, the length prefixed TCP command protocol, the live image channel, the three task modes, and an offline first data layer over Hive.
  • Refine: Added session logging across the Bluetooth and TCP channels, sync prompts before logout, operator inactivity timeout, and separate development, UAT, and production builds for field testing.