大阪電気通信大学情報通信工学部でのハッカソン提出作品。
ハッカソンのお題は、研究室の入退室管理。
殿山,福田,前山,豫城,渡邊(50音順,敬称略)
-
学生証からデータを読み取る。
-
データが解析可能であったなら音を鳴らす。
-
データから学籍番号を取得し、
学籍番号,読み取った日時,入室or退室
をその日の日付.dat
に記録 -
cronで定期的に記録を送り、GoogleSpreadSheetに記録する。
https://drive.google.com/file/d/1iLeQqFqhRwqwDHbqyT9RK_AQpUWrt29U/view?usp=sharing
GUIが使えるもの(GASへのアクセスにアカウント認証が必要みたいです。)
aptを最新版にしてください。(この時にGASの設定をするとスムーズかも)
pythonの環境を構築します。
sudo apt install python3-pip
pip3 install nfcpy
pip3 install soundplay
pip3 install requests
Pythonをクローンして、設置。
git clone https://github.com/shintaro129/EnExMgmt-p1/AccessManagementSystem-raspi.git
privacy
フォルダ内のURLFILE
にGoogleAppScripts(以下、GAS)で取得したCurrent web app URLを記述する。
(https://script.google.com/macros/s/~~~/exec
のように「""」や「''」等の修飾文字は付けなくて結構です。)
ntpの設定
タイムゾーンを Asia/Tokyo に設定
timedatectl set-timezone Asia/Tokyo
sudo apt install ntpdate
sudo ntpdate -u ntp.nict.jp
sudo nano /usr/bin/checkdate.sh
#!/bin/sh
/usr/sbin/ntpdate ntp.jst.mfeed.ad.jp
sudo chmod 700 /usr/bin/checkdate.sh
cron設定
crontab -e
45 23 * * * /which python3の絶対パス/python3 /絶対パス/send.py
55 23 * * * sh /usr/bin/checkdate.sh
@reboot /usr/bin/python3 /path/scan.py
cronの起動と確認
sudo systemctl start cron.service
sudo systemctl enable cron.service
sudo systemctl status cron.service
再起動時、起動するファイルを指定
sudo chmod u+x /etc/rc.local
sudo nano /etc/rc.local
/which python3の絶対パス/python3 /絶対パス/scan.py
「ウェブアプリケーションとして導入」から「Project version:
」をNewにする。
(その際、「Execute the app as:
」を「Me
」に、「Who has access to the app:
」を「anyone, even anonymous
」にしておく。)
GASで取得したCurrent web app URLをラズパイ側に書き込んでください。 また、GASを利用するためにラズパイのブラウザでgoogleのアカウント認証をしてください。
メールやSlackに入退室記録を送信したい場合はMain.gsのsendMail,sendSlackのコメントアウトを外し、send.gsの該当部分の必要情報(mailなら送信先アドレス,slackならWebhook URL)を記述してください。入退室記録がGASに送られてきた時にGSSへ記録後に送られます。
Slackを開き「App」から「Incoming WebHooks」を追加。 「Slackに追加」をクリック。チャンネルを選択。 「Incoming Webhookインテグレーションの追加」をクリック。 Webhook URLが表示される。
参考サイト: GAS超入門⑤ - Slackに通知してみよう
python3環境にrequests
をインストールする。
AccessManagementSystem-contact
内のview_contactperson.py
をダウンロードして、設置したフォルダで、
python3 view_contactperson.py >> [記録したいファイル]
を実行する。 記録したいファイルに接触した可能性がある人が列挙されます。
Raspberry Pi 3にPaSoRiを接続してSuicaカードをダンプする
nfcpy で複数の System Code を持つ NFC タグを扱う方法