TP-Link の Tapo P105 に Zephyrus の 250W ACアダプタをつないで,Zephyrus のバッテリー残量を監視して自動的に充電開始/終了するスクリプトを書いた.タスクトレイに常駐する C#アプリを作るつもりでいたのだけど,もうこれでいいか… .

Pocket

 

TP-Link の Tapo P105 に Zephyrus の 250W ACアダプタをつないで,Zephyrus のバッテリー残量を監視して自動的に充電開始/終了するスクリプトを書いた.

普段は Thunderbolt 経由で給電しているのだけど,Zephyrus は ThinkPad と違って消費電力が大きいようで,GPUを特には使わない通常の作業をしているだけでじわじわじわじわとバッテリー残量が減っていく.
130W ACアダプタ Thunderbolt 給電だと,給電が消費電力に追いついていない感じ.
半日以上続けて使う場合は,付属の 250W ACアダプタを接続するのは必須のようだ.
かといって,250W ACアダプタにいつも通電させておくのはなんだか電気の無駄使いをしているような気もする… .

 

ということで,スクリプトを書いた.

スクリプトは,

 充電をしていないとき:
  バッテリー残量が 20% 以下になったら Tapo P105 を On にして充電開始
 充電をしているとき:
  バッテリー残量が 98% 以上になったら Tapo P105 を Off にして充電終了

 バッテリー残量の監視間隔は,15分

というふうにした.開始/終了のバッテリー残量値や,監視間隔はあとで調整するかもしれない.

 

バッテリー残量を調べる方法はいくつかあるけれど,なるべく汎用性のある方法にしたかったので,

powercfg /batteryreport /xml /output battery_report.xml > /dev/null

として,battery_report.xml を解析する方法にした.

簡単にできるつもりだったのだけど,名前空間あり XML の Python での解析に手間取って 3時間くらいかかってしまった.

 

「ElementTreeやlxmlで名前空間を含むXMLの要素を取得する – orangain flavor」
https://orangain.hatenablog.com/entry/namespaces-in-xpath

「Pythonで名前空間付きのXMLを操作する(ElementTree) – Qiita」
https://qiita.com/yuki2006/items/d84b37f07b70d02c5504

 

たとえ名前空間が 1つだけしかない XML でも,要素ひとつひとつに名前空間をベタに書かないとだめっぽい.むーん.
たとえば,3階層下の要素にアクセスしたいときは,名前空間を 3回も書くことになる.むーん.
名前空間をラベル化(ハッシュ化)して短く書くことはできるけれど,メンテナンス性というか見かけ上はあんまり変わらないなぁ.

まぁ,名前空間ってそういうものではあるのだけどさー,「いま処理対象にしている名前空間」を動的に設定できて,切り替えて使えるようになっているといいなぁ,と思う.
私がわからなかっただけで,ホントはできるんじゃないかなぁ… .

 

とりあえず,スクリプトはできた.
意図どおりに動いているような感じ.
スクリプトを動作させ続けて様子を観察すると,

充電していない時間: 5~10時間
充電している時間: 1時間強

だった.
バッテリーの劣化との兼ね合いもあるけれど,大部分の時間は充電をしていなくて,充電時間は 1時間強で済んでいるのだから,やっぱり,250W ACアダプタにいつも通電させておくのは電気の無駄使いのような気がする.

ということで,Tapo P105 による 250W ACアダプタ制御は意義がありそう.ばんざい.


このスクリプトは動作確認をするためだけのもので,本来はタスクトレイに常駐する C#アプリを作るつもりでいたのだけど,もうこれでいいか… .
なんか,くたびれてしまった… .

Zephyrus_Tapo_P105_Charge.png


 

 

 

==

 

2022年9月16日
TP-Link のスマートプラグ「Tapo P105」も,初期設定さえ済ませておけば,外部ネットワークのサービスを使わずにローカルネットワーク用の制御ツールで On/Off 制御できました.
https://noike.info/wp/knoike/2022/09/16/84744/

 

