SORACOM LTE-M Button のサンプルコード集 "j3tm0t0/1-click" を使いこなす
SORACOM LTE-M Button powered by AWS (以下 Button ※) のアドベントカレンダーのバックアップ担当 ソラコム松下(Max) です。
Button を本格的に使うためには AWS Lambda を使ってコードを書く必要がありますが、サクっと使いたい!と思ってる方にはハードルになっているようです。
そんな中、同じくソラコムのなかのひと j3tm0t0 が j3tm0t0/1-click というリポジトリで以下のサービスとの連携をするためのコードを公開してくれています。
今回は使い方をサクッと紹介していきます。
- AWS IoT Core を MQTT ブローカーとして使う
- AWS IoT Core の Device Shadow を更新する
- Amazon CloudWatch のメトリクスに送信する
- IFTTT の Webhooks を呼び出す
- SORACOM Harvest にデータ送信する
- Slack の Webhook を呼び出す
- LINE の Bot と連携する
AWS IoT Core を MQTT ブローカーとして使う
https://github.com/j3tm0t0/1-click/tree/master/functions/aws-iot
README.md に詳細な説明が書かれているので、そちらだけで大丈夫です。
注意点
apex を使わずに index.js
をコピペする場合は AWS Lambda の設定でランタイムを Node.js 8.10 に、そしてハンドラを index.handle
にしておいてください。(標準では index.handle r と末尾に r が付きます)
環境変数 ENDPOINT
が無い場合は東京リージョン(ap-northeast-1) の AWS IoT Core に接続しようとします。他のリージョンにしたい場合は ENDPOINT
を設定するようにしてください。
qos は 0 もしくは 1 のみです。要するに AWS IoT Core が受けられる QoS 以上は設定できません。
topic に hoge/bar
と設定した場合、実際に送信される topic 先は hoge/bar/<DSN>
となるので、subscribe 側は hoge/bar/#
としておくと良いでしょう。
AWS IoT Core の Device Shadow を更新する
https://github.com/j3tm0t0/1-click/tree/master/functions/aws-iot-shadow
README.md に詳細な説明が書かれているので、そちらだけで大丈夫です。
Device Shadow に対する動作
AWS IoT Core の Device Shadow に対しては、AWS IoT 1-Click のプレイスメント属性 SINGLE
DOUBLE
LONG
の設定が存在するか否かで動作が変わります。
存在する場合
設定されている値 (JSON) が AWS IoT Core の /update
トピックに送信されます。
この時 state
は reported
でも desired
どちらでも設定可能ですし、その中のペイロードも自由に設定できます。
存在しない場合
以下の JSON がAWS IoT Core の /update
トピックに送信されます。
(SINGLE の部分は DOUBLE や LONG にもなります)
{"state":
{"reported" :
{"clickType" : "SINGLE" }
}
}
Device Shadow を subscribe する
/update/delta
トピックを subscribe するのが定石です。
注意点
apex を使わずに index.js
をコピペする場合は AWS Lambda の設定でランタイムを Node.js 8.10 に、そしてハンドラを index.handle
にしておいてください。(標準では index.handle r と末尾に r が付きます)
AWS IoT Core を MQTT ブローカーとして使う 時と同様に、東京リージョン以外の AWS IoT Core と通信したい場合は環境変数 ENDPOINT
を設定するようにしてください。
この Lambda 関数を配置したリージョンと Device Shadow の操作対象のモノがある AWS IoT Core のリージョンは一致している必要があります。
AWS IoT 1-Click のプレイスメント属性上で thingName
が未設定だった場合は DSN がそのまま利用されます。よって thingName
もしくは DSN と一致する "モノ" を、あらかじめ AWS IoT Core 上に作っておいてください。
Amazon CloudWatch のメトリクスに送信する
https://github.com/j3tm0t0/1-click/tree/master/functions/cloudwatch
README.md がありませんが、準備は Lambda 関数の実行時ロールに cloudwatch:PutMetricData
がついている事を確認するだけです。
注意点
apex を使わずに index.js
をコピペする場合は AWS Lambda の設定でランタイムを Node.js 8.10 に、そしてハンドラを index.handle
にしておいてください。(標準では index.handle r と末尾に r が付きます)
IFTTT の Webhooks を呼び出す
https://github.com/j3tm0t0/1-click/tree/master/functions/ifttt
README.md に詳細な説明が書かれているので、そちらだけで大丈夫です。
SINGLE / DOUBLE / LONG で呼び出す Webhooks を切り替えたい
※ 自作だっしゅボタンを SORACOM LTE-M Button powered by AWS に置き換えた事でわかったことでも同じ解説しています。
IFTTT の Webhooks 設定では(受け付けの際の)イベント名を GARAGEOPEN_DOUBLE
としています。
一方 AWS IoT 1-Click のプレイスメント属性では event に GARAGEOPEN_$clickType
と設定します。
これはプレイスメント属性に入っている $clickType
を実際の clickType に置き換えるといった実装がされており、例えばシングルクリックなら GARAGEOPEN_SINGLE
という IFTTT の Webhooks イベントを起動します。これで Lambda 関数を書き換えることなく、3種類の Webhooks を起動できるようになります。
注意点
apex を使わずに index.js
をコピペする場合は AWS Lambda の設定でランタイムを Node.js 8.10 に、そしてハンドラを index.handle
にしておいてください。(標準では index.handle r と末尾に r が付きます)
SORACOM Harvest にデータ送信する
SORACOM Harvest というデータ収集・蓄積サービスがあります。
2018年7月からインターネット越しに SORACOM Harvest へデータが入れられるようになりました。
https://github.com/j3tm0t0/1-click/tree/master/functions/inventory
実際の設定方法は README.md に詳細な説明が書かれているので、そちらだけで大丈夫です。
注意点
apex を使わずに index.js
をコピペする場合は AWS Lambda の設定でランタイムを Node.js 8.10 に、そしてハンドラを index.handle
にしておいてください。(標準では index.handle r と末尾に r が付きます)
README.md では地図が表示されていますが Button には GPS 等の位置を特定する仕組みは入っていません。この地図は AWS IoT 1-Click のプレイスメント属性に lat = 35.xxxxx
や lon = 139.xxx
という固定の値を入れておき、それを表示させているという例です。
Slack の Webhook を呼び出す
https://github.com/j3tm0t0/1-click/tree/master/functions/slack
README.md がありませんので、こちらで解説します。
必要な情報と設定先
※設定先が2つ以上ある場合はどちらか1つでOKです
- Slack の Webhook URL
- Lambda 関数の環境変数
SLACK_URL
- AWS IoT 1-Click のプレイスメント属性
slackUrl
- Lambda 関数の環境変数
- Slack 上での送信時ボットの画像
- AWS IoT 1-Click のプレイスメント属性
iconEmoji
- AWS IoT 1-Click のプレイスメント属性
iconUrl
- AWS IoT 1-Click のプレイスメント属性
- 送信先の Slack チャンネル
- AWS IoT 1-Click のプレイスメント属性
slackChannel
- AWS IoT 1-Click のプレイスメント属性
実際に設定する値は Slack APIでメッセージ送信 を参考にしてみてください。
注意点
apex を使わずに index.js
をコピペする場合は AWS Lambda の設定でランタイムを Node.js 8.10 に、そしてハンドラを index.handle
にしておいてください。(標準では index.handle r と末尾に r が付きます)
LINE の Bot と連携する
https://github.com/j3tm0t0/1-click/tree/master/functions/line-bot_py
上記で紹介しているのは LINE Messaging API (後述する2番目の方法)です。Bot の作り方から解説してあります。
ちなみに LINE との連携方法は2つあります。
1つ目が LINE Notify です。その人のアカウントを使って成り代わって送信するといったものになります。
2つ目が LINE Messaging API です。通称 LINE Bot と呼ばれるようで、要するに Bot という人格を作り、そいつと会話するといったものになります。
注意点
Runtime は Python 3.6 をお選びください。
あとがき
これらのコードをそのまま使うも良し、fork して改良したら是非 P-R をお待ちしております!(私がレビューするわけじゃないけれど)
EoT
Author And Source
この問題について(SORACOM LTE-M Button のサンプルコード集 "j3tm0t0/1-click" を使いこなす), 我々は、より多くの情報をここで見つけました https://qiita.com/ma2shita/items/e5ffd4904c6800c73df4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .