そらのうきぶくろ

Blog - Permalink

AWS IoTボタンで、押し方と残りライフを取得してみる

先日の記事でクソプロダクトを作った話をした。
で、そういえばこのボタンって「1回押し」「2回押し」「長押し」を取得できるんじゃなかったっけ?と思い立ったので押し方によってツイート内容を変えてみる事にした。

Lambdaが実行されるときに、イベントのトリガーについての情報がexports.handlerの第一引数に贈られてくる。
まずは、そこにどんな内容が入っているのか確認してみることに。

console.log(event);

Lambdaのconsole.logで出した内容は、AWS CloudWatchで確認できる。
試しに長押ししてみたところ、内容はこんな感じだった。

{ deviceInfo: 
{ deviceId: '××××',
type: 'button',
remainingLife: 88.25,
attributes: 
{ projectRegion: 'us-west-2',
projectName: 'pilkul_delicious',
placementName: 'home',
deviceTemplateName: 'tweet' } },
deviceEvent: { buttonClicked: { clickType: 'LONG', reportedTime: '2018-07-12T04:31:16.874Z' } },
placementInfo: 
{ projectName: 'pilkul_delicious',
placementName: 'home',
attributes: {},
devices: { tweet: '××××' } } }

××××はデバイスの識別情報なので割愛。
これにより、どうやらボタンの押し方についてはevent.deviceEvent.buttonClicked.clickTypeに格納されているようだ。
1回押しがSINGLE、2回押しがDOUBLE、長押しだとLONGになるようだ。
ついでに、ボタンの寿命、いわゆる残りライフもevent.deviceInfo.remainingLifeで取得できる事が分かったので、面白そうだからこれもツイート内容に取り入れる。

そんなわけで、ツイート内容を設定する処理をこんな感じに修正した。

  let date = new Date();
  let dateString = moment(date).format('YYYY/MM/DD HH:mm:ss');
  let exp = (event.deviceEvent.buttonClicked.clickType == 'LONG') ? 'たくさん' : '';
  let life = `残りライフ:${event.deviceInfo.remainingLife}%`;
  let tweet = `ピルクルを${exp}飲みました!ピルクルおいしい!(${dateString}) #PilkulDelicious ${life}`;

これで新たなピルクルおいしいライフを!

プログラミング | 君はコメントしてもいいししなくても良い

AWS IoTボタンで、押し方と残りライフを取得してみるへのコメント (0)

コメントを書く


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>