Api
- 10. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
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オブジェクト
接続切断時に呼ばれるコールバック
- 11. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
機器一覧の例
[
{
"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で行う
- 12. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
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 , プロシージャ , [] , パラメータ , コールバック ) ;
- 13. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
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() を用いる
- 16. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
参考文献3:オープンソース
• KadecotCore + ECHONET Lite Plugin (MITライセンス)
– Kadecotのソースコード
• OpenECHO for Java / C++ (MITライセンス)
– ECHONET Lite用クラスライブラリ(ミドルウェア)
• ECHONET Lite - Object Database (CC0:パブリックドメイン)
– CSV版ECHONET Lite機器データベース
– OpenECHOの生成に利用
– Release C
• MoekadenRoom (MITライセンス)
– PC用のECHONET Liteエミュレータ
– http://kadecot.net/blog/1479/
https://github.com/SonyCSL/から公開中!
- 22. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
JSONP API
• JSONP : JSON with Paddingの略。
– クロスドメイン問題(後述)がない<script>タグを
用いてHTTPベースで機能の呼び出しを行う手法
– ブラウザのURLフィールドにコマンドを打ち込んで使える
• Kadecotの設定画面から、「開発者モード」にチェックを入れ
ることで使用可能になる
• セキュリティは何もなく、制約なくすべての機能が使える
⇒使用時には十分注意が必要。つけっぱなしにして忘れた
りするとかなり危険
• 後述WAMPのRPC機能のみ利用
- 23. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
ブラウザで家電を動かせる
• List
http://[Kadecot IP]:31413/jsonp/v1/devices/
• Set
http://[KadecotIP]:31413/jsonp/v1/devices/[Device ID]
?procedure=set
¶ms={"propertyName":“OperationStatus","propertyValue":[0x30]}
• Get
http://[KadecotIP]:31413/jsonp/v1/devices/[Device ID]
?procedure=get
¶ms={"propertyName":“OperationStatus"}
http://kadecot.net/blog/1633/
※Device IDはKadecotの機器アイコンに表示されています。
※procedureがSetとGetだけなのはECHONET Liteだけ
- 24. 株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
WebSocket API
• ブラウザから使えるソケットである
WebSocketを使ったインターフェース
– WebSocket: 通常のソケット+ハンドシェイク
• ハンドシェイクが終了すれば普通のソケット
• さらに上位のプロトコル(サブプロトコル)
としてWAMP (The Web Application
Messaging Protocol)を使用
– WAMP: Webアプリ間の情報の授受方式を
定めたもの
– http://wamp.ws
UDP
WebSocket
WAMP
Kadecot
WebSock
API