OpenClaw Node App 運動感測(Motion)指令完全攻略|活動偵測、計步器、計步資料
OpenClaw Node App 運動感測(Motion)指令完全攻略
這篇文章會介紹 OpenClaw Node App 的「運動感測」功能,讓你能夠偵測手機使用者的活動狀態和計步資料。
>
實驗日期:2026-04-19
實驗設備:Vivo V2514(Android 16)
OpenClaw 版本:2026.4.19.10ver(ThirdParty)
一、什麼是 Motion 功能?
想像一下
當你安裝 OpenClaw Node App 並連線到你的手機後,你可以偵測手機使用者的活動狀態和讀取計步器資料。
實用場景
- 🏃 健康追蹤:記錄每天走了多少步
- 🧘 活動偵測:知道使用者是靜止、走路還是跑步
- 📊 健康數據:統計一段時間的活動量
- 🤖 自動化觸發:根據活動狀態觸發自動化腳本
二、Motion 指令家族
根據官方文件和原始碼分析,Motion 有 2 個指令:
三、指令詳細說明
1. motion.activity - 活動偵測
用途: 偵測目前的身體活動狀態
原理: 使用手機的加速度計(Accelerometer)分析晃動程度來判斷活動狀態
指令格式:
openclaw nodes invoke --node "V2514" --command motion.activity --params '{}'
2. motion.pedometer - 計步器
用途: 讀取計步器資料
原理: 使用手機的步數計感測器(Step Counter Sensor)
指令格式:
openclaw nodes invoke --node "V2514" --command motion.pedometer --params '{}'
四、回傳資料格式
motion.activity 回傳
{
"activities": [
{
"startISO": "2026-04-19T12:22:45.225742Z",
"endISO": "2026-04-19T12:22:47.225742Z",
"confidence": "medium",
"isStationary": true,
"isWalking": false,
"isRunning": false,
"isCycling": false,
"isAutomotive": false,
"isUnknown": false
}
]
}
欄位說明:
motion.pedometer 回傳
{
"startISO": "2026-04-18T16:22:44.431Z",
"endISO": "2026-04-19T12:22:57.805169Z",
"steps": 4641
}
欄位說明:
五、活動偵測原理
加速度計分析
motion.activity 使用加速度計來分析手機的晃動程度:
準確度判斷
六、實際測試結果
測試 1:活動偵測
openclaw nodes invoke --node "V2514" --command motion.activity --params '{}'
結果: ✅ 成功
{
"activities": [
{
"startISO": "2026-04-19T12:22:45.225742Z",
"endISO": "2026-04-19T12:22:47.225742Z",
"confidence": "medium",
"isStationary": true,
"isWalking": false,
"isRunning": false,
"isCycling": false,
"isAutomotive": false,
"isUnknown": false
}
]
}
結論: 使用者目前處於靜止狀態(坐在手機旁邊)
測試 2:計步器
openclaw nodes invoke --node "V2514" --command motion.pedometer --params '{}'
結果: ✅ 成功
{
"startISO": "2026-04-18T16:22:44.431Z",
"endISO": "2026-04-19T12:22:57.805169Z",
"steps": 4641
}
結論: 從上次手機重啟到現在,已經走了 4,641 步
測試 3:歷史查詢(應該錯誤)
openclaw nodes invoke --node "V2514" --command motion.activity --params '{"startISO": "2026-04-01T00:00:00Z"}'
結果: ✅ 正確的錯誤處理
MOTION_UNAVAILABLE: MOTION_RANGE_UNAVAILABLE: historical activity range not supported on Android
七、使用範例
範例 1:檢查目前是否在走路
openclaw nodes invoke --node "V2514" --command motion.activity --params '{}'
檢查回傳的 isWalking 是否為 true。
範例 2:取得今日步數
openclaw nodes invoke --node "V2514" --command motion.pedometer --params '{}'
檢查回傳的 steps 欄位。
範例 3:自動化腳本
假設你想在手機開始走路時,自動發送通知:
# 檢查是否在走路
ACTIVITY=$(openclaw nodes invoke --node "V2514" --command motion.activity --params '{}')
if echo "$ACTIVITY" | grep -q '"isWalking":true'; then
echo "偵測到走路中!"
fi
八、注意事項
1. 需要 ACTIVITY_RECOGNITION 權限
Motion 功能需要 ACTIVITY_RECOGNITION 權限。
開啟方式:
- 在 Android 設定中授權「體能活動」權限
- 通常路徑:設定 → 應用程式 → OpenClaw Node → 權限 → 體能活動
2. Android 的限制
根據原始碼分析,Android 版本的 Motion 功能有一些限制:
3. 步數是累積值
motion.pedometer 回傳的 steps 是從手機上次重啟到現在的累積步數,不是當天的步數。
如果需要計算「今日步數」,需要自己計算差值。
九、與其他功能的比較
Motion vs Photos
Motion vs Notifications
十、常見問題
Q1:為什麼 isCycling 和 isAutomotive 永遠是 false?
A:這是 Android 版本的限制。原始碼中這兩個欄位被寫死為 false,因為 Android 的加速度計無法準確區分騎車和駕駛。
Q2:歷史查詢為什麼不能使用?
A:這是 Android 的安全限制。Android 不允許 App 在沒有特殊權限的情況下存取歷史活動資料。如果需要歷史資料,可以考慮使用 Google Fit API 或其他健康 App 的資料。
Q3:步數為什麼是累積的?
A:這是 Android 計步器感測器的設計。它只提供「從開機到現在的總步數」,不提供「每日步數」。如果需要計算每日步數,可以每分鐘抓取一次,然後計算差值。
Q4:如何計算今日步數?
A:目前沒有直接的方法。你需要:
- 記錄每天第一次查詢時的
steps值 - 下次查詢時,用新的值減去之前的值
- 差值就是這段時間的步數
十一、結語
Motion 功能是 OpenClaw Node App 中專注於健康資料的功能。它讓你能夠:
- 🏃 偵測活動狀態:知道使用者是靜止、走路還是跑步
- 👟 讀取步數資料:取得計步器統計
- 📊 健康追蹤:統計一段時間的活動量
這個功能完全運行在你的本地裝置上,不會將健康資料上傳到任何雲端伺服器,隱私安全有保障。
文章更新:2026-04-19
感謝微風提供測試設備和建議!
留言
張貼留言
歡迎留下您的心靈足跡👍