macOS Python GUI to control a Roomba 694 over local Wi‑Fi (same home network).
Important: Wi‑Fi on this model cannot do joystick / WASD driving. The app sends the commands the robot supports locally: start, stop, pause, resume, dock.
cd /Users/mikey/Documents/PERSONAL/ROOMBA
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py- Put the Roomba on its Home Base (dock).
- Run the app → Discover (or type the robot’s IP from your router).
- Get password:
- Hold HOME on the robot until you hear tones
- Release — Wi‑Fi LED should flash
- Click Get password within about one minute
- Connect
IP, BLID, and password are saved in config.json (gitignored).
| Key / button | Smart action |
|---|---|
| W / Clean | Start, or resume if paused |
| S / Stop | Stop (no-op if already stopped) |
| R | Resume (only when paused) |
| Space / Go home | Pause/stop first, then dock (more reliable) |
| P / Pause | Pause while cleaning |
| Esc | Quit |
The app auto-reconnects if Wi‑Fi drops, times out hung discover/connect, and ignores spammy key repeats.
Keep the app open and connected. Settings save to config.json.
| Option | Behavior |
|---|---|
| Clean every day at HH:MM | Starts/resumes cleaning at that local time |
| Start clean when battery reaches N% | While docked/charging, starts once charge hits the threshold (default 50%) |
| Go home when battery falls to N% | While cleaning, docks at the low threshold (default 15%) |
Each rule fires once until it resets (new day / battery hysteresis).
Roomba 694 does not publish pose or maps over Wi‑Fi (confirmed: no pose field, capabilities are only OTA/eco). A room coverage heatmap is not possible on this model.
The right panel therefore shows:
- Mission activity — battery timeline + phase strip + lifetime stats while connected
- If you later use a pose-capable robot (900/i/j), the same panel switches to a live path + coverage heatmap automatically.
- Roomba and Mac on the same Wi‑Fi / LAN
- Firmware 2.x local MQTT API (typical for Wi‑Fi 600-series)
- Only one local app connection at a time — the official iRobot app may fall back to cloud while this is connected