Experiment record
SwitchBot Plug Mini OpenAPIのstale値は段階別報告しきい値で説明できる
独立した複数経路のログとメーカー開発部門の回答により、Plug MiniのOpenAPIで長時間同値が返る現象は負荷帯別の変化しきい値による段階別報告仕様で説明できることが確認された。
短い結論
今回調査したSwitchBot Plug Mini (JP)では、OpenAPI v1.1を1分または5分ごとに取得しても、その周期でデバイスから新しい電気量statusが報告されるとは限りません。SwitchBotサポートが開発部門へ確認した結果、Plug Miniには負荷変化量に応じて報告する段階別(レイヤー)報告メカニズムがあり、今回の約110W負荷では30Wの変化がないと新しい報告が行われないとの回答が得られました。
したがって、API取得時刻をそのまま「デバイス値の更新時刻」と扱うべきではありません。
目的
voltage、electricCurrent、weight、electricityOfDayが、OpenAPIを繰り返し取得しているにもかかわらず長時間完全に同じ値を返す理由を調べ、クライアント側不具合、機器・クラウド側異常、意図された報告仕様のいずれかを切り分けることを目的としました。
観測事実
- 5秒周期ログでは約12分32秒で151点を取得しました。
- 1秒周期ログでは約3分43秒で223点を取得しました。
- 短時間では
weightとelectricCurrentは主に2〜3秒程度で変化し、1秒ポーリングでは同値が複数回返ることがありました。 - 長時間ログでは、
voltage、electricCurrent、weight、electricityOfDayが長時間完全一致したままとなり、その後まとめて新しい値へジャンプする区間がありました。 - 代表例のstale区間は約20分間でした。
- Python 1分ロガーと独立したGoogle Apps Script 5分ログが、同一時間帯に同じstale値を返しました。
- stale中に対象Plug MiniのSwitchBotアプリ詳細画面を開くと、その後のOpenAPI値が最新化する現象を複数回確認しました。
- この更新はBluetooth OFFでも、Wi-Fi OFFでスマートフォンを携帯回線のみにした条件でも確認しました。
- Plug Miniをリセットしてもstale挙動は解消しませんでした。
メーカーによる検証
SwitchBotサポートから、開発部門の調査結果として次の段階別報告しきい値が回答されました。
| 負荷帯 | 報告に必要な変化量 |
|---|---|
| 10 W以内 | 4 W超 |
| 100 W以内 | 10 W超 |
| 300 W以内 | 30 W超 |
| 500 W以内 | 50 W超 |
| 700 W以内 | 70 W超 |
| 1000 W以内 | 100 W超 |
| 1500 W以内 | 100 W超 |
調査時の負荷は約110Wであったため、30Wのしきい値が適用されるとの説明でした。また、調査対象デバイスについては、100〜300W帯のしきい値をバックエンド指令により30Wから10Wへ変更可能との回答も得られました。
このため、以前の「change-of-value型報告ではないか」という仮説は、少なくとも今回調査したケースにおける報告メカニズムの存在としきい値挙動について、HYPOTHESISからVERIFIEDへ更新します。
Evidence State
VERIFIED
- 調査対象の挙動には負荷帯別の段階別報告メカニズムが存在します。
- 約110W負荷では30Wの報告しきい値が適用されました。
- 上記のしきい値表はSwitchBotサポートが開発部門調査結果として回答したものです。
- 調査対象デバイスの100〜300W帯しきい値は10Wへ変更可能と説明されました。
OBSERVED
- 短周期ポーリングでも同値が繰り返し返ること。
- 複数status fieldが同時に長時間staleとなること。
- PythonとGoogle Apps Scriptという独立経路で同じstale値を取得したこと。
- アプリ詳細画面表示後にOpenAPI値が更新する現象。
- BLE無効および携帯回線のみの条件でもその更新を観測したこと。
INFERRED
weightは瞬時有効電力[W]と解釈するのが最も整合的です。旧ログでは223点についてweight / (voltage × current)を計算し、平均約0.893、中央値約0.945となりました。交流負荷として物理的に妥当ですが、メーカー仕様としての直接確認が保存されていないため、VERIFIEDではなくINFERREDとして扱います。
UNVERIFIED / UNKNOWN
- 電力変化がしきい値を超えて報告される際、
voltage、electricCurrent、electricityOfDayも必ず同時に更新されるか。 - SwitchBotアプリの詳細画面表示が特定の強制同期コマンドを送っているか。また、そのプロトコルやメッセージ経路は何か。
- 同じしきい値がすべてのPlug Mini (JP)ハードウェア・ファームウェアリビジョンで完全に同一か。
データ収集システムへの実務上の意味
1分周期でAPIを取得しているという事実は、「Plug Miniが1分ごとに新しい測定値を報告した」ことを意味しません。長期時系列収集では、API取得時刻とデバイス状態のfreshnessを別概念として扱い、同一スナップショットの連続をstaleとして検出できる設計が必要です。
再現用リソース
購入・再現用の補助資料として、SwitchBot Plug Mini OpenAPI実験 — 再現用BOMを参照できます。
このBOMは商用レイヤーの補助資料であり、このExperimentのCanonical Evidenceには含まれません。BOMに記載する在庫状況、後継Listing、アフィリエイトリンクによって、本ページのEvidence State、解析、結論が変更されることはありません。
ProvenanceとPrivacy
本ページは2026-08-12の標準制定前実験ログを、2026-08-19に得られたメーカー回答を含めて正式Experimentへバックフィルしたものです。人間はAPIログ取得、機器リセット、アプリ操作、接続条件変更、メーカー問い合わせを実施しました。AIは実験再構成、Evidence State分類、Privacy Review、Canonical Record作成を担当しました。
メーカーとのやり取りに含まれていたデバイス識別子、MACアドレス、購入・注文情報、メールアドレス、認証情報、家庭を識別し得る情報は公開記録から除外しています。
バックフィル時点で元のロガー生ファイルはRepository内に確認できなかったため、raw_data_available: falseとしています。旧Markdownに代表値が残っていることをRaw Dataの存在と解釈してはいけません。
Canonical Record
Canonical Structured Experiment RecordはRepository内の次のファイルです。
experiments/AIEL-2026-0001/experiment.json