Bluetoothの電波から在室状況を把握できます.
This system makes it possible to know who is in the room by the Bluetooth signal
*使用によって被った損害に対して一切の責任を負いません.
一定時間間隔で人の存在を検出することができます.
Raspberry Piから事前に登録された端末に送信したPingに対する応答の有無によって在室判定を行います.
端末の登録情報や在室状況はデータベース上に管理・保存されます.
テーブル例です.ID,BluetoothのMACアドレス,在室状況を記録するカラムは動作に必要です.
IDはAUTO_INCREMENT
を設定するなどして,1~の連番にする必要があります.
ID | NAME | BT_ADDRESS | ROOM_X | ROOM_Y | ROOM_Z |
---|---|---|---|---|---|
1 | 山田太郎 | XX:XX:XX:XX:XX:XX | 在室 |
在室状況を表示させるページです.
- ネットにつながったRaspberry pi × 部屋数
- MySQLデータベース(詳細は前項に記載)
以下のライブラリを使用しています.(Python)
- paramiko(sshtunnelの使用に必要)
- sshtunnel
- pymysql
- subprocess
sshtunnelをインストールしたうえで実行しても,「sshtunnelが存在しない」とエラーが返ってくることがありました.
以下をターミナルで実行し,sshtunnelを再度インストールすると解消するかもしれません.
$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
$ update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
また,定期的に在室状況を得るためにcron
等を使用します.
一度実行すれば,登録された全メンバーの在室状況を1回ずつ取得します.
定期的に実行すれば,定期的に情報を収集します.
cronの設定例
$ cron -e
でエディタに入り,以下のような記述をすれば,7~23時の間に2分間隔で実行されます.
*/2 7-23 * * * python3 /hoge/DAREKA_IMASUKA.py
実行頻度を上げすぎると,一部の端末からrefuse
が返ってくることがあります.このときは不在
として判定されます.
cronが走っているかは$ chkconfig cron
で確認できます.
走っていなければ,$ systemctl enable cron
で起動できます.