会社内で社員向けのイベントを開催する機会があり、参加者の集計を簡単にするため、社員証をかざすと参加者リストに反映されるシステムをenebularで作ってみました。
概要は以下のブログに書いてあります。
enebularブログ 社員証タッチで参加者リストを自動作成
このページでは、セットアップ手順について説明します。
ブログにもちょっと書いていますが、H/W的には以下の構成で作っています。
- Raspberry Pi 3B+(OS:raspbian-buster-2019-09-30、アプリ:enebular-agent 2.15.0 AWS IoTコネクション)
- ソニー 非接触ICカードリーダー/ライター PaSoRi RC-S380(USBでRaspberry Piに接続)
- ブザー(電圧を加えるだけで鳴るもの Raspberry piのP5に接続)
セットアップ手順
フローはenebularのDiscoverでパブリッシュしています。
https://enebular.com/discover/flow/53d7c390-9a5f-47fc-8d0f-ebc4655670a6
フローのデプロイ以外にもPaSoRiを使えるようにする手順とGoogleスプレットシートに書き込むための手順がありますので、紹介します。
nfcpyをインストール
PaSoRiからはnfcpy-id-readerというPyhtonスクリプトを介して、カードの情報を受け取ります。そのセットアップ手順は次の通りになっています。
1.追加python環境のインストール
$ sudo apt-get install python-usb python-pip -y
2.pythonライブラリのインストール
$ sudo pip install -U nfcpy-id-reader
3.ユーザー権限でもPaSoRiにアクセス可能にする
$ cat << EOF | sudo tee /etc/udev/rules.d/nfcdev.rules
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c3", GROUP="plugdev"
EOF
4.再起動
$ sudo reboot
スプレットシートの設定
フローの中ではスプレットシートに書き込むためのノードを使用しています。スプレットシートに書き込むためにはいくつか設定が必要です。以下のブログを参考にしてください。
enebular-Blog Google スプレッドシート・ノードを使おう
フローでは、A列に番号、B列に日時、C列にIDを書き込みます。
IDから名前や個人情報をリスト表示するのはスプレットシート側で行っています。
まだまだなところ
今回のフローはざっと数時間でプロトタイピング的に作ったものです。まだまだ課題があります。
- 連続して同じIDはスプレットシートに書き込まれないようになってるが、間に異なるIDを挿むと書き込まれてしまう
- スプレットシートの切り替えがフローを変更しないとできない
- インストールが手間
上記のいくつかはenebularの有償機能であるファイルデプロイ機能を使えば解決できそうなので、チャレンジしてみます。