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 さんの書いてくれているやり方をそのままマネします。
ドキュメントがわかりやすく、かつ、充実しているので、ほんとありがたいですね。
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 関係で「実際に物理実装したいけど、通信と電源の確保が難しいよなぁ。」となりがちな部分に手軽に導入できるので、とてもありがたいですね。