SORACOM Button を使って施錠通知をやってみた
[point_maker type=“heading_icon” base_color=“apple_green” title_icon=“info-circle-solid” title_color_background=“true” title_color_border=“false” content_type=“text” content_color_background=“true” content_color_border=“false” block_editor=“true”]
こちらは、 “SORACOM Advent Calendar 2021” および
“ゆるWeb勉強会@札幌 Advent Calendar 2021” の 14日目の記事です。
[/point_maker]
今年はあまり SORACOM さんの製品で遊べていないので、年末だけでもエセ IoT をやりたい気持ちで始めました。
「あれ、そういえば玄関の鍵閉めたっけ?」と思うこと、みなさんありませんか?
私はよくあります。
習慣で閉めてしまうようになっているので、記憶に残らないのですよね。。
例えば、リモートで施錠・解錠してくれるようなソリューションもありますが、そこまでは必要なくて「鍵を一旦開けてから閉めた」という動作を検知して知る方法があれば十分、なんですよね。
というわけで、そこだけを検知するシステムを作りました。
使うもの
SORACOM LTE-M Button Plus
https://soracom.jp/store/5207/
いわゆる「ひげボタン」。リード線が出ているので、外部センサーとの連携が楽々です。
マグネットスイッチ
いろんなところで購入できます。
今回は、磁石が近づいたらスイッチがオフになるものを使います。
完成図
このような感じで、各自の玄関に実装します。
コード
Lambda
SORACOM さんの書いてくれているやり方をそのままマネします。
https://users.soracom.io/ja-jp/docs/funk/aws-lambda/
ドキュメントがわかりやすく、かつ、充実しているので、ほんとありがたいですね。
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 関係で「実際に物理実装したいけど、通信と電源の確保が難しいよなぁ。」となりがちな部分に手軽に導入できるので、とてもありがたいですね。