kadecot api の導入と電力データアクセス方法

21
株式会社ソニーコンピュータサイエンス研究所 Kadecot API の導入と 電力データアクセス方法 大和田 株式会社ソニーコンピュータサイエンス研究所

Upload: sonycsl

Post on 12-Apr-2017

4.508 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所

Kadecot API の導入と 電力データアクセス方法

大和田 茂 株式会社ソニーコンピュータサイエンス研究所

Page 2: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

全員が持つようになるスマート家電

スマートメーター

電力会社が設置してくれるので何もする必要はない。 東京電力は2020年までに、全国でも2024年には設置が完了。 東芝製 第一号のスマートメーター

Page 3: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

スマートメーターで何ができるのか?

• 電力会社が検針に来なくてよくなる

• 頻繁に電力を計測できるため、時間帯や地域電力のひっ迫度に応じた変動料金が可能になる

• 変動料金を生かした電力プランが増えることで、生活スタイルに合わせた契約ができる

• 家電と連携して、電気代が高い時間は消費を抑えるなどが可能に

• 遠隔の生活見守りができる

Page 4: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

実際の電力データ

Page 5: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

電力の「見える化」

• このように、宅内の電力の推移を表示することを「電力見える化」と呼ぶ

• 見える化することで、自分が無意識に使っていた電力の使用状況が把握でき、節電や家族の生活パターンの理解につなげることができる

Page 6: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

Page 7: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

ユーザー自身がサービスを作ろう!

http://lifedesign-app.org/

Page 8: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

生活デザインアプリコンテストの特徴

• デザイナー・一般生活者が対象 –プログラミングチュートリアルを行う

• 一発ネタにならないよう、1週間実際に使ってみて審査

• 審査結果はENEX2016(1/27-29)にて発表

Page 9: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所

スマートメーター情報への アクセス方法

Page 10: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所

Webから家電にアクセスするための サーバーを用いる

ECHONET Lite家電機器やセンサー、ソニー製機器、Hue、IRKitなどをブラウザからJavaScriptで制御可能 Google PlayからダウンロードしAndroidで動作 オープンソースの無料ソフトウェア 標準提供以外のプロトコルも、プラグインとして外部から追加可能

基本機能

● 接続機器一覧取得 ● 機器へのコマンド送信 ● 機器の状態取得 ● 機器の変化通知

APIサーバーKadecot

(カデコ)

Page 11: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

まずサンプル

http://kadecot.net/blog/3660/

Page 12: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

