NatureRemo APIをInsomniaクライアントを介して叩いてみた


はじめに

スマートハウスにして日々の生活を便利にしたくて、Nature Remo 3 を買った。
赤外線リモコンで操作できる家電については、スマホアプリor WebAPIからコマンドを送れるという。

今回は、InsomniaというWebAPIを設計/デバッグ/テストするデスクトップツールを介して、
WebAPIを叩いて、テレビをON/OFFさせてみる。

この記事の前提条件

  • Nature Remo 3の初期設定が完了して、テレビ(本記事で触る家電)との連携がすでにできていること
  • Insomniaをインストールしていること

参照情報

大まかな流れ

  1. アクセストークンを発行
  2. OAuth2の設定でアクセストークンを指定
  3. Nature API仕様(クラウド)を元にGET/POSTする

アクセストークンの発行

OAuth2の設定

Nature API仕様(クラウド)の"Authorize"という鍵マークボタンを押すと、
Token URLが記載されていた。

このToken URLに、さきほど発行したアクセストークンを送信すれば良いので、
InsomniaのOAuth2タブにて、GRANT TYPEをClient Credentialsにして下記の通り設定すると良かった。

"https://api.nature.global/1/users/me" にGETリクエストを投げて、200が帰ってくれば認証成功となる。

室内の温度を取得してみる

"https://api.nature.global/1/devices" にGETリクエストを投げると、下記が帰ってきた。

...
			"hu": {
				"val": 36,
				"created_at": "2022-03-20T01:59:17Z"
			},
			"il": {
				"val": 173,
				"created_at": "2022-03-20T01:59:11Z"
			},
			"mo": {
				"val": 1,
				"created_at": "2022-03-20T01:54:24Z"
			},
			"te": {
				"val": 24,
				"created_at": "2022-03-20T01:43:16Z"
			}
...

API仕様の末尾にModels仕様が記載されていて、
Devicesレスポンスから、temperature,humiditym illumination, movementが取得できることがわかった。
API仕様書内のDeviceはNatureRemoのことを指しているようだ。

接続機器のIDを取得する

"https://api.nature.global/1/appliances" にGETリクエストを投げることで、Nature Remoに登録済みの家電一覧が取得できる。

その中からテレビに対応するApplianceのidを取得する。

取得したテレビのApplianceのidを介して制御

"https://api.nature.global/1/appliances//tv" にPOSTリクエストを送信することで、テレビのON/OFFができる。
Quearyとして、buttonに制御したいキーを設定(今回はpower)する必要がある。

この制御できるキーは、"/1/appliances" のレスポンス一覧に含まれている。