2015年2月18日水曜日

IoTを実現するGoogle Nest APIでスマートホーム開発環境を整える

nestとはサーモスタットのように人々に愛されていない器械に焦点を当て、これをリデザインし合理的なデザインかつ利便性の向上を果たした次世代のサーモスタットです。現在Nest Developer Programとしてnestを操作するためのAPIが公開されており、本文書ではnestについての説明を日米の冷暖房文化の違いを交えて説明した上で開発環境の構築方法について解説します。

PDFがこちらからダウンロード出来ます。
http://www.brilliantservice.co.jp/bril-tech-blogspot/nest_develop_environment.pdf

nestはサーモスタットです

Nest Learning Thermostat(以降nest)とはネスト・ラボが開発したサーモスタットです。ネスト・ラボとは、アップルに在籍し、iPodの開発チームとして知られるトニ・ファデルが共同創業者として立ち上げた会社として知られています。
nestはサーモスタットの再発明と言っても良いでしょう。いままで当たり前に存在していたものですがそこにインターネットと各種センサーを結びつけ、新たな価値を見いだしたのです。
といっても日本に住む我々にはいまいちピンとこない部分もあります。まずは「サーモスタット」とはなんであるかを説明し、さらに米国と日本の冷暖房事情について説明しましょう。

サーモスタットとは

サーモスタットとは、温度を調整する装置です。

“工業生産,実験などの操作を一定温度のもとで行うため,また住宅の室温を快適にするため,特定の個所,容器の温度を長時間,一定に保つようにする装置。またこれを備えた容器 (恒温槽) 。気体 (トルエン) ,液体 (水銀) などの熱膨張を利用,またはバイメタル,サーミスタを用い,温度が変ると継電器でクーラーまたはヒータを作動させる。”
出典|ブリタニカ国際大百科事典


つまり、熱膨張を利用してスイッチをONにしたりOFFにしたりして、温度調整をする器械、これがサーモスタットなのです。

米国の冷暖房事情

アメリカの一般家屋は日本と違い、全館冷暖房(セントラルヒーティング)が一般的で、日本でよくみられるエアコンはほとんど使われません。多くの家庭では地下室などにガス炉がありここで暖めた吸気をファンで各部屋に運ぶ仕組みになっています。壁や天井、床下にダクトが張り巡らされており、部屋の床面や天井に吹き出し口があります。人がいない部屋もすべて暖房で暖められる仕組みなのです。冷風も同じく、ファンで各部屋に送られます。
そのため、温度の設定は家屋のどこかに設置されたサーモスタットを通して行います。このサーモスタットは古いタイプだとONとOFF、それに温度の設定しか行えません。温度の設定も小さなバーを動かす原始的なもので、微妙な温度設定が難しいものもあります。新しいタイプだと時間が来たら温度を上げる・下げるといった操作が出来るものもあるのですが、あまり使い勝手のよいものではないようです。
そもそも電気代の安い米国では24時間つけっぱなしという家庭も多いようです。

日本の冷暖房事情

日本では全館冷暖房がある家は少なく、多くは各部屋にエアコンと室外機をセットで設置する場合がほとんどです。エアコンはそれぞれ独立しており、各部屋に置かれたリモコンで操作するのが一般的。人がいる部屋だけを暖める事が多く、出かけるときにはこまめにエアコンの電源を切るのが普通です。そのため日本では「サーモスタット」といわれてもピンと来ないのです。

IoTの本命、スマートホーム

近年注目を集めているIoT(Internet of Things)の本命といえば、「ウェアラブルデバイス」「車」そして「スマートホーム」でしょう。現在この3つがIoTの本命と有力視されています。
その「スマートホーム」にGoogleが本気を見せています。Googleは2014年6月、ネスト・ラボを買収。買収額はなんと32億ドル。現在では「Works with Nest」としてnestをスマートホームの「ハブ」として位置づけています。nestのサーモスタットを使えば、Google Nowを通じて温度調節が出来るようになります。
今まで、スマートホームの普及の上で大きな問題は、家電メーカーごとに定められた仕様により、同じメーカー間でしか連携が出来ないというフラグメンテーションが発生している点があげられます。nestは家電メーカー発ではないためそのようなことはなく、普及を後押しするでしょう。
ただし、前述の日本の冷暖房事情の通り、各部屋にエアコンを設置する日本家屋の文化からすると、nestがそのまま日本で発売され普及するにはしばらくかかりそうです。
日本での普及は見込めないにしても、欧米諸国でヒットするポテンシャルを秘めているスマートホームのnestは今後欧米で急速に普及する可能性があるため、海外市場を見据えて今からスマートホームの動向もしっかりと押さえておきたいところです。

