1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイでサムターンの状態遷移を検出し、discordに通知する。

Last updated at Posted at 2025-05-05

目的: ドアを鍵で閉めた後のドアガチャの回数を減らす

手段: リードスイッチでサムターンの状態を検知


アーキテクチャ

image.png

リードスイッチはこれ買いました。

※今回はAPI作成の学習も兼ねているので、検出部分と処理部分をわけています。

リードスイッチの制御

参考

リードスイッチ接続
※上のqiitaから引用
image.png

リードスイッチ判定プログラム

git

開いて実行すればOK
足りないライブラリはインストールしてください。

サーバ側のプログラム

git

project配下にこんなかんじで展開
image.png

プログラム少し説明

image.png

①Domain ・・・ データモデル、インターフェース、出力用のDTO

②Infra ・・・ 外部に接続するようなものを入れている。discord, sqlite
③Tests ・・・ テストコード (使い方わからず あんまり使ってない)
④UI ・・・ Webの履歴画面、API

↓ここにAPI用意してあります。
image.png

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を参照するように設定してあります。

ラズパイとリードスイッチ固定方法

1000017777.jpg

1000017779.jpg

※リードスイッチは扉に当たらないようにテープで固定
※ラズパイは現状おいているだけ。危ない。

1000017778.jpg

※リードスイッチをONにするための磁石は、サムターンにテープで固定。リードスイッチと磁石のリーチが足りない分は、ダンボールをサムターンに固定して、ダンボールの先に磁石をつけました。

感想

精度よし。
次の発展として参考にしたqiitaにもあるような「数時間扉が開かれていない場合」などの警告通知などを実装できたら面白そうだと思う。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?