mirror of
https://github.com/sudoxnym/sleepd.git
synced 2026-04-14 03:26:53 +00:00
No description
| .github | ||
| brands | ||
| custom_components/saas | ||
| .gitignore | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| DEPLOY.md | ||
| hacs.json | ||
| LICENSE | ||
| README.md | ||
sleepd
real-time sleep state tracking for home assistant
processes sleep mqtt messages and exposes states, events, and controls to home assistant - automate your smart home based on whether you're awake or asleep.
✨ features
- wake status sensor —
awakeorasleepbased on configurable thresholds - sleep stage tracking — light, deep, rem, awake
- alarm controls — dismiss, snooze, skip via HA buttons
- sound detection — snore, talk, cough events
- lullaby control — playback status and stop button
- disturbance alerts — apnea and anti-snoring events
📱 compatible apps
- sleep as android (primary)
- any app that publishes sleep events via mqtt
📊 sensors
| sensor | description |
|---|---|
| wake status | awake or asleep based on configurable states and durations |
| sleep stage | current stage (light, deep, rem, awake) |
| sleep tracking | whether tracking is active or paused |
| alarm event | alarm events like snooze, dismiss, skip |
| sound | snore, talk, cough, and other detected sounds |
| disturbance | apnea and anti-snoring events |
| lullaby | lullaby playback status |
| state | raw event from last mqtt message |
🎮 buttons
requires home assistant companion app
- alarm dismiss / snooze
- lullaby stop
- sleep tracking start / stop / pause / resume
- sleep tracking start with smart alarm
📥 installation
option 1: hacs (recommended)
option 2: manual
- copy
custom_components/saasto your HAcustom_componentsdirectory - restart home assistant
📡 mqtt setup
sleepd expects json messages with an event field:
{"event": "sleep_tracking_started"}
{"event": "sleep_tracking_stopped"}
{"event": "alarm_alert_start", "value1": "1733580000000"}
{"event": "light_sleep"}
{"event": "deep_sleep"}
{"event": "rem"}
📲 set up Notify for Mi Band 7
- pair **Mi Band 7** as you normally would with Mi Fitness
- obtain auth key for Notify app using ADB
adb shell
grep -E "authKey=[a-z0-9]*," /sdcard/Android/data/com.xiaomi.wearable/files/log/XiaomiFit.device.log |
awk -F ", " '{print $17}' | grep authKey | tail -1 | awk -F "=" '{print $2}'
credit: iamfosscad
- uninstall **Mi Fitness**
- download/install Notify for Mi Band
- follow prompts, input auth key, select Mi Fitness is not installed
- enable Sleep As Android in Notify settings
🔐 extracting the Zepp authKey on a rooted android device
su cd /data/data/com.huami.watch.hmwatchmanager/databases/ ls origin_db_* sqlite3 origin_db_1234567890 "SELECT AUTHKEY FROM DEVICE;"
- ⚠️ do not unpair before extracting
- use with caution – root required
- modified apps are available on GeekDoing and FreeMyBand
🛌 sleep as android setup
- open the app and follow setup
- settings wheel > services > automation > MQTT
(tcp/ssl)://(MQTT User):(MQTT Pass)@(HA URL):(port)
- topic: must match config
- client id: any unique id
- enable automatic tracking
- sensor: sonar or accelerometer
- wearables > **Xiaomi Mi Band** > test sensor
⚙️ configuration
| option | description |
|---|---|
| name | identifier for this user/device |
| topic | mqtt topic to subscribe to |
| awake duration | seconds of awake events before marking as awake |
| sleep duration | seconds of sleep events before marking as asleep |
| awake states | which states indicate being awake |
| sleep states | which states indicate being asleep |
| mobile app | companion app target for buttons (optional) |
⌚ tested wearables
- xiaomi mi band 7 (via notify for mi band)
- garmin fenix 7x (via garmin alternative)
- amazfit gtr3 pro
made by sudoxnym ⚡
formerly known as saas -sleep as android status the app is capable of working with any mqtt sleep app now