Skip to main content

SwitchBot開閉センサー

SwitchBot開閉センサー を Thing として扱うための手順です。Thing Description を元に、Node-RED と node-red-nodegen を使用します。

本サンプルでは、REST API が既に用意されているものから、Thing Description を作成し、ノードモジュールへと対応づける例として、 SwitchBot を取り上げ WoT 化を行います。

必要なもの#

SwitchBotハブのセットアップ#

SwitchBotAPI のページに従い進めていきます。
なお、SwitchBotAPI を使用するには、ハブとして Hub Plus や Hub Mini が必要になります。

はじめに、認証用のトークンを取得します。

  1. SwitchBot アプリをダウンロードします。
  2. SwitchBot アカウントにログインします。
  3. プロファイルから設定に移動し、アプリバージョンを10回タップすると開発者向けオプションが表示されます。
  4. SwitchBot OpenAPIのトークンが発行されます。

発行されたトークンをヘッダーに含めることで、デバイスの状態の取得や操作を行うことが出来ます。

curl などでデバイスのリストやそれぞれのデバイスIDの取得や確認を行います。
<token>の箇所にはそれぞれ先ほど取得したトークンを入力してください。

# デバイスのリストの取得$ curl -X GET -H 'Authorization: <token>' https://api.switch-bot.com/v1.0/devices
# デバイスの状態を取得# deviceId には上記のデバイスリストの取得で確認したデバイスIDを入力してください$ curl -X GET -H 'Authorization: <token>' https://api.switch-bot.com/v1.0/devices/<deviceId>/status

Thing Description の例#

Thing Description の作成を行なっていきます。
本サンプルのコード例全体はこちらです。

今回は、認証用トークンが必要であるため、下記のように、"securityDefinitions"にて、"scheme": "bearer"を定義します。

...  "securityDefinitions": {      "bearer_sc": {          "scheme": "bearer",          "in":"header"      }  },  "security": [      "bearer_sc"  ],...

base URI の<deviceId>の箇所は、セットアップで確認したデバイスIDに置き換えます。

..."base": "https://api.switch-bot.com/v1.0/devices/<deviceId>/status",...

プロパティの記述ではSwitchBot開閉センサーに合わせた定義を行なっていきます。

...  "properties": {      "state": {          "description": "Contact Sensor information from the Hub",          "type": "object",          "properties": {              "body": {                  "type": "object",                  "properties": {                    "deviceId": {                        "type": "string",                        "readOnly": true,                        "writeOnly": false                    },                    ......                    "openState": {                        "type": "string",                        "readOnly": true,                        "writeOnly": false                    }                  }              }          },          "forms": [              {                  "href": "",                  "contentType": "application/json",                  "htv:methodName": "GET",                  "op": [                      "readproperty"                  ]              }          ]      }  }...

その他、省略した部分等の本サンプルのコード例全体はこちらからご覧ください。

使用例#

作成した Thing Description を元にして JSON-LD ファイルを作成し、 node-red-nodegen を使用してノードモジュールを作成します。

npx node-red-nodegen contact-sensor-td.jsonldnpm --prefix ~/.node-red install ./node-red-contrib-wotswitchbotcontactsensor

開閉センサーの状態を表示する#

下記のように SwitchBot Contact Sensor のノードを編集することで、開閉センサーの状態を表示することができます。

  • Interaction: Property
  • Name: state
  • Access: Read
  • Form: bearer https://api.switch-bot...
  • Token: 取得したトークン

使用例

使用例