9
13

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.

【GAS】Nature Remo APIを使って気温、湿度、明るさセンサー、人感センサーをスプレッドシートへ定期的に記録する

Last updated at Posted at 2019-10-13

はじめに

Nature Remo とは?
Nature Remo(ネイチャーリモ)は、お使いの家電をインターネットに繋げることで、手軽にスマートホームを実現するスマートリモコンです。例えば、外出先からスマートフォンでエアコンを操作したり、Google Home(グーグルホーム)、Amazon Echo(アマゾンエコー)、Apple HomePod(アップルホームポッド)等のスマートスピーカーから音声でテレビや照明を操作することができます。
※Nature Remoは、スマートスピーカーがなくても、スマートフォンがあれば利用可能です。Apple HomePodとは、Siriショートカット経由での操作での対応になります。

https://nature.global/jp/top

Nature Remoには気温、湿度、明るさセンサー、人感センサーなどが取得できるAPIがあるので
Google Apps Scriptを使いスプレッドシートに記録する方法を紹介します。

このような感じに記録します

スクリーンショット 2019-10-14 午前1.17.23.png

human_sensorは人を検知している場合は1で、検知しない場合は0です。

※取得のAPIだけではなく、登録してある家電の操作などもAPIから操作できます。

API仕様はこちら

手順

API Tokenを発行

こちらのURLからAPI Tokenを発行する
https://home.nature.global/

以下のボタンを押したら
スクリーンショット 2019-10-14 午前1.06.39.png
API Tokenが発行させるのでメモっておく
スクリーンショット 2019-10-14 午前1.07.50.png

スプレッドシートを作成

こちらのURLから新しいスプレッドシートを作成
https://docs.google.com/spreadsheets/u/0/?tgif=d

以下のように一行目に項目名を入力する
スクリーンショット 2019-10-14 午前1.09.46.png

[ツール]→[スクリプトエディタ]
スクリーンショット 2019-10-14 午前1.12.05.png

ソースコード

以下のソースコードをコード.gsに貼り付けて
[ファイル]→[保存]

コード.gs
//この関数をトリガーに設定する
function getRemoData() {
  var url = 'https://api.nature.global/1/devices';
  //取得したアクセストークンを入力★★★★★★
  var token = '';
  //★★★★★★★★★★★★★★★★★★★★★
  var headers = {
    "Authorization": 'Bearer ' + token
  }

  var options = {
    "headers": headers
  }

  // GETリクエスト
  var response = UrlFetchApp.fetch(url, options);
  // HTMLの結果を取得(引数のcharsetは設定したほうが良い)
  var content = response.getContentText("UTF-8");

  var res_data = JSON.parse(content)[0].newest_events;
  Logger.log(res_data);
  setData({
    temperature: res_data['te'].val,
    humidity: res_data['hu'].val,
    llluminance: res_data['il'].val,
    human_sensor: res_data['mo'].val
  });
}

//現在の時刻を取得する関数
function getNowDate() {
  var d = new Date();
  return String(Utilities.formatDate(d, 'JST', 'yyyy-MM-dd HH:mm'));
}

//スプレッドシートに書き込む関数
function setData(data) {
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★
  //スプレッドシートのIDとシート名を入力
  //スプレッドシートのIDは https://docs.google.com/spreadsheets/d/○○○/
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ↑この○○○の部分です。
  var spreadsheet = SpreadsheetApp.openById('');
  var sheet = spreadsheet.getSheetByName('シート1');
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  var last_row = sheet.getLastRow() + 1;

  sheet.getRange(last_row, 1).setValue(getNowDate());
  sheet.getRange(last_row, 2).setValue(data.temperature);
  sheet.getRange(last_row, 3).setValue(data.humidity);
  sheet.getRange(last_row, 4).setValue(data.llluminance);
  sheet.getRange(last_row, 5).setValue(data.human_sensor);

}

以下のようにgetRemoDataを選択し、左の「▶」ボタンを押すと、いろいろとポップアップが出てくるので承認なりしてあげてください。

スクリーンショット 2019-10-14 午前1.19.42.png

成功すると以下のようにシートに値が入力されているはずです。
スクリーンショット 2019-10-14 午前1.22.04.png

時間主導型トリガーを設定する

スクリプトエディタから[編集]→[現在のプロジェクトのトリガー]を選択

スクリーンショット 2019-10-14 午前1.23.22.png

トリガーを追加ボタンがあるので、クリック
スクリーンショット 2019-10-14 午前1.24.25.png

トリガーを以下のように設定すると、決まった時間間隔でコードが実行され、シートに書き込まれる
スクリーンショット 2019-10-14 午前1.25.21.png

しばらく放置して以下のようになれば成功です!!
スクリーンショット 2019-10-14 午前1.26.12.png

9
13
0

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
9
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?