99
101

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 5 years have passed since last update.

Nature Remoの公式APIの使い方

Last updated at Posted at 2018-01-18

##公式APIを発見した
偶然発見したのでメモ程度。一応既知なので公開も問題ないかと思って書きました。
ちなみに公式からのドキュメントはまだ出ていないので参考程度に。

追記(2/12):1/30に公開されました

##【注意点】
https://developer.nature.global/ を読んだ上でご利用ください。
また、Tokenやdevice idは絶対に流出させないようにしましょう。特にtokenを流出させてしまうとあなたの家の家電にアクセスされ放題になります。

##手順
Windowsの場合、
https://qiita.com/sugasaki/items/ba9737d13db33d2cd71f
で、curlをインストールしてください。

① アクセストークンの発行
https://home.nature.global/
"Generate Access Token"よりトークンを発行します。
こちらは再表示されませんのでどこかにメモしておきます。

② SwaggerのDocumentを参考にAPIを叩く
http://swagger.nature.global/
こちらにアクセスし、curlコマンドを取得してください。
例えば、デバイスの状態をGETしたい場合、

基本コマンド例
curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json"

というコマンドになります。(結果はUnauthorizedになります)

このままでは認証できないので、Tokenで認証します。
このコマンドに、1で取得したTokenを以下の形で追記します。
-k --header "Authorization: Bearer 取得したToken"
ですので、最終的なコード例は以下の通りです。

【完成コード例】
curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -k --header "Authorization: Bearer 取得したToken"

(1行で入力してください)

このコードではdevice idやtemperature(温度), humidity(湿度)などが取得できます。
device idはAPIの中で使用することがあるので保存しておくことをお勧めいたします。

##Tips
Macの場合はbrew、Linuxの場合はapt-getでjqをインストールしておくことをおすすめします。
コマンドの最後に

【コード例】
.... | jq .

と追記してあげると、jsonデータが整形され、GETの結果が見やすくなります。

ちなみにAjaxで使う場合はこんな感じ。

getData.js
apiKey = "API KEY";

function getData(often) {
    $.ajax({
        type: "GET",
        dataType: "json",
        timeout: 3000,
        headers: {
            Authorization: 'Bearer ' + apiKey
        },
        cache: false,
        url: 'https://api.nature.global/1/devices',
          success: function(data) {
            console.log(data);
            $('.current_temp').empty();
            $(".current_temp").text(data[0].newest_events.te.val.toFixed(1) + "");
            $('.humidity').empty();
            $(".humidity").text(data[0].newest_events.hu.val.toFixed() + "%");
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            //エラー対応
        }
    });
}

Pythonはこんな感じ。

getdata.py
import json
import requests

apikey = "API KEY"

#Get JSON
headers = {
  'accept': 'application/json',
  'Authorization': 'Bearer ' + apikey ,
}

response = requests.get('https://api.nature.global/1/devices', headers=headers, verify=False)
rjson = response.json()
print(rjson)

##最後に
IFTTTではWebhookにHeaderを設定できないので、Zapierを使用しましょう。
5こ以上は有料ですので、大人しくRaspberry Piなど常時電源が入っている機器を利用した方が便利そうです。

関係ないですが、私の場合、PHP+MySQL+Javascriptでこんな家電コントロールページを作って遊んでいます。
Screen Shot 2019-06-20 at 7.49.03 AM.png

追記:Zapierより、HerokuとIFTTTを連携させたほうが便利かもしれません。あとはGASとか。

99
101
5

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
99
101

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?