Skip to content

Latest commit

 

History

History
94 lines (73 loc) · 3.47 KB

6.md

File metadata and controls

94 lines (73 loc) · 3.47 KB

ライトのオン/オフ

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にて確認できます。

最後に通知機能を作ります