TENKitとGoogle Apps Scriptの連携(家電操作編)


本記事は、TENKit の応用的な利用について説明いたします。
事前に基礎編「 TENKitとGoogleスプレッドシートの連携(簡単記録編)」をご確認いただきますようお願いします。

TENKit (テンキット)は「テンキー」を「IoT」化するキットです。
TENKit では、テンキーで入力された「数字」と、Googleスプレッドシートなどクラウド上のサービスを簡単に結びつけることができます。

ここでは、TENKit の応用的な利用として、スマートリモコン機能を提供する Nature Remo と連携し、家電を操作する方法について説明します。
具体的には、テンキーで「0」を入力すると、テレビがオン/オフする例について記載します。

Nature Remo は、スマートフォンやスマートスピーカーを通じて家電を操作可能にするスマートリモコンです。
Nature Remo では、Nature Remo Cloud API を提供しており、このAPIを利用することで、外部から Nature Remo が提供するサービスの一部が利用できるようになります。

本手順では、TENKit からの入力をGoogle Apps Scriptを通じて取得し、そこから Nature Remo Cloud API を通じてテレビを操作します。

本手順をマスターすると、Nature Remo Cloud API を通じて多様な Nature Remo のサービスを利用でき、様々な家電連携を実現することができます。

設定前の準備

Nature Remo との連携を設定する前に、以下の項目を確認してください。

1. 基礎編をマスター

事前に基礎編「 TENKitとGoogleスプレッドシートの連携(簡単記録編)」をご確認いただき、TENKitの基本的な利用方法についてマスターしていただくようお願いします。

2. Nature Remo のセットアップ

Nature Remo をセットアップし、利用できるようにしてください。
また、テレビと連携させ、スマートフォン等からテレビのオン/オフが行えるようにしておいてください。
その際、以下のように、ボタンの一括登録に加えて、「電源」ボタンを個別に追加してください。
(一括登録の場合、APIを通じて外部から操作するためのシグナルが発行されないため)

3. Curlコマンドのインストール

設定の途中でCurlコマンドを利用します。
Windowsの方は、下記を参考にインストールをお願いします。

4. Googleスレプッドシートを開く

Googleスレプッドシート にアクセスし、新しいスプレッドシートを作成して、名前を「TENKit家電」として保存します。

このスプレッドシートを通じて、Google Apps Scriptを記載します。

連携の設定

連携の設定は、大きく以下の手順で行います。

  1. Nature Remo Cloud API にアクセスするためのアクセストークンの発行
  2. 電源ボタンを操作するためのシグナルの取得
  3. Google Apps Script から Nature Remo Cloud API にアクセス

アクセストークンの発行

まず最初に、Nature Remo Cloud API にアクセスするためのアクセストークンを発行します。
下記のサイトにアクセスし「Login」ボタンを押してください。

ログイン画面が表示されるので、Googleアカウントもしくはメールアドレスを指定してログインします。
注意点として、必ず Nature Remo で使用しているメールアドレスと同じものを使用してください。
(Nature Remo のスマホアプリで、使用しているメールアドレスを確認することができます。)

ログインが成功するとアクセストークンを発行するページが表示されます。

「Generate access token」ボタンを押すと、以下のようにアクセストークンが発行されます。

このアクセストークンは一度しか発行されず後から確認できないので、コピーして保管してください。

シグナルの取得

次に、APIを通じて電源ボタンを操作するためのシグナルを取得します。

Curlコマンドを利用して、下記のコマンドを実行してください。
「ここにアクセストークンを記載」部分を、先ほどコピーして保管したアクセストークンに置き換えてください。

$ curl -H "Authorization: Bearer ここにアクセストークンを記載" "https://api.nature.global/1/appliances"

成功すると、以下のような「id」から始まるJSONデータが取得できます。
その中に「電源」ボタンを外部から操作するためのシグナルが記載されています。
(整形されていないため大変見にくいですが、メモ帳に貼り付けて「signals」を検索するなどして、該当部分を抜き出してください)

[{"id":"24892add-aacd-410e-9358-46d...
...
"signals":[{"id":"0e22c2c6-43db-4be8-b5d9-eacca57d16be","name":"電源","image":"ico_io"}]
...
}]

上記の例では「0e22c2c6-43db-4be8-b5d9-eacca57d16be」が電源ボタンを操作するためのシグナルになるので、コピーして保管してください。

Google Apps Script

最後に、Google Apps ScriptにNature Remo Cloud APIにアクセスするコードを記載します。

Googleスプレッドシート「TENKit家電」を開き、上部の「ツール」メニューより「スクリプトエディタ」を選択し、Google Apps Scriptの編集画面を開きます。
スプレッドシートと同じく、名前(プロジェクト名)を「TENKit家電」に設定します。

元のコードを全て削除し、「コード.gs」に下記のコードを記載します。
「ここにアクセストークンを記載」部分を保管したアクセストークンに、「ここにシグナルを記載」部分を保管したシグナルに置き換えてください。

テンキーからの入力が「0」の時に、HTTPリクエストを作成してNature Remo Cloud APIにアクセスしています。

// POSTリクエストに対する処理
function doPost(e) {
  // 送信された情報の取得
  var contents = JSON.parse(e.postData.contents);
  var message = contents.message;
  var created_at = contents.created_at;

  // 「0」が押された場合  
  if(message == "0"){
    // Nature Remo Cloud APIへアクセス  
    try {
      var url = "https://api.nature.global/1/signals/ここにシグナルを記載/send";
      var options = {
        'method': 'post',
        'headers': {
          'Authorization': 'Bearer ここにアクセストークンを記載'
        }
      };        
      // HTTPリクエスト(POST/JSON形式)を実行
      var response = UrlFetchApp.fetch(url, options);
      // POST結果の取得
      var content = response.getContentText("UTF-8");

    } catch(err){
      // エラーが発生した際は、エラーの内容をスプレッドシートに書き込み
      var ss = SpreadsheetApp.getActive()
      var sheet = ss.getActiveSheet();
      sheet.appendRow([message, created_at, "error", err]);    
    }
  }
}

ここで、一旦、実行ボタン を押してコードの承認手続きを行ってください。
「このアプリは確認されていません」というアラートが表示された場合は、左下の「詳細」をクリックし、次に「TENKit家電(安全でないページ)に移動」をクリックして承認手続きを実行してください。

承認手順実行後に、「postDataを読み取れません」というエラーが発生しますが、問題ありませんので、そのまま公開手続きに進みます。

コードの公開

コードを公開し、Webhook用のURLを作成します。
Google Apps Scriptの編集画面の「公開」メニューより「ウェブアプリケーションとして導入」を選択します。

以下の画面が表示されるので、「アプリケーションにアクセスできるユーザー」に「全員(匿名ユーザー含む)」を選択して「導入」ボタンを押してください。

その後、以下の画面が表示されれば成功です。

最後に「ウェブアプリケーションのURL」を以下専用の設定ページで登録します。

テンキーで「0」を入力すると、テレビの電源が点いたり消えたりすれば成功です。

最後に

本手順では、TENKit の応用的な利用として、スマートリモコン機能を提供する Nature Remo と連携し、家電を操作する方法について説明しました。

これにより、Nature Remo Cloud API を通じて多様な Nature Remo のサービスを利用でき、様々な家電連携を実現することができます。

どのように利用するはかアイデア次第です。面白い使い方を是非発見してください。