今時こういうスマートアウトレットが$10/eaくらいで買えるのである。WiFiでクラウドに接続し、アプリケーションやAPIからON/OFFしたり統計情報を取得したりできる。もともとクリスマスライトを夜だけONにしたくて、機械式タイマーと値段あまり変わらないのでこちらに手を出してみた次第。
この製品はEtekcityというメーカーのものだが、対応クラウドサービス(今時の呼び方ではスマートホームサービス)はVeSyncという。VeSyncスマフォアプリを入れて、まずアカウント作成、デバイスのWiFi接続接続、デバイスのクラウドへの登録を行うと、スマフォアプリからON/OFF、タイマー設定、消費電力情報の参照などできるようになる。タイマーには「日の出」や「日の入」も設定できる。クリスマスライトのタイマー運用にはこれで十分で、ここまでなら非常に簡単に使えるようになっており、ちゃんとコンシューマーレベルまで落ちてきてるなという印象。
ただ、これだとやっていることは普通のタイマーとほぼ同じで、あまりおもしろくない。もっと「スマート」な運用をしたくなってくるのだが、そちらに踏み出すとまだまだ未成熟である。
例えば、Google AssistantとVeSyncを連携させればボイスコマンドで電気のON/OFFなどできるはずなのだが、うまく行かなかった。何をやっても「そのデバイスはセットアップされていない」的なことを言われてしまう。Alexaはもっとまともに動くのかもしれないが、よくわからない。
IFTTTもVeSyncに対応しており、Google AssistantのボイスコマンドやWebhookのイベントに反応して電気を操作するAppletを作っていたのだが、これも最近動かなくなってしまった。VeSyncと連携(IFTTT上でVeSyncのユーザIDとパスワードを入力)させた直後は動くのだが、しばらく経つとエラーになり、エラーが続いた挙句Appletがturn offされてしまうのだ。再連携すると一時的に復活するが、結局同じことになる。アクセストークンのタイムアウトか何かのように見えるのだが、実装を見てあげられるわけでも、サポートチケット切れるわけでもないので、こちらからは対処のしようがない。
そこでVeSyncのAPIを直接叩く方法はないか探してみたところ、動作するPythonライブラリがあった:
GitHub - tylergets/python-vesync: VeSync API Wrapper in Python. Used by EtekCity Smart Wifi Outlets.
ロジックはものすごく簡単なので、解析してNode-REDに持って行ったら期待通り動いてくれた。まぁいつ動かなくなるかわからないけどなー。