Experiment record
SwitchBot Plug Mini (JP):OpenAPIの電力データを実測で解釈する
SwitchBot Plug Mini (JP) のOpenAPIフィールド、更新周期、`weight` の実質的な意味を短時間の実測から検証した。
結論
SwitchBot Plug Mini (JP) を冷蔵庫・冷凍庫負荷に接続し、SwitchBot OpenAPI v1.1 から状態値を取得して挙動を確認した。
今回の実測から、各フィールドは実用上次のように解釈するのが最も整合的だった。
voltage -> 電圧 [V]
electricCurrent -> 電流 [mA]
weight -> 瞬時有効電力 [W] と推定
electricityOfDay -> 当日の通電時間 [min]
特に weight は数秒単位で値が変化し、日積算量とは考えにくい挙動だった。また weight / (voltage × current) を計算すると交流負荷として物理的に妥当な力率相当値が得られた。このため、weight を瞬時有効電力として扱う解釈が最も妥当と判断した。
実験条件
- 機器: SwitchBot Plug Mini (JP)
- API: SwitchBot OpenAPI v1.1
- 負荷: 冷蔵庫・冷凍庫
- 認証: Token + Secret を用いた HMAC-SHA256。認証情報はローカルでのみ使用
- 公開時のプライバシー境界: Token、Secret、正確な deviceId、家庭内を特定し得る名称・情報は非公開
デバイス状態取得APIから、power、voltage、weight、electricityOfDay、electricCurrent などを確認した。
5秒周期ロギング
最初の測定では、約12分32秒にわたり151点を取得した。取得周期は約5秒。
観測範囲の一例:
weight: 約116.2〜129.4 WelectricCurrent: 約1630〜1747 mAvoltage: 約102〜103 V
特に重要だったのは electricityOfDay の挙動で、ほぼ60秒ごとに1ずつ増加した。
この結果は、electricityOfDay が当日の通電時間または使用時間を分単位で表すという解釈と一致する。
1秒周期ロギング
次に、約3分43秒にわたり223点を1秒周期で取得した。
API自体は1秒ごとに問い合わせできたが、毎秒新しい測定値が返るわけではなかった。
観測された更新挙動:
weight: 主に2〜3秒程度で変化electricCurrent: 主に2〜3秒程度で変化weightとelectricCurrent: 変化タイミングはほぼ同期voltage: 0.1 V単位への丸めの影響があり更新周期の厳密判定は難しいelectricityOfDay: 引き続き約60秒ごとに増加
したがって、1秒ポーリングでは同じ値が複数回連続して返ることが多い。長時間ロギング用途では、API応答タイミング自体を研究するのでなければ、2〜3秒程度の周期の方が効率的と考えられる。
weight の意味
公式API説明の weight は、日単位の消費量を示すようにも読める一方で単位が W とされており、物理量として解釈しにくい。
日積算のエネルギー量であれば、通常は Wh や kWh といったエネルギー単位になる。
今回の実測では、weight は例えば次のように短時間で変化した。
11.0 W -> 126.5 W -> 82.9 W -> 94.1 W
この挙動は日積算値では説明しにくく、瞬時電力として解釈すると自然である。
力率相当値による検証
weight が有効電力として振る舞うかを確認するため、次の値を計算した。
PF_like = weight[W] / (voltage[V] * current[A])
1秒周期ログ223点に対する統計:
- 平均: 約0.893
- 中央値: 約0.945
- 最小: 約0.375
- 最大: 約1.004
負荷状態ごとの傾向も分かれた。
- 低〜中負荷: 概ね0.94〜0.99
- 高負荷: 概ね0.60〜0.70
一例:
V = 103.4 V
I = 1.291 A
weight = 87.9 W
皮相電力 ~= 103.4 * 1.291 = 133.5 VA
PF_like ~= 87.9 / 133.5 = 0.658
冷蔵庫・冷凍庫のようにモーターや電力変換回路を含む交流負荷として、この値は十分あり得る範囲である。
この結果は weight が有効電力 [W] であるという解釈を強く支持する。
重要な制限
ここで計算した PF_like は、校正済み電力計で測定した厳密な力率ではない。
API上の voltage、electricCurrent、weight が完全に同一時刻の同期測定値である保証はなく、丸め誤差や内部更新タイミングの差も存在し得る。
実際、わずかに1.0を超える値も観測されたため、これらは真の力率ではなく「力率相当値」として扱うべきである。
今回明確になったこと
- Plug Mini (JP) から OpenAPI v1.1 経由で電圧・電流・電力関連値を取得できる。
voltageは V 単位の電圧と解釈できる。electricCurrentは mA 単位の電流と解釈すると実測と整合する。electricityOfDayは当日の通電時間 [min] と解釈でき、約60秒ごとに1増加する。weightは今回観測したAPI挙動では日積算量ではない。weightは瞬時有効電力 [W] と解釈するのが最も整合的である。weightとelectricCurrentは主に2〜3秒程度の周期で更新される。- 1秒ポーリングでは同じ測定値が繰り返し返ることが多い。
未確定事項
- Plug Mini内部の電気量サンプリング周期とAPI側のキャッシュ更新周期が同一かどうか。
voltage、electricCurrent、weightが完全に同期した1つの測定フレームから生成されているか。- 校正済み基準電力計との比較で
weightを有効電力として定量的に検証できるか。 - 長時間ログから、コンプレッサー停止・通常運転・高負荷運転などの状態分類が可能か。
再現性について
公開記事では、認証情報、正確な deviceId、家庭内の生ログを意図的に公開していない。
同様の実験は、正規に認証された SwitchBot Plug Mini (JP)、OpenAPI v1.1 の device status endpoint、および timestamp・voltage・current・weight・electricityOfDay を一定周期でCSV保存するロガーがあれば再現できる。