거실이 더워지면 알림 이메일 수신(Nature Remo Cloud API와 Google 서비스 연결)
소개
Google 데이터 포털에서 거실의 조도, 온도, 습도를 모니터링하고 1시간마다 로그를 육안으로 확인할 수 있도록 했으므로 이번에는 일정 온도가 되면 메일 알림을 받을 수 있도록 해 보았습니다.
이제 거실의 재료를 보호할 수 있습니다.
이번 목표
감시하고 있는 환경이, 일정 온도 이상이 되면 현재의 온도와 환경 감시 대시보드의 링크 정보가 들어간 메일을 보낸다.
Nature Remo, Google 스프레드시트, G메일 순서를 보여주는 사진
준비
2019/02/11에 게시한 기사를 참조하십시오.
거실의 환경 감시 대시보드를 60분으로 만드는 방법(Nature Remo Cloud API와 Google 서비스 연계)
GAS에서 NatureRemo Cloud API 호출까지 작업을 완료하십시오.
스프레드시트에 설정 항목 추가
set 시트에 다음 항목을 추가합니다.
E1에 경고 온도, E2로 설정할 온도를 입력합니다. 예를 들어, 20℃ 이상이 되면 경보 메일을 건너뛰고 싶은 경우에는 E2에 20을 입력해 둡니다.
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℃ 이상이 되면, 자동으로 메일이 날아 왔습니다.
마지막으로
이제 거실의 온도가 뜨거워져 음식이 썩는다는 것을 막을 수 있습니다.
그래, Nature Remo 의 본령 발휘입니다. 전세계 어디에 있어도 인터넷 연결만 확보할 수 있으면 스마트폰에서 원격으로 거실 에어컨을 조작하여 실내 온도를 낮출 수 있습니다.
실은, Nature Remo 의 api를 한층 더 파내면, 일정 온도 이상으로, 지정한 리모콘을 ON으로 한다고 하는 코드 작성을 해 오토메이션화를 도모하는 것도 가능합니다만, 굳이 수동으로 원격 조작하고 있는 감을 맛보고 싶기 때문에 심플하게 해 보았습니다. (사실은 기술 부족입니다 w)
gas 개량하면 Slack이나 Microsoft Teams에의 통지도 가능합니다.
또, 다른 기사로 소개해 주신, Gmail로 시작하는 자동화 생활 를 응용하면, 완전히 다른 Google 계정으로 데이타베이스화가 가능하게 되므로, 개인적인 이용으로부터 그룹 이용에의 전개도 가능하게 됩니다. (메일을 복수 발신하면 OK)
신형 코로나 바이러스의 습도 대책(온도를 습도로 해, 가습기를 원격 조작)에도 이용할 수 있다고 생각하므로, 여러가지 만져 봐 주세요.
참고 및 관련 링크
참고 : 【GAS】Google 스프레드시트에서 마감일 알림 이메일을 보내는 방법
관련: 거실의 환경 감시 대시보드를 60분으로 만드는 방법(Nature Remo Cloud API와 Google 서비스 연계)
Reference
이 문제에 관하여(거실이 더워지면 알림 이메일 수신(Nature Remo Cloud API와 Google 서비스 연결)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t-chi/items/0048e19caa641338868d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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を通知する
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を通知する
}
Reference
이 문제에 관하여(거실이 더워지면 알림 이메일 수신(Nature Remo Cloud API와 Google 서비스 연결)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/t-chi/items/0048e19caa641338868d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)