0
8

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

リビングが暑くなるとアラートメールを受信する(Nature Remo Cloud APIとGoogleサービス連携)

Last updated at Posted at 2020-03-13

はじめに

Googleデータポータルでリビングの照度、温度、湿度を監視し、1時間おきのログを目視的に確認できるようにしたので、今回は一定の温度になったらメール通知を受け取れるようにしてみました。
これで、リビングの食材を守ることができます。

今回のゴール

監視している環境が、一定温度以上になれば現在の温度環境監視ダッシュボードのリンク情報の入ったメールを送る。
image.png
Nature Remo、Googleスプレッドシート、Gメールの順を現した写真

準備

2019/02/11に投稿した記事を参照ください。
リビングの環境監視ダッシュボードを60分で作る方法(Nature Remo Cloud APIとGoogleサービス連携)

GASでNatureRemo Cloud APIを呼び出すまでの作業を完了させてください。

スプレッドシートに設定項目追加

setシートに次の項目を追加します。
E1にアラート温度、E2に設定する温度を入力します。例えば、20℃以上になるとアラートメールを飛ばしたい場合は、E2に20を入力しておきます。
image.png

gas編集

ソースコードにアラートを飛ばすためのコードを追加します。
ツール、スクリプトエディタの順にエディタを起動させます。
function setLaremoData(data, row)にメールを送るコードを追加します。


var alert = SpreadsheetApp.openById(spreadsheetId).getSheetByName('set').getRange("E2").getValue()//アラート設定温度
  var ondo = SpreadsheetApp.openById(spreadsheetId).getSheetByName('set').getRange("A2").getValue() //現在の温度
  if(alert <= ondo){//アラート設定温度を現在の温度が超えた場合の条件式
GmailApp.sendEmail('***************@gmail.com',//アラートを知らせるメールアドレス
                         '【環境監視アラート】',
                         '■現在の温度:' + ondo+ '\n■url:https://datastudio.google.com/reporting/***************');//ダッシュボードのURL
    }//現在の温度と、環境監視ダッシュボードのurlを通知する

次の通り修正しました。
setシートのE2の設定温度以上になれば、現在の温度と、前回作成したダッシュボードのURLをメールする内容にしています。

ソースコード

var access_token = '***************'//←トークンを入れる
var spreadsheetId = '*****************'//←スプレッドシートのIDを入れる
function remo() {
  var data = getNatureRemoData();    //data取得
  var lastData = getLastData();     //最終date取得
  setLaremoData(
  {
    te:data[0].newest_events.te.val,  //温度
    hu:data[0].newest_events.hu.val,  //湿度
    il:data[0].newest_events.il.val,  //照度
  },
  lastData.row + 1//最終data追加作業
  );
}
 
function getNatureRemoData() {      //Remoのapiをお借りします
  var url = "https://api.nature.global/1/devices";
  var headers = {
    "Content-Type" : "application/json;",
    'Authorization': 'Bearer ' + access_token,
  };
 
  var postData = {
 
  };
 
  var options = {
    "method" : "get",
    "headers" : headers,
  };
 
  var data = JSON.parse(UrlFetchApp.fetch(url, options));
  Logger.log(data[0].newest_events)
  Logger.log(data[0].newest_events.te.val)
  Logger.log(data[0].newest_events.hu.val)
  Logger.log(data[0].newest_events.il.val)
 
  return data;
  
}
 
function getLastData() {
  var datas = SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getDataRange().getValues()  //logシートをゲットする
  var data = datas[datas.length - 1]
 
  return {
    totalpoint:data[1],
    coupon:data[2],
    row:datas.length,
  }
}
 
function setLaremoData(data, row) {
  SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 1).setValue(new Date())//A2にゲットした日時ほりこむ
  SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 2).setValue(data.te)  //B2に温度追加
  SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 3).setValue(data.hu)  //C2湿度追加(幅があるけど気にしない)
  SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 4).setValue(data.il)  //D2照度追加
  
  var alert = SpreadsheetApp.openById(spreadsheetId).getSheetByName('set').getRange("E2").getValue()//アラート設定温度
  var ondo = SpreadsheetApp.openById(spreadsheetId).getSheetByName('set').getRange("A2").getValue() //現在の温度
  if(alert <= ondo){//アラート設定温度を現在の温度が超えた場合の条件式
GmailApp.sendEmail('***************@gmail.com',//アラートを知らせるメールアドレス
                         '【環境監視アラート】',
                         '■現在の温度:' + ondo+ '\n■url:https://datastudio.google.com/reporting/***************');//ダッシュボードのURL
    }//現在の温度と、環境監視ダッシュボードのurlを通知する
  
}

メール

リビングが設定した20℃以上になれば、自動でメールが飛んできました。
image.png

最後に

これで、リビングの温度が熱くなって食べ物が腐るなんてことを防ぐことができます。
そう、**Nature Remo**の本領発揮です。世界中どこにいても、インターネット接続さえ確保できれば、スマホから遠隔でリビングのエアコンを操作して室温を下げることができるのです。
実は、Nature Remoのapiをさらに掘り下げると、一定温度以上で、指定したリモコンをONにするといったコード作成をしてオートメーション化を図ることも可能なのですが、あえて手動で遠隔操作してる感を味わいたいのでシンプルにしてみました。(本当は技術不足ですw)
gas改良するとSlackとかMicrosoft Teamsへの通知も可能です。
また、別記事で紹介させていただいた、Gmailから始める自動化生活を応用すれば、全く別のGoogleアカウントでデータベース化が可能になりますので、個人的な利用からグループ利用への展開も可能になります。(メールを複数発信すればOK)
新型コロナウイルスの湿度対策(温度を湿度にして、加湿器を遠隔操作)にも利用できると思いますので、色々いじってみてください。

参考と関連リンク

参考:【GAS】Googleスプレッドシートから期日アラートメールを送る方法
関連:リビングの環境監視ダッシュボードを60分で作る方法(Nature Remo Cloud APIとGoogleサービス連携)

0
8
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
0
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?