スマートプラグの電力データをPythonで読みだそう(予算1,500円)

(更新

Reading the power measurement data of the smart plug with Python.

最近のスマートプラグ(ネットやスマホから制御できるコンセント)って、電力測定機能が付いているんですね。御存知でしたか!?

7月の半ば頃から、関東では(日本中で?)今年も 35度を超えるような猛暑が続いています。電気代も上がってますので部屋をキンキンに冷やす訳にはいきませんが、特に夜など、エアコン無しでは寝付けない日々が増えています。

私にとって特に気になるのが湿度です。最近の高級エアコンは分かりませんが、私の仕事場のエアコンは、設定温度を高めに設定すると、冷却(熱交換)が頻繁にオフになってしまうのが困りものです。電力消費を見ていると、何段階にも電力が変わるので、ある程度のインバータ制御はできているようですが、ときどき、熱交換が完全に停まって、送風運転になってしまいます。そうなると、室内機の冷却フィンに着いた水滴が放散を始め、室内がみるみるジメジメとした感じになり、寝苦しくなってしまいます。

東日本震災の頃に買った電力計

東日本震災当時、さまざまな家電製品の消費電力を確認しようと、以下のような電力計を購入して使ってきました。海外製品の OEM らしく、eBay や、その他の世界中のウェブサイトで、以前はよく見かけた製品です。

これを使って、エアコンの動作モードや設定温度を変えながら、どうやったら熱交換がオフになる頻度を下げながら、同時に消費電力を最小限にすることができるか、しばらく実験していました。(私にとっては、室温が低くなることより、ジメジメしないことが大事なのです。)

しかし、設定温度だけが問題なのではなく、外気温や現在の室内の温度などによって、うまい設定温度は異なるらしいことが分かってきました。(当たり前か)

消費電力量をリアルタイムにモニタしながら、赤外線リモコン制御などで、設定温度をうまく調整することはできないかなあ、とぼんやり考えたりしていました。

ところで、(下のほうで説明する)Tuya プロトコルで制御できる赤外線リモコン規格、製品があるんですね。機会があったら試してみたいです。

ちなみに家中の電力モニタは…

ところで、以前にこんな記事を書かせて頂いたことがあります。

タイトルにあるように、自宅に設置されている電力のスマートメーターから、Wi-SUN という規格の無線で、電力計のデータをリアルタイムに読み出すという話です。この電力グラフを見ていると、エアコンの消費電力の変化を見ることはできるのですが、冷蔵庫や洗濯機の電力により影響を受けるので、エアコンの消費電力だけを正確に読み取るのは難しいのでした。

ネットに繋がる電力計ってないの?

まずは、国内の情報を探してみたところ、こんな製品を見つけました。

ふーん、最近はそういう製品があるんだ、と感心したのですが、以下の点を残念に感じました。

  1. 価格が高め
    Amazon.co.jp で 7,000円程度の値段設定です。趣味(好奇心?)で購入するには、ちとお高く感じます。ちなみに、後継機の RS-WFWATTCH2 はもう少し安価ですが、Wi-Fi 機能が除かれ、Bluetooth LE 専用となっているようです。
  2. (基本的に)専用アプリからでないとデータを読み出せない
    こちらは重大です。国産の多くの製品に言えることですが、ユーザーが DIY で工夫する余地が残されていない、クローズドな製品が多いです。正確に言うと、この製品に関しては、DIY 愛好家の方が独自に分析なさっていて、Bluetooth LE を使うと GATT として値を読み出すことができるらしいですが、できたら Wi-Fi 経由で、それも MQTT などで値を読み出せたらいいのになあ、と思うのは私だけはないはずです。

Tuya 対応の電力計があった!

もう少し探したところ、いま流行りのスマートプラグで、電力測定機能付きのものが売られていることが分かりました。さらに、以前に御紹介した Tuya のスマートプラグの規格で、プラグ(コンセント)の電圧、電流、電力(有効電力)を読み出す機能が定義されていることが分かりました。

そして、これもその時に御紹介したように、TinyTuya という Python ライブラリ(上記の Q&A は、TinyTuya のものです)で、そのデータを Python で読み出せることができるのです。ちょっと感激しました。

早速、国内で入手できそうな対応製品(電力測定機能付きスマートプラグ)を探してみました。

Tuya じゃない製品

ぱっと探すと最初に見つかるのが、次のようなメーカーの製品群です。

  • SwitchBot
  • SONOFF

残念ながら、これらのメーカーの製品は Tuya とは互換性のないプロトコルとアプリを使っているので、TinyTuya からは制御/モニタができません。(できないはず)

Tuya な製品

Tuya というのは、自身でスマートプラグなどの製品を販売している会社では(おそらく)なく、スマートプラグの設計プラットフォーム、インフラなどを、製品メーカーにライセンスしている企業のようです。そして、エンドユーザー向けのスマホアプリを、Smart Life という名称で無償提供しています。

現在 Amzon.co.jp を探すと、Tuya 対応の電力測定付きスマートプラグとしては、以下のメーカーが候補に挙がります。

  • Gosund

製品名としては、WP6 という型番のものが Tuya での動作を確認できました。売価は、1,200〜1,400円程度です(2023年7月現在)。

こちらの拙記事の「今までに購入した Tuya 対応機器」で触れましたが、スマートプラグ関連製品のメーカーは、市場競争が激しいようで、同じメーカーの製品を 2度購入できた試しがありません。このメーカーなら大丈夫、と言い切ることができないので、皆様がご購入されるときはネットのレビューなどをよく読み、Tuya 対応であることを確認なさると良いでしょう。

Tuya 対応であることの確認のポイントとしては、レビューの中に「Tuya(Smart Life)アプリで使用できた」というようなことが書かれていれば、おそらく大丈夫です。

それらレビューにもよく書かれているように、メーカー独自のアプリやプロトコルを使用するものは、スマホの中に似たようなスマートプラグアプリをたくさんインストールするはめになるだけでなく、そのメーカーが市場から退場してしまうと、アプリのアップデートがなくなったり、入手できなくなったり、最悪の場合はサービスそのものが利用できなくなることで、スマートプラグが「ただのプラグ」になってしまう可能性すらあります。そのため、そのような製品は、私としてはあまりお勧めできません。

Tuya という会社もいつまで市場に残れるか分かりませんが、現在のところ、もっとも信頼できそうな企業なので、私としてはお勧めです。

Gosund WP6 を購入してみた

まずは開封します。以前は PSE 認証の取れていない並行輸入品も見かけましたが、最近は PSE 認証付きのものが普通になりました。

最初、Smart Life によるペアリングに苦労しましたが、手動設定をしたところ無事にペアリングできました。(ほっ)

製品としての全般的な印象ですが、アウトレット側(電化製品を差すほう)のコンセントの嵌合が、ちといまいちです。(プラグが嵌合してからの遊びが少なく、ちょっと不安になる。)それ以外の印象は、悪くありません。

Python TinyTuya でデータを読み出してみる

TinyTuya の紹介については、以前の拙記事を御参考ください。

以下のようなコードを書いて、さっそくデータを読み出してみます。

import tinytuya

# Connect to Device
d = tinytuya.OutletDevice(
    dev_id='xxxxxxxx',
    address='Auto',
    local_key='xxxxxxxx', 
    version=3.3)

# Get Status
data = d.status() 
print('set_status() result %r' % data)

dev_id はデバイス ID、local_key は、認証用のキーです。詳しくは上述の記事を御参考ください。

実行すると、次のように表示されました。

set_status() result {'devId': 'xxxxxxxx', 'dps': {'1': True, '9': 0, '18': 142, '19': 81,
'20': 998, '21': 1, '22': 746, '23': 31250, '24': 21052, '25': 990}}

この中で、dps の 18, 19, 20 がそれぞれ

  • 18: 消費電流(単位: 1mA)
  • 19: 電力(有効電力)(単位: 0.1W)
  • 20: 電圧(単位: 0.1V)

となります。つまり、142mA、8.1W、99.8V という訳です。

私は、前述の「ワットメーター」を長いこと使ってきたので、最初、どうして皮相電力(VA)のデータがないんだろう、と愚かにも思ったのですが、電圧と電流を乗じれば、皮相電力が求まる訳ですね。← 私は本当に電気系卒なのだろうか?

ワットメーターでは、利用者がいちいち計算しなくて良いように、皮相電力の表示モードがあった訳ですね。コンピュータ相手のデータであれば、相手が簡単に計算できるので、皮相電力のデータは必要ない訳です。

今後の予定

今後は、上記のデータを定期的に読み出して、Elasticsearch のような時系列データベースに保存するようにし、Grafana 等で視覚することを考えてみたいと思います。

さらに余力があれば、消費電力を読み出しながら、赤外線リモコン制御でエアコンの設定温度を変化させるようなツールを書いてみたいと思っています。さてさて。秋の彼岸が来るまでに、完成させられるのでしょうか!?(秋になったらもう要らないでしょう?)

今日はここまで。

後記(7月28日): 無事に Grafana で表示できました!

Elasticsearch と Grafana を使って、視覚化できるようになりました。

おまけ

先日、家族があまりの暑さに熱中症気味となり、慌てて部屋のエアコンを点けようとしたのですが、家中どこを探してもリモコンが見つかりませんでした(半日ほど家捜しをしてました。)。Amazon.co.jp で純正の交換品を見つけたのですが、なんと 6,000円近くもします。

数日後、「テレビと同じように、各社対応の簡単リモコンのようなものがあるだろう」と思いつき探したところ、国内メーカーの製品が 2,000円弱で売られていることが分かりました。しかし、対応機種が明確に示されておらず、購入しても動かなかったら阿呆臭いなあと思いつつ、Amazon.co.jp の商品ページをスクロールしていったところ、「この商品を見た後にお客様が購入した商品」という欄に、なんと送料込みで 400円以下というリモコン製品を見つけました。なんと、世界中(?)の 1000機種のエアコンに対応しているのだそうです。(やるなあ…)

400円だったら動かなくても諦めが付きますし、その時は分解したり解析したりして、私の仕事ブログ(ここのこと)の記事ネタにでもすればいいや、と思い、購入してみました。無事に家族のエアコンは動くようになり、純正リモコンが見つかるまで(一体いつ?)、家族が熱中症にならずに済みそうです。

お問い合わせはお気軽に!

お問い合わせを頂いた後、継続して営業活動をしたり、ニュースレター等をお送りしたりすることはございません。
御返答は 24時間以内(営業時間中)とさせて頂いております。必ず返信致しますが、時々アドレス誤りと思われる返信エラーがございます。返答が届かない場合、大変お手数ではございますが別のメールアドレスで督促頂けますと幸いです。