Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
86
Help us understand the problem. What is going on with this article?
@sohsatoh

Nature Remoの公式APIの使い方

More than 1 year has passed since last update.

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

86
Help us understand the problem. What is going on with this article?
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
sohsatoh
専攻は言語(非理系)

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
86
Help us understand the problem. What is going on with this article?