diff --git a/README.md b/README.md index dd7a710..de1dd63 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -
- -sleepd icon - # sleepd **real-time sleep state tracking for home assistant** @@ -9,7 +5,7 @@ [![HACS Custom](https://img.shields.io/badge/HACS-Custom-00ffff?style=for-the-badge&logo=homeassistant)](https://hacs.xyz/docs/faq/custom_repositories) [![License](https://img.shields.io/badge/license-MIT-ff00ff?style=for-the-badge)](LICENSE) -*processes sleep mqtt messages from android apps and exposes states, events, and controls to home assistant - automate your smart home based on whether you're awake or asleep.* +*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.* --- @@ -55,34 +51,22 @@ ### option 1: hacs (recommended) -1. add this repo to HACS custom repositories: - ``` - https://github.com/sudoxnym/sleepd - ``` +1. add to hacs -2. search for **sleepd** in HACS and install + [![open your hacs](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=sudoxreboot&repository=sleepd&category=integration) -3. restart home assistant +3. search for **sleepd** in HACS and install -4. add integration via UI: +4. restart home assistant + +5. add integration via UI: [![Add Integration](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=saas) ### option 2: manual -copy `custom_components/saas` to your HA `custom_components` directory - -## ⚙️ 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) | +1. copy `custom_components/saas` to your HA `custom_components` directory +2. restart home assistant ## 📡 mqtt setup @@ -97,18 +81,77 @@ sleepd expects json messages with an `event` field: {"event": "rem"} ``` -### sleep as android config +
+ 📲 set up Notify for Mi Band 7 +
    +
  1. pair **Mi Band 7** as you normally would with Mi Fitness
  2. +
  3. obtain auth key for Notify app using ADB
  4. +
-1. open sleep as android → settings → services → automation → MQTT +
+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}'
+  
-2. connection string: - ``` - tcp://user:pass@your-ha-ip:1883 - ``` +

credit: iamfosscad

-3. set topic to match your sleepd config +
    +
  1. uninstall **Mi Fitness**
  2. +
  3. download/install Notify for Mi Band
  4. +
  5. follow prompts, input auth key, select Mi Fitness is not installed
  6. +
  7. enable Sleep As Android in Notify settings
  8. +
+
-4. enable automatic tracking +
+ 🔐 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;"
+  
+ + +
+ +

🛌 sleep as android setup

+
    +
  1. open the app and follow setup
  2. +
  3. settings wheel > services > automation > MQTT
  4. +
+ +
+(tcp/ssl)://(MQTT User):(MQTT Pass)@(HA URL):(port)
+
+ + + +
    +
  1. enable automatic tracking
  2. +
  3. sensor: sonar or accelerometer
  4. +
  5. wearables > **Xiaomi Mi Band** > test sensor
  6. +
+ +## ⚙️ 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 @@ -116,27 +159,12 @@ sleepd expects json messages with an `event` field: - garmin fenix 7x (via garmin alternative) - amazfit gtr3 pro -
-mi band 7 auth key extraction - -```bash -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}' -``` - -
- -## 📜 license - -MIT — do whatever you want with it - ---
made by [sudoxnym](https://sudoxreboot.com) ⚡ -*formerly known as saas* +*formerly known as [saas -sleep as android status](https://github.com/sudoxreboot/saas/tree/main) the app is capable of working with any mqtt sleep app now*