A Garmin Connect IQ watch app that triggers a SwitchBot Bot from your wrist. No SwitchBot Hub required.
Garmin Watch → Phone (Garmin Connect app) → Internet → Your Domain (HTTPS)
→ Raspberry Pi (nginx + Python server) → Bluetooth → SwitchBot Bot
Press the button on your watch, and the SwitchBot Bot presses a physical button for you.
Connect IQ app for Garmin watches. Sends an HTTPS request with an API key to your server when you press the watch button.
- Target devices: FR55, Vivoactive 6
- SDK: Connect IQ 8.4.1, minSdkVersion 3.0.0
HTTP server that receives requests from the watch and sends BLE press commands to the SwitchBot Bot. See pi/README.md for setup instructions.
- Pi: Edit
pi/buzz_server.pywith your Bot's BLE MAC and a secret API key, thendocker compose up -d - Domain: Point a domain at your Pi with HTTPS (nginx + certbot)
- Watch app: Edit
source/SwitchBotApi.mcwith your domain and API key, build, and sideload to your watch
monkeyc -d fr55 -f monkey.jungle -o watchmebuzz.prg -y developer_key.der -wOr use run.bat (Windows) to build and launch the simulator.
The app requires a server URL and API key to function. Connect IQ apps support user-configurable settings via the Garmin Connect phone app, and the codebase includes the settings UI (resources/settings.xml, resources/properties.xml). However:
- Sideloaded apps can't use phone settings. The Garmin Connect app only shows settings for apps installed from the Connect IQ Store, not for
.prgfiles copied to the watch via USB. - Store publishing requires beta testing. Uploading to the Connect IQ Store as a beta didn't surface the app reliably in the store search.
- The app is personal. The server URL and API key are specific to your own Pi, so hardcoding them in
source/SwitchBotApi.mcbefore building is the simplest approach.
If you publish to the Connect IQ Store, you can switch back to Properties.getValue() for runtime configuration (see the TODO comment in SwitchBotApi.mc).
- Garmin watch (FR55, Vivoactive 6, or similar)
- Raspberry Pi with Bluetooth
- SwitchBot Bot (password disabled)
- Domain with HTTPS pointing to the Pi