add sleep_stage

This commit is contained in:
Oliver 2025-12-08 12:07:15 +00:00
parent f30a3bdb89
commit 2f47b68778

29
main.py
View File

@ -287,6 +287,33 @@ class GadgetbridgeMQTT:
except Exception as e:
logger.debug(f"Sleep query failed: {e}")
# Sleep Stage Data (current stage)
try:
cursor.execute(
"""
SELECT STAGE, TIMESTAMP
FROM XIAOMI_SLEEP_STAGE_SAMPLE
WHERE DEVICE_ID = ?
ORDER BY TIMESTAMP DESC
LIMIT 1
""",
(self.device_id,)
)
row = cursor.fetchone()
if row:
stage_code, stage_timestamp = row
stage_names = {
0: "awake", 1: "light_sleep", 2: "deep_sleep",
3: "rem_sleep", 4: "deep_sleep_v2", 5: "light_sleep_v2"
}
data["sleep_stage"] = stage_names.get(stage_code, f"unknown_{stage_code}")
data["sleep_stage_code"] = stage_code
except Exception as e:
logger.debug(f"Sleep stage query failed: {e}")
# Weight (not device-specific, from scale)
try:
cursor.execute("SELECT WEIGHT_KG FROM MI_SCALE_WEIGHT_SAMPLE ORDER BY TIMESTAMP DESC LIMIT 1")
@ -325,6 +352,8 @@ class GadgetbridgeMQTT:
("calories", "Calories", "kcal", "mdi:fire", "total_increasing", None),
("sleep_duration", "Sleep Duration", "h", "mdi:sleep", "measurement", None),
("is_awake", "Is Awake", None, "mdi:power-sleep", None, None),
("sleep_stage", "Sleep Stage", None, "mdi:sleep-cycle", "measurement", None),
("sleep_stage_code", "Sleep Stage Code", None, "mdi:numeric", "measurement", None),
("weight", "Weight", "kg", "mdi:scale-bathroom", "measurement", None),
("server_time", "Last Update", None, "mdi:clock-outline", None, "timestamp"),
]