出席確認システムを作った の後に、バグが多かったため作り直しました

出席確認システム ver3.0

使用機器等

  • Raspberry Pi 4B 4GB
  • Pasori
  • Google スプレッドシート
    • GSpread

システム

  1. Pasori からNFCタグを認識
  2. Googleスプレッドシートに記録
  • Googleスプレッドシートから管理

メリット

  • スプレッドシートの機能を使うため管理がしやすい
  • 持続性がある

デメリット

  • 通信量に制限がある

バグ / 問題

  • 謎のエラーがよく出る
  • 毎日0時に消されるはずのデータベースが消されてない
  • 帰りの時間を知らせる音楽を ON/OFF できない
  • 反応が遅い

ということで…作り直しました。

変更点

ver3.0 でのプログラム

  • check.py
    • NFCタグを検知する
    • 判別後スプレッドシートとデータベースを更新
    • スプレッドシートがなかった場合のシートを追加・更新
  • periodic.py
    • 設定時間を取得し、その時間に音楽を流す
    • 毎月スプレッドシートのシートを追加・更新
    • 0時にデータベースを削除

ver3.2 でのプログラム

  • check.py
    • NFCタグを検知する
    • 判別後スプレッドシートとデータベースを更新
    • スプレッドシートがなかった場合のシートを追加・更新
    • その日以外のデータベースを削除
  • periodic.py
    • 設定時間を取得し、その時間に音楽を流す
    • 毎月スプレッドシートのシートを追加・更新
    • 0時にデータベースを削除
  • Google Apps Script
    • スプレッドシートのシートを追加・更新

説明

データベースの管理を2つのファイルを跨いでいたため複雑になっていました。
そこで check.py だけで管理させることにより簡略化させました。

帰りの時間を知らせる音楽を ON/OFF できないことに対して、曜日ごとに時間と ON/OFF を設定できるようにしました

タッチしてからスプレッドシートからデータを取得していて、音が鳴るまで時間がかかっていました。
タッチ後にスプレッドシートのデータを取得・更新することにより、タッチから音が鳴るまでの処理はローカル内で済み、反応が早くなりました。

毎月の記録シートの追加を Python からやっていたため失敗した場合の処理が必要だったりしました。   そこで AppsScript を使うことにより失敗を減らし、また Python からのアクセス数を減らすこともできました。