Nature RemoのAPIを叩く

Nature Remo miniを買ったので、APIを叩いてみる

以下作業手順。

1. アクセストークンの取得

ここにアクセスし、nature remoアカウントでログインする。
ログインするとリクエスト画面になるので、許可するボタンをクリック f:id:yFujita:20180820220200p:plain


Access tokens」画面になるので、「Generate Access Tokens」ボタンをクリック
f:id:yFujita:20180820220738p:plain


するとアクセストークンが表示されるので、これを控える

f:id:yFujita:20180820221825p:plain

2. APIを叩く

2.1 デバイス一覧の取得

APIページを参考にAPIを叩いてみる。
まずは登録した機器の一覧を出力。
$tokenに1で取得したアクセストークンを設定した上で、以下コマンドを実行

$ curl https://api.nature.global/1/appliances -H "Authorization: Bearer $token" | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2546  100  2546    0     0   3512      0 --:--:-- --:--:-- --:--:--  3511
[
  {
    "id": "XXXXXXXX-2518-4bd8-XXXX-c571XXXXXXXX",
    "device": {
      "name": "RemoLiving",
      "id": "d9171fca-XXXX-4647-XXXX-XXXXXXXXXXXX",
      "created_at": "2018-08-19T01:41:11Z",
      "updated_at": "2018-08-19T08:55:37Z",
      "firmware_version": "Remo-mini/1.0.87-g8b06f0e",
      "temperature_offset": 0,
      "humidity_offset": 0
    },
    "model": null,
    "nickname": "電気",
    "image": "ico_light",
    "type": "IR",
    "settings": null,
    "aircon": null,
    "signals": [
      {
        "id": "c9d7c6b6-bb22-4b57-8ecc-04683096caee",
        "name": "オフ",
        "image": "ico_io"
      },
      {
        "id": "b67d7329-f5ac-45ca-a87e-468c5210e1a9",
        "name": "全光",
        "image": "ico_io"
      },
      {
        "id": "fa7459bc-5b0c-4d36-bb2c-ab6f59290d66",
        "name": "光色(青)",
        "image": "ico_color_blue"
      },
      {
        "id": "2482b859-5d6e-48f4-9900-93172606e578",
        "name": "光色(オレンジ)",
        "image": "ico_color_yellow"
      },
      {
        "id": "c46b8bfe-5654-41a0-aaac-76bacce73f1e",
        "name": "明るさ(UP)",
        "image": "ico_arrow_top"
      },
      {
        "id": "071c83e9-2070-49ca-8511-c7edec74ed92",
        "name": "明るさ(down)",
        "image": "ico_arrow_bottom"
      }
    ]
  },
  (以下略)
]

とズラズラっと登録したデバイス情報が取得できた。

2.2 家電の電源ON/OFF

先程取得したdevice情報の中でsignalsのidを使用し電源のON/OFFを試す。
以下コマンド(これでTVの電源ON/OFFができるはず)

$ curl -X POST https://api.nature.global/1/signals/{signalsのid}/send -H "Authorization: Bearer $token

テレビがつけることに成功。



3. scriptから電気の明るさを変える

我が家ではリモコンから電気をONにすると明るすぎるため、毎回リモコンで明るさを調整していた。 (壁のスイッチをON/OFFだと明るさ設定は保たれるので、なにかしらのやりようはある気がしているが、、) 毎回リモコンから実行するのが面倒なため、pythonからapiを複数回叩いて電気の明るさを良い感じに変えるscriptを書いた

import requests
import json
from time import sleep

# APIを呼んで情報取得
headers = {
    'accept': 'application/json',
    'Authorization': 'Bearer "アクセストークン"',
}

signal_id = "1a4a72e8-fb56-45b5-9fd8-19a81be8b6de"

# 前光でつける
signal_id = "b67d7329-f5ac-45ca-a87e-468c5210e1a9"
response = requests.post("https://api.nature.global/1/signals/" + signal_id + "/send",headers=headers)

# 光色を暖色にするを7回実行
signal_id = "2482b859-5d6e-48f4-9900-93172606e578"
for i in range(7):
    response = requests.post("https://api.nature.global/1/signals/" + signal_id + "/send",headers=headers)
    sleep(1)

# 明るさdownを3回実行
signal_id = "071c83e9-2070-49ca-8511-c7edec74ed92"
for i in range(3):
    response = requests.post("https://api.nature.global/1/signals/" + signal_id + "/send",headers=headers)
    sleep(1)

次はこのscriptをAmazon Echoから実行できるように設定する