SwitchBot開閉センサー
SwitchBot開閉センサー を Thing として扱うための手順です。Thing Description を元に、Node-RED と node-red-nodegen を使用します。
本サンプルでは、REST API が既に用意されているものから、Thing Description を作成し、ノードモジュールへと対応づける例として、 SwitchBot を取り上げ WoT 化を行います。
必要なもの#
- ハードウェア
- SwitchBot Hub Plus または Hub Mini
- SwitchBot開閉センサー
- スマートフォン
- PCやRaspberry Piなど
- ソフトウェア
SwitchBotハブのセットアップ#
SwitchBotAPI のページに従い進めていきます。
なお、SwitchBotAPI を使用するには、ハブとして Hub Plus や Hub Mini が必要になります。
はじめに、認証用のトークンを取得します。
- SwitchBot アプリをダウンロードします。
- SwitchBot アカウントにログインします。
- プロファイルから
設定に移動し、アプリバージョンを10回タップすると開発者向けオプションが表示されます。 - 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: 取得したトークン

