最近研究室の入室記録を取らなければならなくなったので、Slack連携入退室記録システム作りました。入室時と退室時に学生証タッチしたら退室時に記録用チャンネルに投稿されます。詳しくは以下の動画を参照。
最近研究室の入室記録を取らなければならなくなったので、Slack連携入退室記録システム作った。入室時と退室時に学生証タッチしたら退室時に記録用チャンネルに投稿される。 pic.twitter.com/Rc4SOemxxg
— asmsuechan (@suenaga_ryota) July 15, 2020
こんな感じで置いています。
同期くんの一言がきっかけで「気分転換に作ってみるか!」ってなりました。NFCカードリーダーが届いてから2日くらいで作った。スピーディー。
大層なことはしていません。PythonでNFCリーダーのデータを受け取ってスピーカーで音を鳴らし、退室ならSlack botが指定したチャンネルにデータを投げるだけです。
Raspberry PiにNFCカードリーダーであるPaSori RC-S380とスピーカーを接続したものです。Raspberry Piのケースは適当に拾ったケースを3Dプリントして使っています。
大まかな流れ
Pythonのスクリプトです。nfcpyというライブラリを使ってNFCリーダーを操作しています。簡単です。学生証をタッチすると学生番号が引っ張ってこれるので、学生番号と氏名やSlack IDが書かれたjsonからDB(sqlite3)に入出場情報を保存します。
そして退室の場合はSlackの指定したチャンネルにその日の入退室情報をとbotが投稿します。元気に動いています。
実は音を出すのに苦労したのでその方法をメモしておきます。/boot/firmware/usercfg.txt
にdtparam=audio=on
と書いて保存し再起動
$ sudo amixer cset numid=3 1
$ amixer -q -D pulse sset Master 500%
$ play entrance-sound.mp3
便利なものを作るのは楽しい。