スマートプラグとPythonのTuyaバインディングでの電力計測…の、トラブルシュート

踏むべき手順

  1. ローカルネットワークでの疎通確認
  2. Tuyapowerでの情報取り直し
  3. ローカルが問題なければTuyaの開発者サイトでAPIの有効性確認

前提

  • 消費電力の測れるスマートプラグは発電電力も測れる
  • プランドもんじゃないスマートプラグはSmartLifeで接続できる
  • SmartLifeに登録したデバイスはTuya(SmartLifeの開発元)のIoT APIから情報取得できる
  • これにアクセスするにはPythonバインディングのTuyapowerが便利
  • ただしAPIを使うにはTuyaに開発者登録してクラウドアプリケーションの骨格を作成、ID等を取得する必要がある
  • 取得したID等を使うと python3 -m tinytuya wizard -nocolor 等でデバイスIDとデバイスキー(パスワード)を取得できる(devices.jsonファイルに書き込まれる)
  • この情報を入れるとTuyapowerモジュールによりローカルでデバイスの電力情報等が取れる
  • これにより3秒ごとに発電量を取得するプログラムを書いてログを取っていた
  • さいきんTuyaがAPI利用にうるさくなってきており、以前は「お試し」でずっと使えたのが1ヶ月で期限切れになるようになった

起きたこと

  • 今日のお昼に発電ログを見たら、今日のデータがまったく取れてなかった
  • それどころか昨日のも半分くらいだった。昨日の昼から止まっていたらしい
  • バイスIPアドレスが一斉に変わったために、IPアドレス決め打ちのスクリプトからアクセスできなくなっていたのが原因

実際にやったこと

  • Tuyaの開発者サイトでAPIの有効期限の更新申請
  • 使用しているアプリケーション骨格へのAPI認証を削除→復活
  • 何も変わらず
  • Tuyapowerでデバイスを確認したところIPアドレスが変わっていた
  • 新しいIPアドレスでアクセスしたらあっさり情報取得できた

考えていたこと

  • 更新してから1ヶ月経った?(経ってなかった)
  • 締め付けのときは理不尽にへんな動作をする可能性があるから一度切ってみよう

→ぜんぜん動かない

  • IPアドレス変わってるかも、と指摘されたので確認

→変わってた

  • これを最初に見るべきだよね
  • そもそもアクセスできない動作が起きた時点でTuyapowerで情報取り直すべき

備考

Home AssistantにはLocalTuyaというクラウド不要のコントロールがあるらしい。Home AssitantはデカくてRasPiを1台専有しちゃうんで使う気がなかったけど、ウチのTuyaなIoTデバイスの数(30台以上)を考えると、ある日突然使えなくリスクは馬鹿にならない。Tuyaのクラウドを経由する必要がないならその方がいいかも。