SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
株式会社ソニーコンピュータサイエンス研究所
Kadecot API概要
大和田 茂
株式会社ソニーコンピュータサイエンス研究所
http://kadecot.net/webapi
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
概要
• AndroidアプリKadecot (http://kadecot.net)
のWebAPIについて解説します。
ECHONET Lite家電機器やセンサー、ソニー製機器、
Hue、IRKitなどをブラウザからJavaScriptで制御可能
Google PlayからダウンロードしAndroidで動作
オープンソースの無料ソフトウェア
標準提供以外のプロトコルも、プラグインとして外部から
追加可能
基本機能
● 接続機器一覧取得
● 機器へのコマンド送信
● 機器の状態取得
● 機器の変化通知
APIサーバー
Kadecot
(カデコ)
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
WebAPIとは?
• あるWebサービスの機能を他のWebサービス
などから利用するためのアクセスポイント
• 多くはJavaScriptから簡単に利用できるように
作られている
Google Maps API 楽天API
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
家電にもAPIがある
• Roomba, Hue, スマート体重計など
• 東芝・パナソニック・シャープなど各社ネット
対応家電
• iRemocon・IRKitなど
問題① 各社ばらばらの体系で協調動作させづらい
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
ブラウザから家電ネットワークには
直接アクセスできないことが多い
Web SSDP
ECHONET Lite
HTTP UDP/TCP
プロトコルが違う
問題② Webアプリとの連携がしづらい
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
Kadecotの提供する機能
WebAPI
アクセス仲介用
Webサーバ
ローカルWebAPI
プロトコル透過
プラグインアーキテクチャ
Web
HTTP
SSDP
ECHONET Lite
UDP/TCP
様々なプロトコルをまとめてWebに提供する仲介サーバ
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
KadecotのWeb APIは二種類
• JSONP API
– 簡単
– 低速(アクセスごとに接続切断)
– 機器からの非同期通知は受け取れない(要ポーリング)
• WebSocket API
– 高速(常時接続)
– 機器からの通知を非同期に受けとれる
– WAMPなどの前提知識が必要
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
KadecotのWeb API
• JSONP API
– 簡単
– 低速(アクセスごとに接続切断)
– 機器からの非同期通知は受け取れない(要ポーリング)
• WebSocket API
– 高速(常時接続)
– 機器からの通知を非同期に受けとれる
– WAMPなどの前提知識が必要
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
JSONP API
• JSONP : JSON with Paddingの略。
– クロスドメイン問題(後述)がない<script>タグを
用いてHTTPベースで機能の呼び出しを行う手法
– ブラウザのURLフィールドにコマンドを打ち込んで使える
• Kadecotの設定画面から、「開発者モード」にチェックを入れ
ることで使用可能になる
• セキュリティは何もなく、制約なくすべての機能が使える
⇒使用時には十分注意が必要。つけっぱなしにして忘れた
りするとかなり危険
• 後述WAMPのRPC機能のみ利用
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
ブラウザで家電を動かせる
• List
http://[Kadecot IP]:31413/jsonp/v1/devices/
• Set
http://[KadecotIP]:31413/jsonp/v1/devices/[Device ID]
?procedure=set
&params={"propertyName":“OperationStatus","propertyValue":[0x30]}
• Get
http://[KadecotIP]:31413/jsonp/v1/devices/[Device ID]
?procedure=get
&params={"propertyName":“OperationStatus"}
http://kadecot.net/blog/1633/
※Device IDはKadecotの機器アイコンに表示されています。
※procedureがSetとGetだけなのはECHONET Liteだけ
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
KadecotのWeb API
• JSONP API
– 簡単
– 低速(アクセスごとに接続切断)
– 機器からの非同期通知は受け取れない(要ポーリング)
• WebSocket API
– 高速(常時接続)
– 機器からの通知を非同期に受けとれる
– WAMPなどの前提知識が必要
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
WebSocket API
• ブラウザから使えるソケットである
WebSocketを使ったインターフェース
– WebSocket: 通常のソケット+ハンドシェイク
• ハンドシェイクが終了すれば普通のソケット
• さらに上位のプロトコル(サブプロトコル)
としてWAMP (The Web Application
Messaging Protocol)を使用
– WAMP: Webアプリ間の情報の授受方式を
定めたもの
– http://wamp.ws
UDP
WebSocket
WAMP
Kadecot
WebSock
API
株式会社ソニーコンピュータサイエンス研究所
WAMPメッセージング概要
RPC パターン
• 呼び出し元のタイミングで情報を
問い合わせたり機能の呼び出し
を行う。
• 家電リモコン機能の実装など
Activeな情報伝達に有効
• 概念的にはJSONP APIに類似
PubSub パターン
• 情報提供者が任意のタイミ
ングで情報を出力
• センサー情報の出力など
Passiveな情報伝達に有効
Caller
Callee
Call
Reply
Subscriber
Publisher
Subscribe
inadvance
Asynchronus
Notifications
(Publication)
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
WebSocket APIの使い方 [初期化]
<!-- ライブラリ読み込み 
<script type="text/javascript" src="http://app.kadecot.net/js/wamp-client.min.js"></script>
<script type="text/javascript" src="http://app.kadecot.net/js/wamp-client-browser.js"></script>
<script>
onload=function(){
//↓ WAMPオブジェクトを作る
var wampClient = new WampClientBrowser() ;
//↓ 接続成功時のコールバック
wampClient.addOpenCallback(function(){
//↓ 接続成功したら、Helloコマンドを送る
wampClient.sendHello("default", {"roles":{"caller":{},"subscriber":{}}}, function(){
// request device list
//↓ Helloが成功したら、機器一覧を得るRPCメッセージ(後述)を送る
wampClient.sendCall({}, "com.sonycsl.kadecot.provider.procedure.getDeviceList“
, null, null, function(ret){
console.log('Devlist reply! : '+JSON.stringify(arguments)) ;
//var ds = ret[4].deviceList ;
});
} ) ;
} ) ;
//↓ 接続開始
wampClient.connect("ws://[KadecotIP]:41314/");
} ;
</script>
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
WebSocket APIの使い方 [RPC]
// 機器一覧を取得するためのコード例です。
wampClient.sendCall(
{}
, "com.sonycsl.kadecot.provider.procedure.getDeviceList“
, null
, null
, function(ret){
var ds = ret[4].deviceList ;
}
);
// deviceId 1 番の機器の電源に0x30を送る
wampClient.sendCall(
{"deviceId":1}
,"com.sonycsl.kadecot.echonetlite.procedure.set"
,[]
,{"propertyName":"OperationStatus","propertyValue":[0x30]}
,function(){}
);
RPCではwampClient.sendCall()という関数呼び出しを使う
↓「プロシージャ」と呼ばれる文字列。関数名に相当
←コールバック関数(省略可
←引数なし
←プロシージャ
(コールバック関数。この例では使用しない)
←引数
←操作対象デバイス
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
WebSocket APIの使い方[PubSub]
• 関心がある対象(トピックと呼ぶ)を指定し、コールバック関数を設定
するだけでOK
• ただし、トピックは機器ごとに設定されているわけではなく、同じ種類
の機器全てからコールバックを受け取ってしまうので、自分が興味の
ある機器からのメッセージかを判別する必要がある
wampClient.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が成功したとき一度だけ呼ばれる
// 興味がない機器を除外
PubSubでは wampClient.sendSubscribe() を用いる
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
参考文献1
JSON/WAMP RPCで使用可能なプロシージャ+引数と、
WAMP PubSubで使用可能なトピックのデータベースです。
http://app.kadecot.net/docs/ProcTopic/
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
参考文献2
• Procedureに書ける文字列に
ついては、API Toolを使って
確認できる
– Kadecotのデバイス一覧画面
右下にあるAppsボタンを押す
と、アプリの一つとして表示さ
れる
– Kadecotが認識した実機器の
情報のみ表示される。対応機
器をお持ちでない方はエミュ
レータを使用してください
• KadecotのIPアドレスが必要
だが以下のURLでもアクセス
可能
http://app.kadecot.net/Apps/APITool/?kip=[Kadecot IP]
株式会社ソニーコンピュータサイエンス研究所 株式会社ソニーコンピュータサイエンス研究所
参考文献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/から公開中!
株式会社ソニーコンピュータサイエンス研究所
Thank you
http://kadecot.net/ http://moekaden.com/
@kadecot_dev @moekaden

Contenu connexe

Tendances

Tendances (11)

デバイスコネクト対応機の弊社確認結果とご相談
デバイスコネクト対応機の弊社確認結果とご相談デバイスコネクト対応機の弊社確認結果とご相談
デバイスコネクト対応機の弊社確認結果とご相談
 
2015/7/2、デバイスWebAPI(GotAPI)コンソーシアム 第一回技術WG 発表資料
2015/7/2、デバイスWebAPI(GotAPI)コンソーシアム 第一回技術WG 発表資料2015/7/2、デバイスWebAPI(GotAPI)コンソーシアム 第一回技術WG 発表資料
2015/7/2、デバイスWebAPI(GotAPI)コンソーシアム 第一回技術WG 発表資料
 
IoTの規格標準化動向とデバイスWebAPI
IoTの規格標準化動向とデバイスWebAPIIoTの規格標準化動向とデバイスWebAPI
IoTの規格標準化動向とデバイスWebAPI
 
デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方
 
スマートハウスの現状 - WebとECHONET Liteの連携に期待-
スマートハウスの現状 - WebとECHONET Liteの連携に期待-スマートハウスの現状 - WebとECHONET Liteの連携に期待-
スマートハウスの現状 - WebとECHONET Liteの連携に期待-
 
デバイス WebAPIによるスマートフォン周辺デバイスの活用
デバイス WebAPIによるスマートフォン周辺デバイスの活用デバイス WebAPIによるスマートフォン周辺デバイスの活用
デバイス WebAPIによるスマートフォン周辺デバイスの活用
 
SORACOM Discovery2019 F4 インフラ x IoT: デジタライゼーションにおける社会インフラの未来(2)
SORACOM Discovery2019 F4 インフラ x IoT: デジタライゼーションにおける社会インフラの未来(2)SORACOM Discovery2019 F4 インフラ x IoT: デジタライゼーションにおける社会インフラの未来(2)
SORACOM Discovery2019 F4 インフラ x IoT: デジタライゼーションにおける社会インフラの未来(2)
 
SORACOM Discovery2019 D3 レトロフィットと新規事業〜今ある既存の設備や施設をIoT化し、顧客に新たな価値を提供〜
SORACOM Discovery2019 D3 レトロフィットと新規事業〜今ある既存の設備や施設をIoT化し、顧客に新たな価値を提供〜SORACOM Discovery2019 D3 レトロフィットと新規事業〜今ある既存の設備や施設をIoT化し、顧客に新たな価値を提供〜
SORACOM Discovery2019 D3 レトロフィットと新規事業〜今ある既存の設備や施設をIoT化し、顧客に新たな価値を提供〜
 
node.js 版 GotAPI 実装 - node-gotapi
node.js 版 GotAPI 実装 - node-gotapinode.js 版 GotAPI 実装 - node-gotapi
node.js 版 GotAPI 実装 - node-gotapi
 
デバイスコネクト活用事例紹介
デバイスコネクト活用事例紹介デバイスコネクト活用事例紹介
デバイスコネクト活用事例紹介
 
オートモーティブアプリケーション向け SDメモリカード ATP Electronics Inc.
オートモーティブアプリケーション向け SDメモリカード ATP Electronics Inc.  オートモーティブアプリケーション向け SDメモリカード ATP Electronics Inc.
オートモーティブアプリケーション向け SDメモリカード ATP Electronics Inc.
 

Similaire à Kadecot API/Opensources for Engineers

Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
 
Android builders summit slide tour
Android builders summit slide tourAndroid builders summit slide tour
Android builders summit slide tour
magoroku Yamamoto
 

Similaire à Kadecot API/Opensources for Engineers (20)

160603 TOPPERS Conference 事例
160603 TOPPERS Conference 事例160603 TOPPERS Conference 事例
160603 TOPPERS Conference 事例
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generator
 
デバイスコネクトWebAPIの開発状況について
デバイスコネクトWebAPIの開発状況についてデバイスコネクトWebAPIの開発状況について
デバイスコネクトWebAPIの開発状況について
 
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIWindows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
 
Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介
 
Android builders summit slide tour
Android builders summit slide tourAndroid builders summit slide tour
Android builders summit slide tour
 
FIWARE Building your own IoT agent
FIWARE Building your own IoT agentFIWARE Building your own IoT agent
FIWARE Building your own IoT agent
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向
 
Node-redでプロトタイピング
Node-redでプロトタイピングNode-redでプロトタイピング
Node-redでプロトタイピング
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
 
デバイス WebAPI(GotAPI)とその活用事例のご紹介 - ワイヤレスジャパン2016
デバイス WebAPI(GotAPI)とその活用事例のご紹介 - ワイヤレスジャパン2016デバイス WebAPI(GotAPI)とその活用事例のご紹介 - ワイヤレスジャパン2016
デバイス WebAPI(GotAPI)とその活用事例のご紹介 - ワイヤレスジャパン2016
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようIBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみよう
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
de:code 2018 一挙紹介! Azure が提供する IoT 系サービスde:code 2018 一挙紹介! Azure が提供する IoT 系サービス
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
 

Plus de sonycsl

エコハウス&エコビルディングEXPO講演資料
エコハウス&エコビルディングEXPO講演資料エコハウス&エコビルディングEXPO講演資料
エコハウス&エコビルディングEXPO講演資料
sonycsl
 

Plus de sonycsl (20)

SEJ 2016 in Osaka Talk
SEJ 2016 in Osaka TalkSEJ 2016 in Osaka Talk
SEJ 2016 in Osaka Talk
 
家のIoT・スマートハウス・おうちハック
家のIoT・スマートハウス・おうちハック家のIoT・スマートハウス・おうちハック
家のIoT・スマートハウス・おうちハック
 
Iot stick Ideathon&Hackathon
Iot stick Ideathon&HackathonIot stick Ideathon&Hackathon
Iot stick Ideathon&Hackathon
 
第三回生活デザインコンテスト イベント・フォローアップ企画書
第三回生活デザインコンテスト イベント・フォローアップ企画書第三回生活デザインコンテスト イベント・フォローアップ企画書
第三回生活デザインコンテスト イベント・フォローアップ企画書
 
SEJ 2016 in Osaka KAITとの共同出展ご案内
SEJ 2016 in Osaka KAITとの共同出展ご案内SEJ 2016 in Osaka KAITとの共同出展ご案内
SEJ 2016 in Osaka KAITとの共同出展ご案内
 
151227-LockOff SmartMeter Hands-on
151227-LockOff SmartMeter Hands-on151227-LockOff SmartMeter Hands-on
151227-LockOff SmartMeter Hands-on
 
Api
ApiApi
Api
 
151119 iotlt-talk
151119 iotlt-talk151119 iotlt-talk
151119 iotlt-talk
 
Processing.jsでおうちハック shorter version
Processing.jsでおうちハック shorter versionProcessing.jsでおうちハック shorter version
Processing.jsでおうちハック shorter version
 
Processing.jsでおうちハック
Processing.jsでおうちハックProcessing.jsでおうちハック
Processing.jsでおうちハック
 
HEMS Printer
HEMS PrinterHEMS Printer
HEMS Printer
 
JS Board Shibuya もくもく会#2
JS Board Shibuya もくもく会#2JS Board Shibuya もくもく会#2
JS Board Shibuya もくもく会#2
 
やろうぜ!おうちハック at IOT LT #6 Talk
やろうぜ!おうちハック at IOT LT #6 Talkやろうぜ!おうちハック at IOT LT #6 Talk
やろうぜ!おうちハック at IOT LT #6 Talk
 
やろうぜ!おうちハック(@ヒカ☆ラボ レバレジーズ様 資料)
やろうぜ!おうちハック(@ヒカ☆ラボ レバレジーズ様 資料)やろうぜ!おうちハック(@ヒカ☆ラボ レバレジーズ様 資料)
やろうぜ!おうちハック(@ヒカ☆ラボ レバレジーズ様 資料)
 
おうちハック同好会
おうちハック同好会おうちハック同好会
おうちハック同好会
 
おうちハック体験会 スライド資料
おうちハック体験会 スライド資料おうちハック体験会 スライド資料
おうちハック体験会 スライド資料
 
Kadecot APIs overview
Kadecot APIs overviewKadecot APIs overview
Kadecot APIs overview
 
エコハウス&エコビルディングEXPO講演資料
エコハウス&エコビルディングEXPO講演資料エコハウス&エコビルディングEXPO講演資料
エコハウス&エコビルディングEXPO講演資料
 
ENEX2015/Energy Design Competition 振り返り
ENEX2015/Energy Design Competition 振り返りENEX2015/Energy Design Competition 振り返り
ENEX2015/Energy Design Competition 振り返り
 
Energy Design Competition 作品応募と制作の手引き
Energy Design Competition 作品応募と制作の手引きEnergy Design Competition 作品応募と制作の手引き
Energy Design Competition 作品応募と制作の手引き
 

Kadecot API/Opensources for Engineers