nest開発にあたっての情報源

2014年6月、ネスト・ラボは「Nest Developer Program」を発表。nest製品とサードパーティ製の製品やサービスとの連携を可能にしました。
Nest APIを使用し、nestの情報を取り出したりnestをコントロールしたりする事が可能になったのです。
今回実際に開発環境を構築したので解説したいと思います。
今回nestでの開発環境を構築するにあたり日本語の情報源はほとんど存在しません。素直にnestのホームページで情報を得るのが得策でしょう。以下に参考にしたURLを記載しておきます。
https://developer.nest.com/documentation/cloud/nest-api-intro

nestの能力

以下にnestの仕様について記載します。nestには独自の人工知能が搭載されており、家に人がいる時間帯を自動で学習します。そのためのセンサー類が搭載されています。

LCDディスプレイ

320x320ピクセルの丸形ディスプレイ

対応言語

英語・フランス語・スペイン語

センサー類

温度センサー
湿度センサー
近接場活動センサー
遠距離場活動センサー
光センサー

Wi-Fi

802.11b/g/n @ 2.4GHz
802.15.4 @ 2.4GHz

nestを起動する

nestは基本的に既存のサーモスタットの置き換えです。交流24vのサーモスタットに対応しています。そのため交流24Vを電源として動作します。HVAC(冷暖房空調設備)自体の内部構造に詳しくありませんが、HVACではおそらく交流24Vの接触機を使い交流120V(米国)をON、OFFする仕組みが一般的ではないかと思われます。
nestの裏側を見るといくつもの端子があります。使用中のサーモスタットを取り外し、サーモスタットに繋がっていたケーブルをこのnest裏側の端子に接続変更すれば設置は完了です。次のURLより、自宅の冷暖房設備がnestに対応しているか確認する事が出来ます。
https://nest.com/thermostat/installation/#works/?mode=buy
また、wikiを見ると一般的なサーモスタットの配線に関する情報を得る事が出来ます。
http://en.wikipedia.org/wiki/Thermostat
RH(24 volt HEAT)およびW(Heat)に24VACを供給すると、nestの内蔵バッテリーに電源が供給されます。
しかしながら、日本でnestを充電し起動するための交流24Vを得る事自体が以外に難しい。Amazonで購入出来るものはほとんどがAC/DCアダプタであり、AC/ACアダプタ、それも24VACのものとなると、私の知る限りでは下記の製品のみです。
http://www.amazon.co.jp/gp/product/B001876Y0Y/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B001876Y0Y&linkCode=as2&tag=emboss-22
しかし、単純にnestを起動してみたいのであれば、nestの電源を入れるだけであれば背面にあるサービス用USBポートを使えば良いようです。
https://nest.com/support/article/What-s-the-mini-USB-port-on-the-back-of-the-display-for
上記URLにある通り、nestは通常HVACのケーブルから給電しますがUSBポートを使用すれば迅速に充電する事が出来るようです。

nest開発環境構築

それでは実際にnestを操作するサンプルアプリケーションを動作させてみましょう。今回の目標は、nestの提供するiOSサンプルを動作させる事です。
日本ではnestをHVACへ接続する環境が気軽に準備出来ないため、nest実機は使用せず、シミュレータでアプリケーションを実行します。

nest仮想環境の準備

下記URLへアクセスし、Nest Developer Toolというchromeプラグインを導入しましょう。
https://chrome.google.com/webstore/detail/nest-developer-tool/dcmagkgecphmneocilhoihpoibfddfjl

https://home.nest.com/
を開きます。まだnestのアカウントを作成していないのなら、Sine upのリンクよりE-mailとパスワードを指定してアカウントを作成します。
ログイン後、Chromeのメニューより「その他ツール」>「デベロッパーツール」を開きます。