2022年7月27日
普段使いのPCが唐突にだめになってしまったので,急遽,新しくPCを購入しました.新しく買った PC は ASUS の ROG Zephyrus M16 で,RTX3070 が載った機種にしました.
https://noike.info/wp/knoike/2022/07/27/84707/

 

 

Pocket

TP-Link のスマートプラグ「Tapo P105」も,初期設定さえ済ませておけば,外部ネットワークのサービスを使わずにローカルネットワーク用の制御ツールで On/Off 制御できました.

Pocket

 


 

 

TP-Link のスマートプラグ「Tapo P105」を購入しました.
初期設定さえ済ませておけば,これも HS105 と同様に,外部ネットワークのサービスを使わずにローカルネットワーク用の制御ツールで On/Off 制御できました.
ただ,制御ツールが実行時に外部ネットワークサービス用 TP-Link ID のアカウントとパスワードを必要としているので,もしかしたら,外部ネットワーク接続は完全には不要になっていないのかもしれません.このあたりは,私は調べていません.

初期設定を行うときに,HS105用の Kesa アプリと違い,Tapo P105用の Tapo アプリは TP-Link ID でのログインが必須でしたので,購入直後のまっさらな状態から外部ネットワーク接続をまったくせずに On/Off 制御するのは無理のように思いました.
おそらくは,セキュリティ対策の一環なのだろうと想像しています.

 

HS105 のときと違い,Tapo P105 をローカルネットワーク用の制御ツールで On/Off 制御できるようになるまで少し手こずったので,未来の自分のためにメモを書き置いておきます.

肝は,

o TP-Link ID のパスワードの長さを 8文字以内にしないと制御できない

o 本家の制御ツール PyP100 だと動作不安定なので,それを fork して改良された PyP100 を使う

です.これらさえ押さえておけば,ここから下の文章は読む必要はありません.ここから下の文章は,試行錯誤のメモ,事の経緯,です.

 

それと,PyP100 を利用した Tapo P105 の現在の On/Off 状態の取得は,

stat = p105.getDeviceInfo()
on_off = json.loads(stat)['result']['device_on']

とし,on_off が True なら On,False なら Off という方法で行えるようです.
これは PyP100 のドキュメントに書かれていないのですが,たぶん間違っていないでしょう.
実際に実行して確認した範囲では,正しく取得できました.

 

「Error code 1501: Passwords must not exceed 8 characters · Issue #4 · fishbigger/TapoP100」
https://github.com/fishbigger/TapoP100/issues/4

 

本家の制御ツール PyP100:
「fishbigger/TapoP100: A module for controlling the TP-Link Tapo P100 Plugs」
https://github.com/fishbigger/TapoP100

 

fork して改良された PyP100:
「2729-gumi/TapoP100: A module for controlling the TP-Link Tapo P100 Plugs」
https://github.com/2729-gumi/TapoP100

 

 

 

0.
自分のところで動作実績のある HS105 を購入しようと思っていたのですが,この製品はもう「生産完了」状態なので購入できません.なんてこったー.
TP-Link の Webサイトを見ると Tapo P105 しか載っていないので,以前は購入を避けたこれを買うしかありません.なんてこったー.
探せばまだ HS105 を販売しているところはありますが,生産完了品を探し求めて使うよりは,現行製品を試行錯誤して使えるようになったほうがよさそうです.

なお,負荷耐圧は,

HS105 は 14A
https://www.tp-link.com/jp/home-networking/smart-plug/hs105/#specifications

Tapo P105 は 10A
https://www.tp-link.com/jp/home-networking/smart-plug/tapo-p105/#specifications

でした.4A も小さくなっているけれど,大丈夫かなぁ… .まぁ,大丈夫でしょう.

 

1.
TP-Link が提供している HS105 用のアプリ「Kesa」では Tapo P105 は認識されませんでした.
アプリからデバイスを探しに行っても,「何も見つからない」という結果でした.

 

2.
初期設定をしないと何もできないので,TP-Link が提供している Tapo P105 用のアプリ「Tapo」を使って初期設定をします.私は Android 用のアプリを使いました.

