ハムスターの温度管理

【ハムスター 温度管理】Nature Remo APIで温度情報を抽出(GAS)

この記事、もはやハムスター要素は薄いと思われてるかもしれません。今までもハムスターに関連付けして、スマート家電的なことを色々書いてましたが、特に専門性が高く気軽さが感じられないと思うかもしれません。

とはいえ、私自身、「ハムスターの生活をより安全により快適」をスローガンに掲げています。こういった発信もしていきますので、お付き合いください。

温度管理を効率的に

このブログでは温度管理の効率化について、ITを利用する記事を色々書いてきました。それはなぜかというと、インターネットで検索しても、飼育書を読んでもあんまり出てこないんですよね。それなり家電に詳しかったり、ちょっとITに詳しかったりすれば、割と「こうすれば楽だよね」とか「改善できるよね」みたいなところが見つかったりします。そういった部分はどんどん発信して、認知頂けるとハムスターにとっても幸せかなと思い記事にしています。

温度管理はハムスターの命に関わる事です。そして、少し「テクノロジー」を意識してもらえるだけで、簡単に管理できるようになります。(金額的なコストも少し掛かりますが、、)

Nature RemoのAPI機能

Nature RemoはスマホアプリやIFTTT以外にもAPIによる制御が可能ですAPIを利用することにより、より柔軟に家電を制御できます

今回のブログ記事のタイトルにもあるように温度管理もより細やかに対応することができます

Nature Remoの温度センサー情報を取得して温度管理

この記事では、Nature RemoのAPI機能を利用して、温度データを定期的に収集して、スプレッドシート(Excelみたいなもの)に保管するというところまでをやっていきます。

Nature RemoのAPIことはじめ アクセストークン取得

公式ページにもあるようにAPIの認証、認可にはOAuth2を利用しますAPIを利用する際には、必ず以下のHTTPヘッダを付加する必要があります

Authorization: Bearer {TOKEN}

 

そして、APIによる制御ができるようにするためには、「アクセストークン」が必要になりますので、まずは「アクセストークン」を発行していきましょう

こちらのページからアクセストークンが発行可能です。

下記が具体的な手順になります。

Nature Remo API アクセストークン発行

アクセストークン発行ページにアクセスし、「Login」をクリックします。

https://home.nature.global/にアクセスします。

Googleでログインするかログインメールでログインするかどちらかでログインします。

APIを利用するために「許可する」をクリックします。

トークン発行ページにアクセスするために「Go」をクリックします。

Access tokensのページに遷移しますので、「+Generate access token」をクリックします。クリックすることにより、トークンが発行されますので、コピペします。

 

Nature Remo APIによる温度情報収集

温度情報をAPIで取得するためのRequest URLは下記です。

https://api.nature.global/1/devices

 

このAPIをGETするとこんな感じで情報を取得することができます。

[
  {
    "updated_at": "2019-03-03T05:42:11Z",
    "temperature_offset": 0,
    "mac_address": "XX:XX:XX:XX:XX:XX",
    "name": "リビングremo",
    "created_at": "2019-02-11T16:12:52Z",
    "serial_number": "XXXXXXXXX",
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "firmware_version": "Remo-mini/1.0.87-g8b06f0e",
    "humidity_offset": 0,
    "newest_events": {
      "te": {
        "val": 22.79,
        "created_at": "2019-03-03T11:33:36Z"
      }
    },
    "users": [
      {
        "nickname": "hamumu",
        "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "superuser": true
      }
    ]
  }
]

 

今回取得すべきちなみに温度情報は「val”: 22.79」です。

参考までにAPIで取得できる情報はこちらが詳しいです。

‎Google Apps Script (GAS)による温度情報取得

ここからは参考までにですが、無料で定期的にスクリプトを実行するために手っ取り早く温度情報を収集するためにGoogle Apps Script (GAS)を利用しました。

やることは、「収集した温度情報をスプレッドシートに反映」です。

必要になるものは、下記の2点です。

  • Nature Remo
  • Googleのアカウント

 

早速ですが、GASのコードとしてはこんな感じです。

function myFunction() {
  //nature remo 温度データGET用変数
  var remourl = "https://api.nature.global/1/devices";
  var remotoken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  var remooptions = {
    "method" : "GET",
    "headers" : {"Authorization" : "Bearer "+ remotoken},
    "contentType": "application/json",
  };
  //nature remoの温度データをGETする  
  var Postdata = UrlFetchApp.fetch(remourl, remooptions);
  //Logger.log(Postdata);
  
  //JSONパースして必要な温度データのみを抜き取る
  var Jsonp = JSON.parse(Postdata.getContentText());
  //Logger.log(Jsonp);
  var tempdata = Jsonp[0]["newest_events"]["te"]["val"];
  Logger.log(tempdata);


  //スプレッドシート変数
  var spreadsheetId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  var sheetName = "シート1";
  var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);

  //今日の日時
  var date = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm:ss');

  //スプレッドシートに日時と温度を追記
  sheet.appendRow([date,tempdata]);      
}

 

GASのコードを簡単に紹介

Nature Remoから温度情報を収集コード部分にフォーカスして紹介します。上記の全体コードのうち下記が、Nature Remoから温度情報を収集している部分になります。

function myFunction() {
  //nature remo 温度データGET用変数
  var remourl = "https://api.nature.global/1/devices";
  var remotoken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  var remooptions = {
    "method" : "GET",
    "headers" : {"Authorization" : "Bearer "+ remotoken},
    "contentType": "application/json",
  };
  //nature remoの温度データ(https://api.nature.global/1/devices)をGETする  
  var Postdata = UrlFetchApp.fetch(remourl, remooptions);
  
  //必要な温度データのみを抜き取る
  var Jsonp = JSON.parse(Postdata.getContentText());
  var tempdata = Jsonp[0]["newest_events"]["te"]["val"];
  • 変数「var remotoken」には、「Nature Remo API アクセストークン発行」で取得したアクセストークンが入ります。
  • APIを利用する際には、必ずこちらのHTTPヘッダを付加する必要があります「Authorization: Bearer {TOKEN}」
  • 「var Postdata = UrlFetchApp.fetch(remourl, remooptions);」で実際にNature Remoに対してHTTP(S) GETして温度データを含む情報を取得します
  • 必要なのは温度データのみです。最後の2行で温度データを抽出します。

なお、ここで紹介していないコードの後半部分は、GASで温度を取得した日時と温度情報をスプレッドシートに反映するという処理です

GASの実行

「時間主導型」つまり、一定間隔で先ほど作成したコードを実行するようGASのトリガーを設定していきます

とりあえず、5分おきにGASを実行するよう設定しておきます

すると下記のように5分おきにスプレッドシートに温度情報が反映されていきます。

さいごに

APIを利用できるのが、Nature Remoの強みです。今後よりプログラミングが一般されるでしょうし、この機会にAPIを利用して、より効率的にハムスターの温度管理をしてみませんか?

 

ネット通販でハムスターの飼育グッズを買うなら楽天がおすすめ

ハムスターの飼育グッズを購入するなら、楽天がおすすめです。Amazonよりも安く購入できるケースが多いです。

ハムスター飼育用品を楽天で買う理由【メリットが多い】楽天でハムスター飼育用品を買うことをおすすめします。 私はハムスターを飼い始めてからほぼ楽天で購入しています。「えっ、楽天ってシャ...

 

Amazonと楽天でハムスター用品を検索するならこちらから。Amazonは小動物カテゴリー、楽天はハムスターカテゴリーのページに遷移します。

Amazon楽天市場