• IoT

SORACOM LTE-M Buttonで飲み会に行くことを妻に通知する

なぜ、ガジェットハックとバレたんだ?

こんにちは、原田です。世の中は忘年会シーズンですね。
皆さん家族にその旨連絡していますか。私はつい連絡を忘れてしまいます。
しかも覚えているときに限って、携帯の電池が切れている、人生とはそんなものです。

ではそんなシチュエーションで一体どうするか。
最近購入して何をするか決めかねているあのデバイスがあることに、私は気付きました。

SORACOM LTE-M Buttonを使おう

soracom-lte-m-button-powered-by-aws

SORACOM LTE-M Buttonは一言で言えば、「外出先で使えるIoTボタン」です。

SORACOM LTE-M Buttonのスペック、特徴は以下の通りです。

  • SORACOM製のボタン型デバイス(現状特価3980円)
  • SIMカードが内蔵されており、携帯電話の電波を拾える箇所で使用可能。外出先で使えるボタン
  • ボタンしか付いていない。シングルクリック、ダブルクリック、ロングクリックの三種類が実行できる。
  • ボタンを押すと、AWSのLambdaサービスを起動できる。※Email/SMS送信も可能
  • AWS IoTボタンとは異なり、無線LAN接続はできない。
  • AWS IoTボタンとは異なり、電池交換が可能。
  • AWS IoT 1-Clickに登録するとすぐ使える。
  • 初回使用時から1500回クリックをする or 1年間が経過すると更新料(1200円)がかかる。
  • 初回購入時は、販売価格に通信料が含まれている。
  • AWS Lambdaを実行できることならなんでもできる。

実現したいことはシンプルに以下の通りです。
・ボタンをシングルクリックすると、家族(妻)にEmailで「飲んで帰りまーす」が届く。

こんな構成ですね。

ボタン→(押す)→Lambda→(トピックにメッセージ送信)→SNS→(サブスクライバーがEmailを送信)→Emailが届く

LambdaからSNSに通知するときに、トピックにメッセージ送信とありますが、別にここはSMTPで送信しているわけではありません。
これは恐らくMQTTでしょう。SNS内にMQTTブローカーがある。IoTの世界でよく使われる技術です。(説明放棄)

AWSからモバイルへの通知を送りたいのであれば、AWS SNSです。これを使いましょう。
SNSに通知が入ったら、Emailを送信するだけです。

AWSのSNSから トピックを作成しましょう。データの置き場を作っていることになります。
無題0

1

2

サブスクライバーも登録しましょう。(データに変化があったら起動する仕組みです。EmailにすることでEmailを送信します。)
Emailの欄に妻のアドレスを入力します。
5

意外かもしれませんが、これだけで設定は可能です。

※ 注:AWS IoT 1-ButtonだけでSMS/Email送信はできますが、ボタンのクリックに応じた処理を指定したかったので一旦Lambdaを介しています。
※ 初回のみSNS設定時に認証が入ります。Email側で認証の設定(届いたメールのリンクをクリックするだけ)

Lambdaの内容はこちら。YOUR TOPIC ARNだけ変えてください。

'use strict';
 
var aws = require('aws-sdk');
var sns = new aws.SNS({
   region: 'ap-northeast-1'
});
 
// AWS SNS Topic Arn
var topicArn = 'arn:aws:sns:YOUR TOPIC ARN';
 
exports.handler = function (event,context) {
 
    // Soracom IoT Button Event (SINGLE or DOUBLE or LONG) 
    var buttonEvent = event.deviceEvent.buttonClicked.clickType;
    console.log(buttonEvent);
     
    // Set the message.
    var message = "";
    if(buttonEvent == "SINGLE"){
        message = "飲んで帰りまーす";
    }else if(buttonEvent == "DOUBLE"){
        message = "すみません";
    }else if(buttonEvent == "LONG"){
        message = "まぁ来週もたぶん飲みに行くんだけどな";
    }
 
    // Publish a topic to SNS.
    sns.publish({
            Message: message,
            Subject: '旦那からの通知',
            TopicArn: topicArn
        }, function(err, data){
            if ( err ) {
                console.log('SNS 送信エラー:', err);
            }else{
                console.log('SNS 送信成功:', data);
            }
        }
    );
};

IoT 1-ClickにLambdaの設定をするのは面倒なので省略です。
こちらのページを参照ください。

オチ

飲み会から帰ると妻が軽くお怒りでした。
「メールに返信しても届かないし!何あれ!」
そりゃ、AWSからメールが届いてるんだよ。
「はぁ?」

こういう時にダブルクリックですよ。※ソース参照

関連記事

  1. IoT奮闘記 ~なめこから始まるIoTシステム構築~

  2. M5Stack(マイコン)+絶対圧センサーで応援してくれるエクササイズ…

  3. 娘に渡すIoTデバイス(Wio LTE+GPSセンサー)

  4. ランニングコストゼロで作るスマートホームコントロール(ラズパイとNod…

  5. Nature Remoを使って憧れのスマートホーム化!

  6. RFIDタグでホテルのカードキーシステムを再現しよう(RFIDリーダR…

  7. RPAによるゲームの自動化 ~とあるギルドマスターの挑戦

  8. IoT x 料理(Raspberry Pi+Groveリレー+1wir…

PAGE TOP