Switchbotの温湿度計を買ったので、子供にプログラムを教えがてらデータをAPI経由で取得して、家庭用のDiscordの特定のチャンネルに投稿するというようなものを作った。
SwitchbotはBLEで直接データを拾う記事が割と目についたけど、WebAPI経由の方が楽そうだったのでそちらを使った。単体だとWifiに接続できないはずなので、Switchbot Hub が必要な気がする(うちにはSwitchbot Hub Miniがある)。
https://github.com/OpenWonderLabs/SwitchBotAPI
上のドキュメント読めば簡単にやれるんだけど、トークンの取得がちょっと面白くて、プロフィール>設定からアプリケーションのバージョン表記を10連打すると開発者向けオプションが表示されるので、そこからトークンの取得ができる。
あとはこれをAuthorizationヘッダにつければ自分のデータにアクセスできる。
GET /v1.0/devices で自分のデバイス一覧を取得できるんで、そこからdeviceIdを見つけて、GET /v1.0/devices/{deviceId}/statusで、温度・湿度を取得できる。
Discordは単純な投稿だけなら、slackとかと同じでWebフックの作成で専用のURLが発行されるので、そこにcontentsに投稿したい内容を付けてPOSTするだけで投稿できる。
あとはRpi上でcronで実行したらOK。
簡単。