SORACOM Button を使って施錠通知をやってみた

こちらは、 “SORACOM Advent Calendar 2021” および
ゆるWeb勉強会@札幌 Advent Calendar 2021” の 14日目の記事です。

今年はあまり SORACOM さんの製品で遊べていないので、年末だけでもエセ IoT をやりたい気持ちで始めました。

「あれ、そういえば玄関の鍵閉めたっけ?」と思うこと、みなさんありませんか?

私はよくあります。

習慣で閉めてしまうようになっているので、記憶に残らないのですよね。。

例えば、リモートで施錠・解錠してくれるようなソリューションもありますが、そこまでは必要なくて「鍵を一旦開けてから閉めた」という動作を検知して知る方法があれば十分、なんですよね。

というわけで、そこだけを検知するシステムを作りました。

使うもの

SORACOM LTE-M Button Plus
https://soracom.jp/store/5207/

いわゆる「ひげボタン」。リード線が出ているので、外部センサーとの連携が楽々です。

マグネットスイッチ

いろんなところで購入できます。

今回は、磁石が近づいたらスイッチがオフになるものを使います。

完成図

このような感じで、各自の玄関に実装します。

コード

Lambda

SORACOM さんの書いてくれているやり方をそのままマネします。

Getting Started: AWS Lambda を実行し Slack へ通知する | SORACOM Funk | SORACOM UsersSORACOM Funk は、クラウドサービスの Function を直接実行できるサービスです。クラウドリソースを活用することでデバイス側の実装をシンプルに保ち、処理をオフロードや低電力消費化が可能となります。
 users.soracom.io
Getting Started: AWS Lambda を実行し Slack へ通知する | SORACOM Funk | SORACOM Users

ドキュメントがわかりやすく、かつ、充実しているので、ほんとありがたいですね。

payload 部分だけ、好みのものに変えればよいです。私は下記のようにしました。

const https = require("https");
const url = require("url");
const slackUrl = process.env.SLACK_URL;

exports.handler = function (e, ctx, cb) {
  console.log("event: %j", e);
  console.log("context: %j", ctx);

  var slackReqOptions = url.parse(slackUrl);
  slackReqOptions.method = "POST";
  slackReqOptions.headers = { "Content-Type": "application/json" };
  var payload = {
    text: `Door is closed.\nbatteryLevel: ${e.batteryLevel}`,
  };
  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");
      cb(null, { result: "ok" });
    } else {
      cb(false, { result: "ng", reason: "Failed to post slack " + res.statusCode });
    }
    return res;
  });
  req.write(body);
  req.end();
};

動画

まとめ

SORACOM LTE-M Button Plus を使うと、通信や電源の心配もほぼすることなく、外部のセンサーの連携を簡単にできます。

IoT 関係で「実際に物理実装したいけど、通信と電源の確保が難しいよなぁ。」となりがちな部分に手軽に導入できるので、とてもありがたいですね。

tacck
  • tacck
  • 北の大地の普通のソフトウェアエンジニア。
    インフラ・バックエンド・フロントエンドと、色々やります。

    初心者・若手向けのメンターも希望あればお受けします。

    勉強会運営中
    * ゆるWeb勉強会@札幌
    * スマートスピーカーで遊ぼう会@札幌

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください