DeviceConnectの基本的な使い方は分かってきたかと思います。Web APIから紹介します。ライトAPI - DeviceConnect Usersに詳しく説明があります。
POST /gotapi/light
キー | 必須 | 型 | 場所 | 説明 |
---|---|---|---|---|
serviceId | ✓ | 文字列 | クエリー | サービスIDを指定します |
accessToken | ✓ | 文字列 | クエリー | 取得したアクセストークン |
lightId | ✓ | 文字列 | クエリー | 照明デバイスのID |
color | ✓ | 文字列 | クエリー | 照明の色。RGBで指定。 |
brightness | ✓ | 文字列 | クエリー | 輝度。0.01〜1の間で指定 |
flashing | 文字列 | クエリー | 点滅させる場合。ms単位でカンマ区切りで指定。 |
DELETE /gotapi/light
キー | 必須 | 型 | 場所 | 説明 |
---|---|---|---|---|
serviceId | ✓ | 文字列 | クエリー | サービスIDを指定します |
accessToken | ✓ | 文字列 | クエリー | 取得したアクセストークン |
lightId | ✓ | 文字列 | クエリー | 照明デバイスのID |
ライトのオン #lightOn
、ライトのオフ #lightOff
のそれぞれクリックした際のイベントを次のように実装します。バイブレーションとほとんど変わりませんが、引数が追加されています。
// ライトをオンにする処理
'#lightOn click': function(e) {
this.dcLogic.light(true)
.then(function(message) {
alert(message);
})
.fail(function(error) {
alert(JSON.stringify(error));
});
},
// ライトをオフにする処理
'#lightOff click': function(e) {
this.dcLogic.light(false)
.then(function(message) {
alert(message);
})
.fail(function(error) {
alert(JSON.stringify(error));
});
},
ロジックの処理は次のようになります。URLはどちらも /gotapi/light
なので、プロファイルだけ使います(setAttributeは使いません)。そしてデバイスをhostとして特定し、アクセストークンを設定します。
オン/オフによってメソッドが異なりますので、その点だけ処理が変わります。
// ライトのオン、オフ
light: function(status) {
var dfd = this.deferred();
var service = this.findService("host");
var builder = new dConnect.URIBuilder();
builder.setProfile("light");
builder.setServiceId(service);
builder.setAccessToken(this.__accessToken);
var uri = builder.build();
var method = status ? 'post' : 'delete';
dConnect[method](uri, null, null, function(json) {
dfd.resolve("処理成功しました");
}, function(errorCode, errorMessage) {
dfd.reject({
errorCode: errorCode,
errorMessage: errorMessage
});
return dfd.promise();
},
できあがると、ボタンを押してライトのオン、オフができるようになります。なお、Androidの機種によってはサポートされていないので注意してください。
今回のコードは deviceconnect-handson/6 at master · hifivemania/deviceconnect-handson にて確認できます。また、実際に動いているデモはこちらのURLにて確認できます。