1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptで電力測定してみた

Posted at

電力測定をする際に電流量測定のモジュールを使ってみようかと思ったところスイッチボットシリーズのスマートプラグで消費電力などを計測できることを知ったので試してみました。

obnizを使うことでJavaScriptで電力測定ができます。

SwitchBotプラグミニ

スマートホーム的な何かをやれるコンセントです。

スクリーンショット 2024-04-22 18.25.15.png
https://amzn.to/3UpTzZC

結構安い。スマホからオンオフできて便利。

obnizのパーツライブラリにもある

obnizからこのプラグにアクセスできるとのことで、BLEを使って情報にアクセスできる模様です。

サンプル動かしただけでエラーなくいけました。

コピペで動くコード

ライブラリのインストールから。ライブラリ(obniz JS v3.30.1)で試しています。

$ npm init -y
$ npm i obniz

IDだけ書き換え、以下のコードでファイルを作成して実行します。

const Obniz = require("obniz");

const obniz = new Obniz("1234-5678"); //自身のIDに書き換え

obniz.onconnect = async function () {
    // Javascript
    const Switchbot_PlugMini = Obniz.getPartsClass("Switchbot_PlugMini");
    await obniz.ble.initWait();

    obniz.ble.scan.onfind = async (peripheral) => {
        if (Switchbot_PlugMini.isDevice(peripheral)) {
            console.log(Switchbot_PlugMini.getData(peripheral));
        }
    };
    await obniz.ble.scan.startWait(null, {duplicate: true, duration: null});
}

実行

$ node app.js

実行結果は以下のような感じです。

スクリーンショット 2024-04-22 18.28.44.png

obnizのドキュメントを見ると以下のようなパラメータが取れそうでした。sequenceNumberalreadsySyncTimeがイマイチなんの値か現状分かってないです。調査不足。

  • sequenceNumber: なんだろう...
  • powerState: プラグがオンかオフか
  • hasDelay: 遅延実行がオンになっているか
    • SwitchBotの機能でそういうのがあるぽい
  • hasTimer: タイマーがセットされているか
    • SwitchBotの機能でそういうのがあるぽい
  • alreadsySyncTime: なんだろう...
  • wifiRssi: Wi-Fiの電波強度
  • overload: オーバーロード、高負荷状態
  • power: 消費電力

ちゃんと取れてるかの確認

アプリでの表示とNode.jsのコンソール上での比較をすると

スクリーンショット 2024-04-22 18.40.13.png

スクリーンショット 2024-04-22 18.38.54.png

同じタイミングのスクショですが、アプリ上の電力って値が12.5WでNode.jsのターミナルでのpowerの値が12.5ということで一致していますね。

コンセントの(デバイス)接続数でちゃんと数字変化

↑はプラグの先にMacBookとiPhoneを充電している状態で12.5Wという表示でした。

  • MacBookだけだと6.8W

スクリーンショット 2024-04-22 18.46.19.png

  • 何も接続していないと0W

スクリーンショット 2024-04-22 18.47.32.png

純正のAppleのアダプターを使っているからかもしれないですがちゃんと0Wになるのすごいですね。

現状obnizからOn/OFF制御はできないっぽい

SwitchBot側の(Bluetoothの)APIが開いてない可能性もありますが、現状obniz側からは電力などの情報取得しかできないみたいです。

getData()のメソッドだけで何ができるか検討してみたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?