Hi everyone,
I’m happy to share a project I’ve been working on: a standalone Wear OS app for openHAB. It brings quick smart home control to your wrist — toggle lights, adjust temperature setpoints, check sensor values on your watch face, send voice commands — all without needing your phone.
This has been a long-requested feature in the community (thread 1, thread 2, thread 3), and with the Garmin app already available, the wearable ecosystem for openHAB is growing nicely.
How It Works
The app uses a Wear OS Tile as the primary interface — you swipe from the watch face and your openHAB controls are right there. No need to open an app. Configuration is done entirely on the openHAB server side using wearTile item metadata.
There is no dependency on the openHAB Android phone app. The watch connects directly to myopenhab.org (or your local server) over WiFi or LTE.
Features
Tile (Primary Interface)
- 1-7 items per page in a concentric honeycomb layout, auto-sized to screen
- Multi-page navigation — organize items into sub-pages (Security, Climate, etc.)
- Toggle switches — lights, outlets, scenes. Tap to toggle, state updates via SSE in real-time
- Range controls — use the rotating bezel/crown to adjust dimmers and temperature setpoints
- Command buttons — send fixed commands (gate pulse, scene activation) with optional confirmation dialog
- Read-only sensors — display Contact/Number item states without tap action
- 5 color themes — amber, blue, green, purple, red. Selectable via long-press on the tile
- Dim/Lit state machine — tile appears dimmed until fresh states arrive from server, preventing commands against stale state
Sub-Pages & Navigation
Organize items into pages — tap a navigation button to enter, back arrow to return:
Range Control (Bezel/Crown)
Tap a temperature or dimmer item to open a full-screen control. Rotate the bezel to adjust the value:
Watch Face Complications
Display openHAB item values directly on the watch face — no app needed:
- SHORT_TEXT — compact value with label (e.g., “27.5 °C”)
- LONG_TEXT — full label and value
- RANGED_VALUE — progress arc for numeric values (dimmers, temperatures)
Items are marked for complications in the same wearTile metadata. Multiple complications can be added to the same watch face, each showing a different item.
Voice Commands
Tap the mic button on the tile → speak a command → it goes to openHAB’s voice interpreter. Uses the watch’s system speech recognizer and your configured Human Language Interpreter (system or rule-based).
Themes
5 color themes, selectable via long-press on the tile → pencil icon. Rotate the bezel to preview:
Configuration
All configuration happens on the openHAB server — the watch only reads. You add wearTile metadata to items, either via Main UI, REST API, or .items files:
// Simple light toggle
Switch Bedroom_Light "Bedroom" <light> { wearTile="tile" [position="1", icon="light", valueDisplay="color"] }
// Gate with confirmation and separate state sensor
Switch FrontGate "Gate" { wearTile="tile" [position="security:1", icon="iconify:mdi:gate", valueItem="Gate_State", action="command", commandValue="ON", needsConfirmation="true", valueDisplay="color"] }
// Temperature complication on watch face
Number:Temperature BDR_Temp "Bedroom [%.1f °C]" { wearTile="complication" }
// Both tile and complication
Number:Power Solar "Solar [%d W]" { wearTile="tile" [position="3", complication="true", icon="solarplant"] }
The metadata supports:
- Custom icons (openHAB classic, Material, Iconify/MDI)
- Display as color (accent/grey) or text value
- Separate value source (
valueItem) and command target (commandItem) - Navigation to sub-pages (
action="page:security") - Confirmation dialogs for irreversible actions
Full configuration documentation: docs
Requirements
| Requirement | Details |
|---|---|
| Watch | Wear OS 5+ (SDK 34). Tested on Samsung Galaxy Watch Ultra |
| Connection | WiFi or LTE. Connects to myopenhab.org or local/remote server via HTTPS |
| openHAB | 5.x recommended (uses REST API + SSE) |
| Phone | Not required. Standalone operation. |
Current Status
The app is functional and in daily use on my Samsung Galaxy Watch Ultra. It’s not yet on Google Play — I’d like to gather some community feedback first.
What works well:
- All tile interaction modes (toggle, range, command, navigation, display-only)
- Real-time SSE state updates
- Complications with periodic refresh
- Voice commands via openHAB interpreter
- Push notifications
- Theme picker with bezel rotation
Known limitations:
- Tested only on one device (Galaxy Watch Ultra, 480×480 screen). The concentric layout adapts to screen size but hasn’t been verified on smaller watches
- Complication refresh is system-managed (every ~15 minutes) — not instant
- Requires HTTPS (works out of the box with myopenhab.org)
How to Get It
The app is distributed via Google Play — Wear OS does not allow sideloading APKs directly to the watch. It’s currently in internal testing on Google Play.
If you’d like to try it out, send me a private message with the email address associated with your Google Play account. I’ll add you to the internal testers group and you’ll be able to install it from the Play Store.
Requirements:
- A Wear OS 5+ watch (Samsung Galaxy Watch 4/5/6/7/Ultra, Pixel Watch, etc.)
- An openHAB 5.x instance accessible via HTTPS (myopenhab.org works out of the box)
I’d love to hear your feedback — especially from people with different watch models. Let me know if you have questions about the configuration approach or feature requests.











