ASTERIA WarpをSwitchBotの温湿度計とつなぐ!

最近はやりのSwitchBotの温度計からの温度をASTERIA Warpで受け取って、所定の温度を超えるとChatworkに通知するフローを作ってみます
いろいろなSwitchBotを使って事務所をIoT化するのが、マイブームです

switchbotの温度計とはこんな感じで温度と湿度が測れるタイプですね。
Switchbot温湿度計

APIが使えるための準備は、他のブログに譲って省略します
※switchbotから事前にトークンとクライアントシークレットを取得しておきましょう

Switchbotトークンの取得方法

まず、Switchbotの各デバイスにはDeviceIdがあるので、取得したい温湿度計のDeviceIdを取得する必要があります。
下記のAPIを使ってデバイスの一覧を取得しましょう
デバイス一覧取得API

フローはリクエストヘッダにトークンなどのパラメータを設定して、HttpでGetするだけです。

デバイス一覧取得

ここでポイントは認証の設定ですね。
取得したトークンにUNIXタイム、UUIDを与えて、シークレットでハッシュ化してBase64でエンコードして設定する必要があります。
詳しくはSwitchbotのAPIの説明を見てください
APIのトークン設定方法

上記フローをフローデザイナーで実行するとCSVでご自身の持っているデバイス一覧が表示されるので、対象の温湿度計のデバイスIDをメモしてください

次に、温度が変わったら知らせてくれるように、Webhookを設定する必要があります。
switchbotにWebhookのアドレスを設定します
APIの詳細は下記URLを参照してください
Webhookの登録方法

Webhook設定

フローは簡単ですね。
Webhookで呼び出されるURLは事前に決めておいてください。
パラメータは、下記のように設定します。赤字のWebhook用URL設定のConstにhttpsで始まるURLを設定してください。
※注意:現在(2024/11/1)、switchbotのAPIはdeviceListに「ALL」しか受け付けないので、特定のデバイスだけWebhookをつけることができません。

Webhook用パラメータ

次に本体のWebhookを受け取るフローを作成します
受け取るAPIの説明は下記URLを参照してください
温湿度計APIの取得データ

温度を受け取るフロー

注意点は、このWebhookには、手持ちのすべてのデバイスのイベントで呼び出されるので、先ほど取得したデバイスIDで対象のデバイスのみ判定する必要があります。

温度判定マッピング

対象のデバイスIDで温度が指定温度を超えてたら、Chatworkにメッセージを送信します。
ただし、このままだと、指定温度以上だと温度変化がある毎に通知が来るので、実際につかうにはもう一工夫必要ですね


※Chatwork送信の詳しい説明は省きます

Chatwork

ASTERIA WarpとSwitchbotで、いろいろなことが試せます。
ASTERIA WarpではIoT機器との連携もノーコードで簡単に試せるのでお勧めです!