Kesa と違って,TP-Link ID によるログイン(または TP-Link ID 作成)はスキップできず,必須でした.

TP-Link ID 作成のとき,パスワードとして 8文字を超える長さのパスワードを設定することもできますが,それをしてしまうと,後述する制御ツールからはなぜか制御できなくなるので,8文字以内に抑える必要があります.
ID 作成時に 8文字を超える長さに設定してしまったときは,あとから 8文字以下に変更しても大丈夫です.パスワードの変更は Tapoアプリ経由でできます.

「Error code 1501: Passwords must not exceed 8 characters · Issue #4 · fishbigger/TapoP100」
https://github.com/fishbigger/TapoP100/issues/4

なお,Tapo アプリから On/Off 制御するときは,8文字を超える長さのパスワードに設定していても問題なく制御できました.

 

3.
HS105 を制御できたツールでは,Tapo P105 は制御できませんでした.
エラーコードが返ってくるだけです.

 

4.
Tapo P105 を制御するツールとしては,PyP100 が有名で定番のようですので,これを使います.

PyP100 を使うときは,TP-Link ID のパスワードの長さを 8文字以内にする必要があります.
8文字を超える長さのパスワードを設定してあると,login() にほぼ間違いなく失敗します.

TP-Link ID 作成時に 8文字を超える長さに設定してしまったときは,あとから 8文字以下に変更しても大丈夫です.パスワードの変更は Tapoアプリ経由でできます.

この制限が何に起因する制限なのかは,私には読み取れませんでした.

 

「fishbigger/TapoP100: A module for controlling the TP-Link Tapo P100 Plugs」
https://github.com/fishbigger/TapoP100

 

「Error code 1501: Passwords must not exceed 8 characters · Issue #4 · fishbigger/TapoP100」
https://github.com/fishbigger/TapoP100/issues/4

 

5.
本家の制御ツール PyP100 だと,制御できるときもあるのですが,大部分は Exception が発生してしまって制御できないまま終了してしまいます.かなり動作不安定です.
Exception を catch してリトライすることも考えましたが,それよりも,本家 PyP100 を fork して Tapo P105 用に改良された PyP100 を使うほうがよさそうです.
実際に試してみると,こちらのほうは安定的に制御できました.

本家と fork との違いは,login() に成功したあとに

p105.getMacAddress() # Get MacAddress and Set terminalUUID

getMacAddress() を実行していることですね.
ソースコードを見ると, PyP100.P100() で作成したオブジェクトの terminalUUID 属性に,取得した MACアドレスを設定しています.コメントに書かれているとおりです.
この情報が,turnOn(), turnOff() を安定的に実行するために必要な情報のようです.

 

余談.

PyP100 を利用した Tapo P105 の現在の On/Off 状態の取得は,

stat = p105.getDeviceInfo()
on_off = json.loads(stat)['result']['device_on']

とし,on_off が True なら On,False なら Off という方法で行えるようです.
これは PyP100 のドキュメントに書かれていないのですが,たぶん間違っていないでしょう.
実際に実行して確認した範囲では,正しく取得できました.

 

 

 

 

ということで,Tapo P105 もローカルネットワーク用の制御ツールで On/Off 制御できました.
動作レスポンスも,割とよいです.HS105 と比べても遜色ありません.
Wi-Fi 電波の受信感度も,ルーター再起動後の自動再接続も良好です.

On/Off 制御できるようになったので,ASUS ROG Zephyrus の ACアダプタ On/Off 制御に使うんだー.
この ACアダプタは 240W も消費電力があるので,普段は消費電力の小さい Thunderbolt 給電にして ACアダプタは切っておきたい.
当面は手動で制御ツールを動かして On/Off するけれど,バッテリーの充電容量を監視して自動的に On/Off できるようにしたいなぁ.

 

 

 

==

 

