Help us understand the problem. What is going on with this article?

Nature Remoの公式APIの使い方

公式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とか。

sohsatoh
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした