最近あまりネタがなかったのですが、SORACOMが発売したLTE-M Buttonを使ってみたので、どんな感じで使えるかまとめてみます。
SORACOM LTE-M Buttonって?
LPWAの通信規格の一つであるLTE-Mで通信可能な、単三電池で稼働するボタンデバイスです。AmazonダッシュボタンのLTE-M版ですね。
今なら¥3,980で1年間の通信費(1500回クリック分)も込みで購入できます。個人的にはめっちゃお得な気がします。
回線はKDDIの800MHz帯のみを利用するようです。屋内まで届きやすい周波数帯のみにすることで、デバイスの小型化と利便性どちらも損なわないように作られている感じがします。ちなみに京セラ製です。製品仕様の詳細は以下をご参照ください。
SORACOM LTE-M Buttonで送れるデータ
SORACOM LTE-M Buttonで送れるパターンは3つです。
種別 | 説明 |
---|---|
シングル | 短く(1.2秒未満) 1回押す |
ダブル | 2秒以内にシングルクリックを2回行う |
ロング | 1.2秒以上押し続ける。 |
送信されるデータはJSON形式で以下のようなフォーマットの様です。こちらはSORACOMのUser Consoleで確認することができます。
{ "tags": {}, "operatorId": "ZZZZZZZZZZZZZ", "id": "button/XXXXXXXXXXXXXX", "productId": "button", "serialNumber": "XXXXXXXXXXXXXX", "status": "active", "terminationEnabled": false, "attributes": { "contractEndingTime": "2019-11-06T12:33:56Z", "firstClickTimestamp": "2018-11-06T12:33:56Z", "remainingCount": 1490 }, "lastSeen": { "batteryLevel": 1, "clickEventPropagated": true, "clickTime": "2018-11-17T03:03:41.241Z", "clickType": "SINGLE" ←ここがクリックに応じて変わる }, "createdTime": 1541508103417, "lastModifiedTime": 1541508103417 }
AWS IoT 1-clickとの連携
当然のことながらAWSにデバイスを登録して連携させることができます。これがまぁ笑っちゃうくらい便利。QRコードをスマホで読み込むだけでAWSに登録できますし、SMSの通知であれば瞬殺でできます。
使い方は以下のページをご参照ください。
AWSからLINEメッセージの送信
せっかなのでもう少しカスタマイズして何かやりたいなと思い、毎日送る帰るよLINEをボタン一つでやれないものかと思い調べたところ、すでに同じこと考えてやっている方がいたので参考にして作ってみた。
やることは2つだけです。
LINE notifyについては以下のページを参考にしてください。
LINE通知用のAWS Lanbda関数はこんな感じです。Pythonのライブラリにhttp requestを送れるライブラリがあるのでそれを使っています。LINE notifyで取得したアクセストークンは、AWS Lambda関数で使用できる環境変数に設定しています。
# -*- coding: utf-8 -*- from __future__ import print_function import os import json import requests def get_message(data): clicktype = data['deviceEvent']['buttonClicked']['clickType'] if clicktype == 'SINGLE': message = u'今日は遅くなりそうです\U0001f606' elif clicktype == 'DOUBLE': message = u'今から帰ります!\U0001f438' elif clicktype == 'LONG': message = u'飲み行ってきます!\U0001f697' else: message = u'???' return message def line_notify(msg): url = "https://notify-api.line.me/api/notify" headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']} params = {"message" : msg} r = requests.post(url, headers=headers, params=params) print(r) def lambda_handler(event, context): message = get_message(event) line_notify(message) return
このLambda関数を該当デバイスと紐づけるとこんな感じでメッセージが送られてきます。
が、結局こんなのボタンでやらないでと奥さんに言われたため運用できず頓挫・・・
最後に
大したことじゃないけど、最後に使っていて困ったこと。鞄に入れていたら、ボタンが押されてしまって誤送信されることが何度か発生したので、メッセージを通知する場合には自分に通知が行く様にしておかないと誤送信に気付かない可能性があります。また送信キャンセルもできないので、そこは十分留意する必要がありそうです。
AWSエキスパート養成読本[Amazon Web Servicesに最適化されたアーキテクチャを手に入れる! ] (Software Design plus)
- 作者: 吉田真吾,今井智明,大瀧隆太,松井基勝,冨永善視,藤原吉規,大栗宗
- 出版社/メーカー: 技術評論社
- 発売日: 2016/02/26
- メディア: 大型本
- この商品を含むブログを見る
スペシャリストが解説する Amazon Web Services 知っておきたい基礎知識 IT Leaders選書
- 作者: 佐々木大輔
- 出版社/メーカー: インプレス
- 発売日: 2016/02/20
- メディア: Kindle版
- この商品を含むブログを見る