外观
topic 消息订阅
约 404 字大约 1 分钟
2026-07-15
topic 用于订阅系统 uORB 主题。它适合传感器与系统事件流;表盘常规时间、天气和健康值优先使用 dataman。
local topic = require("topic")subscribe
topic.subscribe(name, callback) -> subscription| 参数 | 类型 | 说明 |
|---|---|---|
name | string | uORB 主题名 |
callback | function | 接收主题数据 |
返回值是 miwear.topic userdata。
local sub = topic.subscribe("sensor_temp", function(data)
print(data.timestamp, data.temperature)
end)subscription 方法
| 方法 | 说明 |
|---|---|
sub:unsubscribe() | 取消订阅;重复取消会报错 |
sub:frequency(...) | 查询或设置频率;参数格式随主题与系统版本变化 |
离开页面前应主动取消:
function pageOnPause()
if sub then
sub:unsubscribe()
sub = nil
end
end主题名
| 类别 | 主题 |
|---|---|
| 传感器 | sensor_accel、sensor_accel_uncal、sensor_gyro、sensor_gyro_uncal、sensor_mag、sensor_mag_uncal、sensor_orientation、sensor_baro、sensor_temp、sensor_humi、sensor_light、sensor_prox、sensor_hrate、sensor_hinge_angle、sensor_wrist_tilt、sensor_ots |
| GNSS | sensor_gnss、sensor_gnss_clock、sensor_gnss_measurement、sensor_gnss_satellite、sensor_gnss_geofence_event |
| 算法 | algo_manager、algo_sleep、algo_off_body、algo_wrist_tilt |
| 时间与数据事件 | event_basic_timer、event_time、event_new_day、event_data_sync |
| 系统状态 | screen_status、battery_state、bt_stack_state、activity_manager、miwear_event、system_event、cpevent |
| 业务数据 | topic_data_vigor、topic_data_hr、phone_sport_data_v2a、phone_sport_data_v2d、data_triple_loop、app_data_update |
| 其他 | sport_notify、daily_remind、deco_report |
主题存在不代表当前设备拥有对应传感器。订阅未知主题会失败;没有宿主事件循环时会出现 null uv loop。
数据结构探测
payload 可能是 table、userdata 或标量。先做安全枚举:
local function dump(value)
print("payload type", type(value))
if type(value) == "table" then
for k, v in pairs(value) do print(k, v) end
end
end
local sub = topic.subscribe("battery_state", dump)不要把某一主题的字段布局套用到另一机型;元数据大小不匹配时宿主会拒绝派发。
机型可用性
| Xiaomi Smart Band 10 Pro | Xiaomi Watch S4 41mm |
|---|---|
| ✅ | ✅ |