2021年1月21日
リレーシールドの端子台を焦げ溶かしてしまったので,その代わりに TP-Link HS105 を使うことにしました.いまのところ,焦げ溶けるような気配はありません.問題なく稼働していて,しかも快適です!
https://noike.info/wp/knoike/2021/01/21/83729/

 

2020年12月15日
セラミックヒーターの電源も,ネットワーク越しに On/Off 制御できるようにしました.こたつ,扇風機,セラミックヒーターの電源を数分おきに On/Off し続けていますが,いまのところ,問題なく稼働しています.
https://noike.info/wp/knoike/2020/12/15/83551/

 

2020年4月5日
XPort を利用した「家電の電源のネットワーク越し操作環境」をうっかり壊してしまったので,IoT Express MkII とリレーシールドを使って作り直しました.1週間くらい稼働させていますが,とりあえず,問題なく動いています.
https://noike.info/wp/knoike/2020/04/05/82727/

 

2019年4月24日
「家電の電源のネットワーク越し操作環境」を復活させるときに,ネットワークの有線ポートが足りなかったので 1000BASE-T のスイッチングハブを購入した.いまの時代は,5ポートなら 1500円~2000円くらいで買えてしまうのですね.
https://noike.info/wp/knoike/2019/04/24/81549/

 

2019年4月23日
XPort を利用した「家電の電源のネットワーク越し操作環境」を復活させた.いま操作できるのは,「扇風機」と「こたつ」.
https://noike.info/wp/knoike/2019/04/23/81531/

 

2009年11月10日
ごもっともです.
http://knoike.seesaa.net/article/152841511.html

 

2008年08月11日
家電の電源をネットワーク越しに操作できるようにした(主なソース・コード)
http://knoike.seesaa.net/article/152835041.html

 

2008年08月11日
ColdFire で,これをやるとしたら
http://knoike.seesaa.net/article/152835043.html

 

2008年08月11日
家電の電源をネットワーク越しに操作できるようにした
http://knoike.seesaa.net/article/152835044.html

 

 

 

Pocket

ロジクールのワイヤレスマウス「G603」は,「私の使い方なら,3800mAh(充電式電池 2本)で 3か月くらい持つ」ことがわかった.

Pocket

 

2022年9月3日に,ロジクールのワイヤレスマウス「G603」の充電式電池を交換した.
この東芝の充電式電池は 1900mAh/本らしいので,
「私の使い方なら,3800mAh(充電式電池 2本)で 3か月くらい持つ」
ことがわかった.

このマウス,電池持ちがいいなぁ,すばらしいなぁ.

 

 

 


 

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

東芝 充電池 単3形 4本パック TNH-3ME(WB)(4本入)
価格:1137円(税込、送料別) (2022/9/16時点)


 

 

 

==

 

2022年5月22日
ロジクールのワイヤレスマウス「G603」の電池を交換した.このマウス,ものすごく電池持ちがいいなー.添付されていた電池が 5か月以上も持った.すばらしい.
https://noike.info/wp/knoike/2022/05/22/84689/

 

2022年2月17日
エレコム のマウス,「握りの極み」シリーズの「M-XGL10DBSBK」が私には合わなかったので,ざくをさんに勧めていただいたロジクールのゲーミングマウス「G603」を購入しました. 購入したのは 2021年12月 1日.これはいい! すばらしいー.
https://noike.info/wp/knoike/2022/02/17/84612/

 

 

 

Pocket

普段使いのPCが唐突にだめになってしまったので,急遽,新しくPCを購入しました.新しく買った PC は ASUS の ROG Zephyrus M16 で,RTX3070 が載った機種にしました.

Pocket

 


普段使いの PC として ThinkPad X1 Carbon を長らく使っていたのですが,唐突にだめになってしまい,急遽,新しく PC を購入しました.

