3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

enebular_uhuruAdvent Calendar 2021

Day 13

SwitchBot APIを呼び出すフローを作る

Last updated at Posted at 2021-12-12

SwitchBotAPIを呼び出すフローを作り、enebularからHerokuへデプロイします。

作成例

sample.png

用意するもの

  • enebular
    • プロジェクトが作成済みであること
    • Herokuコネクションが作成済みであること
  • Heroku
    • アプリが作成済みであること
  • SwitchBot
    • SwitchBotアカウントが作成済みであること
    • SwitchBotアプリをスマートフォン等にインストール済みであること
    • 任意のSwitchBot製品を少なくとも1つ利用できること
    • SwitchBotクラウドサービスがオンになっていること

手順

enebular

フローを作る

http request ノードがサポートしている認証方式では、SwitchBot APIを呼び出せないので、function ノードでヘッダーにトークンを設定します。

NG

Authorization: <type> <credentials>

OK

Authorization: <credentials>

  1. 編集したいフローを開きます。
  2. パレットのinjectfunctionhttp request ノードをワークスペースに配置します。
  3. inject ノードの [Node-RED起動の 秒後、以下を行う] で適当に 5 秒後に設定します。
  4. function ノードをsample-codeのように実装します。クレデンシャルを環境変数で読み取ります。
  5. http request ノードの [メソッド] をGETにし、 [URL] にSwitchBot APIのURLを入力します。今回は、SwitchBotアカウントに登録済みのデバイス一覧を取得するAPIを呼び出します。

GET https://api.switch-bot.com/v1.0/devices

sample-code

msg.headers = {};
msg.headers['Authorization'] = env.get("OPEN_TOKEN");

return msg;

SwitchBot

SwitchBotアプリからトークンを取得する

  1. SwitchBotアプリで、[プロフィール] > [設定] を開きます。
  2. [アプリバージョン] をリズミカルに10回タップします。
  3. [開発者向けオプション] をタップして、表示されたトークンを控えておきます。

image-1

image-1.PNG

Heroku

Herokuアプリに環境変数を設定する

  1. Herokuのダッシュボードから、作成済みのHerokuアプリの詳細画面を開きます。
  2. [Settings] タブの [Reveal Config Vars] をクリックします。
  3. [KEY] にOPEN_TOKENと入力します。
  4. [VALUE] にSwitchBotアプリからトークンを取得するで控えたトークンをを入力して、環境変数を追加します。
  5. フローを作るで作ったフローを、Herokuにデプロイします。
  6. Herokuアプリのログに、デバイス一覧のJSONが出力されていることを確認します。

image-2.png

SwitchBotアカウントに登録済みのデバイス一覧を取得できました :tada:

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?