目的: ドアを鍵で閉めた後のドアガチャの回数を減らす
手段: リードスイッチでサムターンの状態を検知
アーキテクチャ
リードスイッチはこれ買いました。
※今回はAPI作成の学習も兼ねているので、検出部分と処理部分をわけています。
リードスイッチの制御
参考
リードスイッチ判定プログラム
git
開いて実行すればOK
足りないライブラリはインストールしてください。
サーバ側のプログラム
git
プログラム少し説明
①Domain ・・・ データモデル、インターフェース、出力用のDTO
②Infra ・・・ 外部に接続するようなものを入れている。discord, sqlite
③Tests ・・・ テストコード (使い方わからず あんまり使ってない)
④UI ・・・ Webの履歴画面、API
http:///door/insert
というURLにJSONでリクエストbodyにパラメータ入れればsqliteにサムターンの状態を記録できる。
docker起動コマンド
cd /home/pcmainte/project/door.UI
docker build --no-cache -t door_ui . -f door.UI/Dockerfile
docker run -v "/home/pcmainte/project/door.UI/door.UI/door.db:/app/door.db" -d -p 7275:7275 --name door_ui_container door_ui
ローカルのDBを参照するように設定してあります。
ラズパイとリードスイッチ固定方法
※リードスイッチは扉に当たらないようにテープで固定
※ラズパイは現状おいているだけ。危ない。
※リードスイッチをONにするための磁石は、サムターンにテープで固定。リードスイッチと磁石のリーチが足りない分は、ダンボールをサムターンに固定して、ダンボールの先に磁石をつけました。
感想
精度よし。
次の発展として参考にしたqiitaにもあるような「数時間扉が開かれていない場合」などの警告通知などを実装できたら面白そうだと思う。