SORACOM Developers

Getting Started with SORACOM LTE-M Button

SORACOM LTE-M Button powered by AWS をクリックしてSlackに通知する

SORACOM LTE-M Button powered by AWS(LTE-M Button) を AWS IoT 1-Click および SORACOMガジェット管理に登録します。AWS IoT 1-ClickからAWS Lambdaを呼び出し、Slackに通知します。以下のステップにそって解説します。

当ガイドの前提は以下のとおりです。

AWS IoT 1-Click 概要およびAWS IoT 1-Click 開発者ガイドを合わせてご確認ください。

ステップ 1: AWS IoT 1-Clickに登録する

LTE-M ButtonをAWS IoT 1-Clickに登録するには、AWS IoT 1-Clickのコンソールもしくはモバイルアプリケーションから登録します。登録にあたっては、デバイスに付属のDSN(DeviceSerialNumber)を使用します。 ここでは、iOS向けのモバイル・アプリケーションから登録をおこないます。あらかじめAppStoreからAWS IoT 1-Clickアプリをインストールしてください。

アプリケーションを起動して、AWSアカウントでログインします。以下から「Claim with Device ID」を選択します。

LTE-M Buttonのケースを開け、QRコードを読み込みます。 「1 Device(s) Added」が表示されていれば正しく読み込まれています。 「Stop Scanning」をクリックします。

続いて「Claim」をタップします。

以下の画面が表示されたら、LTE-M Button のボタンを一度クリックしてください。

「Claim: Succeeded」が表示されれば登録が完了です。

「Finish」をタップします。

ステップ 2: AWS IoT 1-Click のプロジェクトを作成する

続いて、AWS IoT 1-Clickのコンソールからプロジェクトとテンプレートを作成します。 ここでは、SMSに送信します。(このあとステップ 5: Lambda関数を作成してSlackに通知するで、Lambda関数を作成してSlackに通知します。)

先ほど登録した LTE-M Button が表示されていることを確認してください。

登録直後の時点では「無効」になっているので「有効化」します。

次にプロジェクトを作成します。左のメニューから「管理」->「プロジェクト」をクリックして、「プロジェクトの作成」をクリックします。

プロジェクト名を入力します。

次にデバイステンプレートを作成します。 デバイステンプレート名を入力し、ここではアクションに「SMSを送信する」を選択します。

続いて、プレイスメントの属性に電話番号とSMSメッセージを入力します。 (SMSが受信できる電話番号を入力してください。電話番号は国番号から入力してください。)

「プロジェクトの作成」をクリックします。

次にプレイスメントを作成します。 「プレイスメントの作成」をクリックします。

デバイスのプレイスメント名を入力し、さきほど登録したLTE-M Buttonを選択します。

「プレイスメントの作成」をクリックします、

Buttonをクリックして、SMSが送信されることを確認してください。

SMSが送信されない場合、これまでの設定をご確認ください。 また、AWS IoT 1-Click のダッシュボードから呼び出し回数を確認できますので、こちらも合わせてご確認ください。

ステップ 3: SORACOMガジェット管理への登録

次に、SORACOMガジェット管理に LTE-M Button を登録します。 SORACOM ガジェット管理に登録することにより以下のことが行なえます。

メニューから「ガジェット管理」->「Button」を選択します。 「デバイス登録」をクリックします。

DSN(DeviceSerialNumber)を入力します。(DSNはButtonのリアカバーをあけたQRコード、もしくは AWS IoT 1-Click のダッシュボードから確認できます。)

デバイスが登録されたことを確認してください。

最終受信日時はコンソールに登録後にクリックした日時となります。コンソール登録前のクリック日時は表示されません。

ステップ 4: 残回数、残期間、LastSeenを確認する

コンソールのButton一覧から 残クリック回数、有効期限、最終受信日時を確認できます。 また、最終受信日時の右横のアイコンをクリックすることで、ペイロードを確認することができます。

ステップ 5: Lambda関数を作成してSlackに通知する

ここでは、LTE-M Button がクリックされたら Lambda 関数を呼び出し Slack に通知します。 まず、Lambda関数を定義します。

AWS Lambdaのコンソールから新規関数を作成します。 ランタイム、ロールは以下を参考にしてください。

サンプルとして以下のスクリプトをペーストしてください。 (当スクリプトに関するお問い合わせはお受けできませんので、ご了承ください。)

const https = require('https');
const url = require('url');
const defaultSlackUrl=process.env['SLACK_URL']
const defaultMessage={
    "SINGLE": "Single Click",
    "DOUBLE": "Double Click",
    "LONG": "Long Click"
}

exports.handler = (event, context, callback) => {
    console.log('Received event:', JSON.stringify(event, null, 2));
    var slackUrl = (event.placementInfo.attributes.slackUrl)? event.placementInfo.attributes.slackUrl:defaultSlackUrl
    if(!slackUrl){

    }
    var slackReqOptions = url.parse(slackUrl);
    slackReqOptions.method = 'POST';
    slackReqOptions.headers = { 'Content-Type': 'application/json' };
    var text = event.placementInfo.attributes[event.deviceEvent.buttonClicked.clickType]
    if(text)
    {
      var text = event.placementInfo.attributes[event.deviceEvent.buttonClicked.clickType]
      var payload = {'text': text}
    }
    else {
      var text = defaultMessage[event.deviceEvent.buttonClicked.clickType]
      var payload = {'text': text, "attachments":[{"text":JSON.stringify(event,null,2)}] }
    }
    if (event.placementInfo.attributes.username)
    {
        payload.username = event.placementInfo.attributes.username;
    }
    if (event.placementInfo.attributes.iconEmoji)
    {
        payload.icon_emoji = event.placementInfo.attributes.iconEmoji;
    }
    if (event.placementInfo.attributes.iconUrl)
    {
        payload.icon_url = event.placementInfo.attributes.iconUrl;
        payload.as_user = false;
    }
    if (event.placementInfo.attributes.slackChannel)
    {
        payload.channel = event.placementInfo.attributes.slackChannel;
    }
    var body = JSON.stringify(payload);
    slackReqOptions.headers = {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(body),
    };
    var req = https.request(slackReqOptions, function(res) {
        if (res.statusCode === 200) {
            console.log('Posted to slack');
            callback(null, {"result":"ok"});
        } else {
            callback(false, {"result":"ng", "reason":'Failed to post slack ' + res.statusCode})
        }
        return res;
    });
    req.write(body);
    req.end();
};

環境変数に Slack Webhook の URL を貼り付けてください。 Slack Webhook の URL は Slack でご確認ください。

次に、IoT 1-Click のコンソールからSlack用のプロジェクトを作成します。 プロジェクトから「作成」をクリックします。

プロジェクト名を入力します。

次にデバイステンプレートを設定します。 アクションでは「Lambda関数」を選択し、さきほど作成したLambda関数を選択します。

プレイスメントを指定します。ここでは、Slackの channelusername を指定しています。 これ以外に icon_emoji やメッセージのテキストをいれることも可能です。

プロジェクトを作成後、プレイスメントを作成します。 (すでに別のプロジェクトに登録済みの場合は、あらかじめ「プレイスメントの削除」をしてください。)

Slackへの通知設定は完了です。

LTE-M Buttonをクリックして、Slackの通知を確認します。 以下のように表示されます。

SORACOM LTE-M Button powered by AWS をクリックしてSlackに通知するは以上です。

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

SORACOM Krypton

SORACOM Lagoon

Gadgets

サービス機能詳細

Developer Tools

pagetop