タブよりNestを選択します。

Thermostatsの+ボタンを押してサーモスタットを追加します。

これで、アカウントに対してnestを追加出来ました。

nestクライアントの作成

まず、前提知識としてNest APIがどのように動作するか確認します。

  • サーモスタットからのデータはnestのサーバーにアップロード。
  • Nest APIが提供されており、サーモスタットにはREST、Firebaseでアクセス可能。
  • Developer Serviceを介してNest APIにアクセスすることも、iPhoneなどから直接Nest APIを呼ぶことも可能。
  • OAuth2.0で認証。

https://developer.nest.com/clients/
よりクライアントを作成します。最初は次の画像のようにクライアントは作成されていません。REGISTER NEW CLIENTより新しいクライアントを作成しましょう。

Clientの説明とパーミッションを設定。* の欄は必須なのでここだけ埋めいきます。また、今のところテスト目的なのでIndividualで設定。Select up two categoriesも任意に選択。Support URLは任意に記載します。テストなのでパーミッションはすべてONのread/writeにしておきます。説明も適当に記載。
注意点として「OAuth Redirect URI(Leave blank for PIN-based authorization)」任意のhttps:// のURLを記載します。記載がないとOAuth2の認証処理が動作しません。

iOSサンプルのダウンロードと設定

今回のiOS実行環境は以下の通りです。

  • mac OS X 10.10.1(yosemite)
  • Xcode 6.1.1

それでは、サンプルを入手しましょう。
https://developer.nest.com/documentation/cloud/ios-nestdk
よりiOS-NestDK-master.zipをダウンロードして展開します。
iOS-NestDK.xcodeprojを実行します。このアプリはサーモスタットのコントロールのデモンストレーションです。Readmeに記載されている通り、まず、Constants.mを開き、`NestClientID`, `RedirectURL`及び `NestClientSecret` を
https://developer.nest.com/clients/
に表示されている値に書き換えて実行します。

nestをコントロールしてみる

それでは実行しましょう。次のような画面が表示されれば成功です。

次にブラウザでhttps://home.nest.com/を開いてみます。

現在の温度は華氏70度、設定温度は58度です。iOSの画面と同じ値を表示しています。
ではここでiOSから設定温度を80度に設定します。

すると、直ちにnestにも反映されます。

今度は、温度が下がってきた場合をテストしてみましょう。Nest Developer Toolで室温が華氏82度になったと仮定し設定を行います。

すると、iOS側にも自動的に反映され、室温が82度(摂氏27度ぐらい)になります。

総括

nestで出来る事

Nest Learning Thermostatではnest APIで次の操作が行えます。
  • 現在の温度を確認
  • 設定温度の表示および設定
  • ファンのタイマー設定
  • 温度モードの表示及び設定
  • 湿度の確認
  • オンライン状態と最後の接続情報を表示

最後に

これでnestを自由に操作出来るようになりました。なにかと面倒なOAuth2処理ですが、今回の検証ではnestのサンプルプログラムが充実しており、気軽に始められることが判りました。今回は触れなかったのですがnode.jsを使用したwebアプリも試し、こちらもiOS同様サンプルがしっかりしていたため、すぐにwebサービスを開発し始めることも可能でしょう。
そうなるとあとは、あなたがnestで何をするかです。例えばメルセデス・ベンツでは車の中からnestで空調を制御出来ます。ワールプールの洗濯機はnestと通信し、出掛けているならより低い温度で長時間乾燥する事で電気料金を節約します。このように車と家電、家電と家電が連携し、更なる価値を創造する事が出来るのです。生活をちょっと便利にするスマートホーム。是非あなたの手ですばらしいサービスを造り上げて下さい。

免責事項

本資料に掲載された情報は、より多くの方々にnestを知っていただき、技術に触れ、役立てて頂くことを目的としたものです。
本資料に掲載された情報の利用にあたっては各自の判断に基づき行うものとし、それによって生じた一切の損害について弊社および情報提供者は一切の責任を負いません。

PDFがこちらからダウンロード出来ます。
http://www.brilliantservice.co.jp/bril-tech-blogspot/nest_develop_environment.pdf

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...