【ラズパイDIY講座】ラズパイゼロで作る監視カメラ⑥〜Slackアプリから監視カメラ画像を取得してみる
※ 当ページには【広告/PR】を含む場合があります。
2022/02/07
Slackサーバー(Slackアプリ)とは?
ラズパイゼロにv12以降のNode.jsをインストールする
arm32v6
$ curl -sL install-node.now.sh/lts -o node.sh
$ chmod +x node.sh
$ sudo BASE_URL=https://unofficial-builds.nodejs.org/download/release ./node.sh
[sudo] password for *****:
Configuration
> Version: v16.13.2 (resolved from lts)
> Prefix: /usr/local
> Platform: linux
> Arch: armv6l
> Tarball URL: https://unofficial-builds.nodejs.org/download/release/v16.13.2/node-v16.13.2-linux-armv6l.tar.gz
? Install Node.js v16.13.2 to /usr/local? [yN] y
> Installing Node.js, please wait…
✓ Done
#👇後片付け
$ rm -rf node.sh
$ node --version
v16.13.2
Slackアプリの実装
$ tree
.
├── package.json
└── index.js
package.json
{
"name": "slack-home-monitor",
"version": "0.0.1",
"description": "Home monitor app with Bolt-js",
"main": "index.js",
"author": "tacoskingdom",
"license": "UNLICENSED",
"dependencies": {
"@slack/bolt": "^3.9.0"
}
}
bolt-js
$ npm install
const { App } = require('@slack/bolt');
const child_process = require('child_process');
const fs = require("fs");
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
appToken: process.env.SLACK_APP_TOKEN,
socketMode: true,
});
const fileName = "./snap_tmp.jpg";
app.message('watch', async ({ message, client, logger }) => {
try {
//👇撮影日時を取得
const timestamp = child_process.execSync(`TZ=JST-9 date "+%Y年%m月%d日%H:%M"`);
//👇カメラから画像をキャプチャ
child_process.execSync(`raspistill -w 480 -h 360 -vf -hf -q 10 -o snap_tmp.jpg`);
//👇画像をチャンネルへ送信
await client.files.upload({
channels: message.channel,
initial_comment: `${timestamp.toString()}`,
file: fs.createReadStream(fileName)
});
//画像の後片付け
child_process.execSync(`rm -rf snap_tmp.jpg`);
} catch (error) {
logger.error(error);
}
});
(async () => {
await app.start(process.env.PORT || 3000);
console.log('⚡️ Bolt app is running!');
})();
raspistill
「ラズパイ監視カメラ on Slackアプリ」の動作確認する
Botにスコープ権限を設定する
files:write
[OAuth & Permisstions] > [Scopes]
Slackサーバーを起動する
$ export SLACK_BOT_TOKEN=<ボットトークン>
$ export SLACK_APP_TOKEN=<アプリトークン>
$ node index.js
⚡️ Bolt app is running!
「watch」
まとめ
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー