最近はやりのSwitchBotの温度計からの温度をASTERIA Warpで受け取って、所定の温度を超えるとChatworkに通知するフローを作ってみます
いろいろなSwitchBotを使って事務所をIoT化するのが、マイブームです
switchbotの温度計とはこんな感じで温度と湿度が測れるタイプですね。
Switchbot温湿度計
APIが使えるための準備は、他のブログに譲って省略します
※switchbotから事前にトークンとクライアントシークレットを取得しておきましょう
まず、Switchbotの各デバイスにはDeviceIdがあるので、取得したい温湿度計のDeviceIdを取得する必要があります。
下記のAPIを使ってデバイスの一覧を取得しましょう
デバイス一覧取得API
フローはリクエストヘッダにトークンなどのパラメータを設定して、HttpでGetするだけです。
ここでポイントは認証の設定ですね。
取得したトークンにUNIXタイム、UUIDを与えて、シークレットでハッシュ化してBase64でエンコードして設定する必要があります。
詳しくはSwitchbotのAPIの説明を見てください
APIのトークン設定方法
上記フローをフローデザイナーで実行するとCSVでご自身の持っているデバイス一覧が表示されるので、対象の温湿度計のデバイスIDをメモしてください
次に、温度が変わったら知らせてくれるように、Webhookを設定する必要があります。
switchbotにWebhookのアドレスを設定します
APIの詳細は下記URLを参照してください
Webhookの登録方法
フローは簡単ですね。
Webhookで呼び出されるURLは事前に決めておいてください。
パラメータは、下記のように設定します。赤字のWebhook用URL設定のConstにhttpsで始まるURLを設定してください。
※注意:現在(2024/11/1)、switchbotのAPIはdeviceListに「ALL」しか受け付けないので、特定のデバイスだけWebhookをつけることができません。
次に本体のWebhookを受け取るフローを作成します
受け取るAPIの説明は下記URLを参照してください
温湿度計APIの取得データ
注意点は、このWebhookには、手持ちのすべてのデバイスのイベントで呼び出されるので、先ほど取得したデバイスIDで対象のデバイスのみ判定する必要があります。
対象のデバイスIDで温度が指定温度を超えてたら、Chatworkにメッセージを送信します。
ただし、このままだと、指定温度以上だと温度変化がある毎に通知が来るので、実際につかうにはもう一工夫必要ですね
※Chatwork送信の詳しい説明は省きます
ASTERIA WarpとSwitchbotで、いろいろなことが試せます。
ASTERIA WarpではIoT機器との連携もノーコードで簡単に試せるのでお勧めです!