Documentation Index
Fetch the complete documentation index at: https://docs.mirobody.ai/llms.txt
Use this file to discover all available pages before exploring further.
数据映射(Data Mapping)将厂商特定的 JSON 响应转换为 Mirobody 的标准化格式。这确保了所有健康数据源的一致性。
标准格式
所有健康数据都转换为 StandardPulseData 对象:
from mirobody.pulse.theta.platform.indicator import StandardPulseData, StandardIndicator
data = StandardPulseData(
indicator=StandardIndicator.HEART_RATE,
value="72",
start_time="2024-01-15T10:00:00Z",
end_time="2024-01-15T10:00:00Z",
source="garmin"
)
映射模式
基础映射
直接映射简单值:
INDICATOR_MAPPING = {
"daily_steps": StandardIndicator.DAILY_STEPS,
"sleep_seconds": StandardIndicator.DAILY_SLEEP_DURATION,
"resting_heart_rate": StandardIndicator.DAILY_HEART_RATE_RESTING,
}
def format_data(self, raw_data: Dict) -> List[StandardPulseData]:
"""转换厂商数据"""
results = []
for vendor_key, standard_indicator in INDICATOR_MAPPING.items():
if vendor_key in raw_data:
results.append(StandardPulseData(
indicator=standard_indicator,
value=str(raw_data[vendor_key]),
start_time=raw_data["date"],
end_time=raw_data["date"]
))
return results
嵌套数据映射
针对嵌套的 JSON 结构:
def format_sleep_data(self, sleep_response: Dict) -> List[StandardPulseData]:
"""映射嵌套的睡眠数据"""
results = []
sleep_data = sleep_response.get("sleep", {})
# 总睡眠时长
if "total_seconds" in sleep_data:
results.append(StandardPulseData(
indicator=StandardIndicator.DAILY_SLEEP_DURATION,
value=str(sleep_data["total_seconds"] * 1000), # 转换为毫秒
start_time=sleep_data["start_time"],
end_time=sleep_data["end_time"]
))
# 睡眠阶段
stages = sleep_data.get("stages", {})
if "deep_seconds" in stages:
results.append(StandardPulseData(
indicator=StandardIndicator.DAILY_DEEP_SLEEP,
value=str(stages["deep_seconds"] * 1000),
start_time=sleep_data["start_time"],
end_time=sleep_data["end_time"]
))
return results
单位转换
将厂商单位转换为标准单位:
# 标准单位:克 (grams), 毫秒 (milliseconds), 米 (meters)
UNIT_CONVERSIONS = {
"kg_to_grams": lambda x: x * 1000,
"seconds_to_ms": lambda x: x * 1000,
"minutes_to_ms": lambda x: x * 60 * 1000,
}
# 示例
weight_kg = raw_data["weight"]
weight_grams = UNIT_CONVERSIONS["kg_to_grams"](weight_kg)
标准指标
活动指标
| 标准指标 | 单位 | 描述 |
|---|
DAILY_STEPS | steps | 每日总步数 |
DAILY_DISTANCE | meters | 行走距离 |
DAILY_CALORIES_ACTIVE | kcal | 活动消耗热量 |
DAILY_FLOORS_CLIMBED | floors | 爬楼层数 |
ACTIVE_TIME | milliseconds | 活动时长 |
睡眠指标
| 标准指标 | 单位 | 描述 |
|---|
DAILY_SLEEP_DURATION | milliseconds | 总睡眠时长 |
DAILY_DEEP_SLEEP | milliseconds | 深睡时长 |
DAILY_LIGHT_SLEEP | milliseconds | 浅睡时长 |
DAILY_REM_SLEEP | milliseconds | REM 睡眠时长 |
SLEEP_EFFICIENCY | percentage | 睡眠效率 |
心率指标
| 标准指标 | 单位 | 描述 |
|---|
HEART_RATE | bpm | 瞬时心率 |
DAILY_HEART_RATE_RESTING | bpm | 静息心率 |
DAILY_AVG_HEART_RATE | bpm | 每日平均心率 |
HRV | ms | 心率变异性 |
完整参考
如需标准指标的完整列表及详细的映射示例:
完整提供商集成指南
查看完整的数据映射模式、单位转换及指标参考
下一步