WebSocket APIの使い方 [初期化] <script src="http://g.lifedesign-app.org/js/kadecot.js"></script> <script> kadecot_init( "com.sonycsl.kadecot" , function( devs , wamp ){ // [ここに必要な処理を実装する] } , function(){ alert("Disconnected") ; } ) ; </script>

このWebページのURL引数として k=[Kadecot IP address]とすると、KadecotやμKadecotに直接接続を試みる。 URL引数kがない場合は、エミュレータが立ち上がる。

スコープという文字列。いつも同じです

接続成功時に呼ばれるコールバック

デバイスの一覧 今後のメッセージ送受信に用いるwampオブジェクト

接続切断時に呼ばれるコールバック

初期化用の関数

Page 13: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

機器一覧の例 [ { "deviceId": 1, "protocol": "echonetlite", "deviceType": "GeneralLighting", "status": true, "nickname": "GeneralLighting", "description": "GeneralLighting", "ip_addr": "192.168.10.209" }, { "deviceId": 6, "protocol": "echonetlite", "deviceType": "HomeAirConditioner", "status": true, "nickname": "HomeAirConditioner", "description": "HomeAirConditioner", "ip_addr": "192.168.10.205" } ]

デバイスID ( Kadecotサーバーがつける番号

プロトコル ( ≒プラグインID

説明文 (何が来るかわからない)

ニックネーム (Kadecotサーバ上で任意につけた名前

機器の種類名 (プロトコル内

認識されているかどうか

プロトコル固有の情報

・機器の特定は、deviceIdで行う。 ・機器の種類の特定は、protocolとdeviceTypeで行う

Page 14: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所

WAMPメッセージング概要

RPC パターン

• 機器に操作コマンドや情報リクエストを送るとサーバから返答が返ってくるというもの

• 普通の関数呼び出しに近い

PubSub パターン

• サーバが任意のタイミングで情報を出力

• あらかじめ購読登録しておいた機器に情報が伝達される

Webアプリ

Kadecot Server

呼び出し

返答

Webアプリ

Kadecot Server

購読 通知

(タイミングはサーバ側が決

める)

Page 15: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

WebSocket APIの使い方 [RPC]

// hueを点灯させるコード例 wamp.sendCall( {"deviceId":1} ,"com.sonycsl.kadecot.hue.procedure.lights.state.set" ,[] , {"on":true,"sat":255,"bri":0,"hue":46920} ,function(){} );

wamp.sendCall()という関数呼び出しを使う

↑ 「プロシージャ」と呼ばれる文字列。関数名に相当

(コールバック関数。この例では使用しない)

←操作対象デバイスID

←パラメータ

wamp.sendCall( デバイスID , プロシージャ , [] , パラメータ , コールバック ) ;

Page 16: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

WebSocket APIの使い方[PubSub]

• 関心がある対象(トピックと呼ぶ)を指定し、コールバック関数を設定するだけでOK • PubSub非対応機器もある(トピックが存在しない) • トピックは機器ごとに設定されているわけではなく、同じ種類の機器全てからコールバックを受け取ってしまうので、自分が興味のある機器からのメッセージかを判別する必要がある

wamp.sendSubscribe( {} ,"com.sonycsl.kadecot.echonetlite.topic.HomeAirConditioner.OperationStatus" ,function(r){ console.log('Value changed :’+JSON.stringify(r)); if( r[4].deviceId != 1 ) return ; } ,function(){ console.log('Subscribed : '+JSON.stringify(arguments)); } );

// ↓「トピック」

// コールバック1:機器が値をPublishしたときに呼ばれる(都度

// コールバック2:sendSubscribeが成功したとき一度だけ呼ばれる

// 興味がない機器を除外

wamp.sendSubscribe() を用いる

Page 17: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

support.main機器Procedure com.sonycsl.kadecot.support.procedure.setLux com.sonycsl.kadecot.support.procedure.setHue com.sonycsl.kadecot.support.procedure.setSaturation com.sonycsl.kadecot.support.procedure.setTemperature ※set系は、新しい値をvalueにセットする。 com.sonycsl.kadecot.support.procedure.getLux com.sonycsl.kadecot.support.procedure.getHue com.sonycsl.kadecot.support.procedure.getSaturation com.sonycsl.kadecot.support.procedure.getTemperature com.sonycsl.kadecot.support.procedure.getPower com.sonycsl.kadecot.support.procedure.getPowerHistory ※引数としてdayを与えてもよい。-1から-99まで。

Page 18: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

support.main機器Topics

com.sonycsl.kadecot.support.topic.power com.sonycsl.kadecot.support.topic.powerHistory com.sonycsl.kadecot.support.topic.lux com.sonycsl.kadecot.support.topic.hue com.sonycsl.kadecot.support.topic.saturation com.sonycsl.kadecot.support.topic.temperature

Page 19: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

参考文献1

JSON/WAMP RPCで使用可能なプロシージャ+引数と、

WAMP PubSubで使用可能なECHONET Liteのトピックのデータベースです。

(現在PubSubが実装されているのはECHONET Lite のみです)

http://app.kadecot.net/docs/ProcTopic/

Page 20: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所

参考文献2:エミュレータ

• MoekadenRoom (MITライセンス)

– PC用のECHONET Liteエミュレータ

– http://kadecot.net/blog/1479/

Page 21: Kadecot api の導入と電力データアクセス方法

株式会社ソニーコンピュータサイエンス研究所

Thank you http://kadecot.net/

@kadecot_dev