SwitchBot API を利用して加湿器を自動化する
この記事は何か
湿度を監視して加湿調整をする系を作りました。
スマートホーム文脈で結構ありがちな開発だと思うので参考になれば。
なんならシステムトレードもScheduler+Functionsで書けて、とても便利です、そして安い。
目的の湿度を目指して自動的に加湿する加湿器もありますが、加湿器内部の湿度計は加湿器に近すぎるため、部屋全体の湿度として扱うには苦しい場合が多いように思います。
全体像
加湿器はSwhichBotPlug経由で接続して使用します。
流れ
swichBotのAPIを叩く
API仕様に関してはここを見れば良いです。
今回やりたいことは下記の3つ
- 湿度計の値を取得
- 加湿器の電源をON/OFFする
- 加湿器のSwhichBotPlugをON/OFFする
- 加湿器のON/OFF状態を確認する
- これはSwhichBotPlugの消費電力を確認することで確認できます。
APIKEYの取得
swichBotアプリの設定画面にて、バージョンを10回タップすると「開発者向けオプション」というメニューが出現し、APIKEYが取得できます。
使用例(python3)
res = request_bot_api("/v1.1/devices", Method.GET)
加湿器を制御する関数を書く
Functionsで関数を作成します。この関数の中では下記を行います。
- そもそも制御する必要があるのか(制御が有効か)確認
- SwhichBotPlugがONの時は制御が有効
- 制御が必要な場合、下記を実行。
- 湿度計の値を取得する
- 十分な湿度であれば加湿器をOFFに、不十分であれば加湿器をONにする
- 湿度計が現在ONかOFFかはSwhichBotPlugの消費電力で確認する
こちらに書きました。
これをdeployし、定期的(10分おきなど)に実行することで、加湿器を制御します。
制御関数を定期実行する
Schedulerを使って、上で作った関数を定期的に実行します。
- 今回は10分おきに実行します。
上記のdeploy関数でdeployした関数にはpublickアクセスがないので、functionを叩くための認証の設定する必要があります。
定期実行の開始と終了をEcho経由で行う
Echo+SwichBotのシーンを利用して、制御が必要か/必要ないか、設定できる様にします(ステータス管理)。
今回は
- SwhichBotPlugがONの時は制御が有効
- SwhichBotPlugがOFFの時は制御が無効
としているので、EchoでSwhichBotPlugをON/OFFできれば良いです。
alexaアプリとswichbotアプリを連携して、alexaアプリでplugをオンにする定型アクションを設定します。
以上
以上です、さよなら喉のイガイガ。
利用サービスまわり
SwichBot
簡易的にIoTを実現するための製品やアプリケーションを提供している、APIも利用可能、web経由でカーテンとか開けれるようになる。
Amazon Echo
スマートスピーカー、音声コントローラとして使ってる、今回は Echo => IFTTT => Functions の流れで利用
Functions
GCPの関数ホスティングサービス、ちょっとしたコード(関数)をネットにおいておける。諸々のイベントをトリガーにして実行できる(httpリクエストなど)。
Scheduler
GCPのJOBを定期実行するサービス、Functionsで作った関数を1時間に1回実行したりできる。
Discussion