Summary
A lightweight Wear OS app for Android smartwatches that displays current weather conditions from a Kanfei station. Companion to the planned native Android app (#32).
Scope
Watch face complication
- Data provider that polls
GET /api/public/weather on a configurable interval (default: 15-30 min)
- Supports standard complication types: short text (temp), long text (temp + conditions), ranged value (humidity, barometer)
- Works with any watch face that supports complications
Glance / tile
- Full current conditions at a glance: temperature, humidity, wind, barometer
- Tap to open detail view with daily hi/lo, rain, UV
Configuration
- Server URL entry (e.g.,
http://192.168.1.50:8000)
- Poll interval selection
- Which data to show in complication
Connectivity
- LAN: Works out of the box on the same subnet — polls the public weather API directly
- Remote: Works if the Kanfei instance is exposed via reverse proxy, port forward, or VPN
- All connections are client-initiated outbound HTTP (no inbound ports required on the watch)
- Uses the unauthenticated
/api/public/weather endpoint — no credentials stored on the watch
Technical notes
- Wear OS 3+ (Compose for Wear OS)
SuspendingComplicationDataSourceService for complication data
WorkManager for periodic background polling
- Battery-conscious: respect Wear OS doze mode, use
PeriodicWorkRequest with flex window
- Offline cache: show last-known values when unreachable
Acceptance criteria
Related
Summary
A lightweight Wear OS app for Android smartwatches that displays current weather conditions from a Kanfei station. Companion to the planned native Android app (#32).
Scope
Watch face complication
GET /api/public/weatheron a configurable interval (default: 15-30 min)Glance / tile
Configuration
http://192.168.1.50:8000)Connectivity
/api/public/weatherendpoint — no credentials stored on the watchTechnical notes
SuspendingComplicationDataSourceServicefor complication dataWorkManagerfor periodic background pollingPeriodicWorkRequestwith flex windowAcceptance criteria
Related
GET /api/public/weather