だめになり方は,「唐突に起動中の多くのアプリが固まり,自動的に Windows の再起動がかかったものの,再起動に失敗する」というものです.
その後は,「自動再起動 → 再起動に失敗」を延々と繰り返す状態になってしまったので,強制的に電源を切りました.
Lenovo のハードウェア診断ツールによると,C: にしている内蔵 SSD の先頭付近の読み出しができなくなっているために,その後ろすべてが読めなくなっているような感じでした.
Windows インストール済みの USB HDD から起動しようとしてみましたが,Windows の起動途中でいわゆる「ブルースクリーン」になって Windows の起動もできないので,SSD のほかにもどこかが何かおかしいのかもしれません.
とりあえず,この PC からデータを取り出すことは保留にして,新しく PC を購入しました.

 

新しく買った PC は,ASUS の ROG Zephyrus M16 です.
そこそこ高いスペックの GPU を使ってみたかったので,NVIDIA の RTX3070(GPU用メモリ 8GB)が載っている機種にしました.型番は GU603HR-I7R3070U144 です.
CPU は Core i7-11800H(2.3GHz, TB時 4.6GHz).8コア,16スレッド.Tiger Lake-H(第11世代 CPU).
CPU 内蔵 GPU は,Intel Iris UHD Graphics 750.内蔵 GPU も結構なスペックですね.
RAM は DDR4 で,16GB 載っています.

 

Sofmap で 2022年 7月13日(水)に発注して,2日後の 15日(金)に到着しました.
すぐに届いてよかったー.

 

X1 Carbon で使っていた Thunderbolt3 ドックは Zephyrus でそのまま使えました.助かったー.

 

前PC からデータ移行ができない状態で新 PC を使い始めたのは初めてかも… .
2週間近く経ちましたが,いまも普段作業をしつつ少しずつ環境整え中… .

思わぬことから Windows11 を使い始めることができました.
前の PC は CPU が Kaby Lake(第7世代 CPU)なので Windows11 Ready ではなく,Windows10 止まりだったので,どうしようかなぁ,と思っていたところでした.
予定外のいたい出費でしたが,Windows11 に移行できたのは少し嬉しい… .
新 PC も長く使っていけそうです.

 

Zephyrus_Corei7_16core.png
16コア CPU


あぁん,コアがいっぱいあるわぁ,すてきだわー.

 

そうそう.この PC は,いわゆる「ゲーミング PC」なので,電源を入れたときに「シュバッ」と音がしたり,キーボードのバックライトが 7色にめろめろ光るので,このままだと外で使うのははずかしい… .設定で変えられると思うので,探さなければ… .

ヘッドホンジャックにヘッドホンプラグを挿しておけばあらゆる音が出なくなると思うじゃないですか.
ところが,そうしておいても電源を入れたときだけは音が出るんですよ,「シュバッ」と… .
かっこいいんだけどさー,かっこいいんだけどもさー,お外ではなんとかしたいなぁ.

 

 

 

 

==

 

Pocket

ロジクールのワイヤレスマウス「G603」の電池を交換した.このマウス,ものすごく電池持ちがいいなー.添付されていた電池が 5か月以上も持った.すばらしい.

Pocket

 

ロジクールのワイヤレスマウス「G603」の電池を交換した.
このマウス,ものすごく電池持ちがいいなー.
添付されていた電池が 5か月以上も持った.すばらしい.
マウス表面にある LED が赤く光って「電池残量が少ないよー」と知らせてくれるようになってからも,半月以上も持った.

今回は,充電式の電池に交換した.
東芝の充電式電池が安かったので,それにした.
この「赤文字 TOSHIBA 充電池」は,たぶん,日本で製造した IMPULSE だと思うのだけど,違うかなー?
これも長持ちしそうで,楽しみ.

 

 


 

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

東芝 充電池 単3形 4本パック TNH-3ME(WB)(4本入)
価格:1102円(税込、送料別) (2022/5/22時点)


 

 

 

==

 

2022年2月17日
エレコム のマウス,「握りの極み」シリーズの「M-XGL10DBSBK」が私には合わなかったので,ざくをさんに勧めていただいたロジクールのゲーミングマウス「G603」を購入しました. 購入したのは 2021年12月 1日.これはいい! すばらしいー.
https://noike.info/wp/knoike/2022/02/17/84612/

 

 

 

Pocket