今回はGoogle Apps Script(GAS)を使い、Androidスマートフォンのアラームと部屋の電気を連動させる方法をご紹介します。
コードをコピーして簡単にできるので、Nature製品をお持ちの方はぜひ試してみてください。
必要なもの
- googleアカウント
- 部屋のライトを登録したNature Remo
- Androidスマートフォン
Nature Remo APIへの登録
https://api.nature.global/login にアクセスし、Natureアカウントに登録しているメールアドレスでログインします。
Access tokens一覧より「Generate access token」を選択し、アクセストークンを作成します。
アクセストークンは一度しか表示されないため、忘れずにコピーしましょう。(クリップボードの履歴はWindowsの場合[Win] + [V]キーで確認できます)
Google Apps ScriptでAPIを作成
Google Apps Script(GAS)ではGET、POSTメソッドのAPIを作成する機能が提供されています。
Googleドライブの任意の場所に新しいGASファイルを作成しましょう。特にディレクトリにこだわりがなければ、ここから作成できます。
・ライトのシグナルIDを取得する
操作するデバイス(信号)のIDを特定します。以下のコードを入力してください。
function findSignalId() {
apiAccessKey = 'コピーしたアクセスキー'
baseURL = 'https://api.nature.global/1'
headers = {
'Authorization' : 'Bearer ' + apiAccessKey,
'accept' : 'application/json',
'Content-Type' : 'application/x-www-form-urlencoded',
}
options = {
'method' : 'GET',
'headers' : headers,
}
response = JSON.parse(UrlFetchApp.fetch(baseURL + '/appliances', options).getContentText())
response.map((device) => {
console.log('デバイス名 : ' + device['nickname'])
device['signals'].map((signal) => {
console.log(signal['name'] + " : " + signal['id'])
})
})
}
関数を実行すると、実行ログに登録された機器名と各操作のシグナルIDが出力されるので、その中からライト点灯のIDを探してコピーします。
・APIをデプロイする
先程とは別のスクリプトを作成します。左のメニューより「スクリプト」を選択してください。
以下のコードを入力します。今回はPOSTメソッドのAPIを作りたいのでdoPostメソッドを使います。
function doPost() {
apiAccessKey = 'コピーしたアクセスキー'
signalId = 'ライト点灯のシグナルID'
baseURL = 'https://api.nature.global/1'
headers = {
'Authorization' : 'Bearer ' + apiAccessKey,
'accept' : 'application/json',
'Content-Type' : 'application/x-www-form-urlencoded'
}
options = {
'method' : 'POST',
'headers' : headers,
}
response = JSON.parse(UrlFetchApp.fetch(baseURL + '/signals/' + signalId + '/send', options))
//今回は使用しませんが、APIの疎通を確認するアプリを使うとレスポンスとしてメッセージを取得できます。
message = 'ライトを点灯しました'
return ContentService.createTextOutput(message).setMimeType(ContentService.MimeType.TEXT)
}
APIをデプロイします。画面上部の「デプロイ」ボタンから「新しいデプロイ」をクリックします。
種類の選択から「ウェブアプリ」、アクセスできるユーザーの欄で必ず「全員」を選択してください。
デプロイを実行するとウェブアプリのURLが表示され、すでにAPIでライトを操作できる状態になっています。早速呼び出してみましょう。
Andriodスマートフォンに「Sleep」アプリをインストールしてセットアップ
アラームが鳴るのと同時にAPIを呼び出せるアプリ「Sleep」を使います。
[設定] > [各種サービス] > [オートメーション] の順に選択、「Webhooks」を有効化し先ほど表示されたウェブアプリのURLを入力します。このアプリからAPIの呼び出しが行われるタイミングは複数あるのですが、今回呼び出してほしいタイミングはアラームが鳴ったときだけなので、上にある「イベント」から「ALARM_ALERT_START」以外のチェックを外しておきます。
これで設定は完了です。アラームを鳴らして動作を確認しましょう。