Drone Race Random Start System
レーススタートのカウントダウンシステム
- ラズパイにリレーHATをつけて、LEDシグナルを点灯させる
- LINEアウトからカウントダウン音を鳴らす
- スタート音は、任意の秒数 (default: 4~9) 後に 発火 < フライング抑制
- Web画面上にヒート毎のPilotを表示(前後ヒート含め3ヒート分)
- サーバー側は Python, FastAPI
- Web側は Vite, React
- サーバーと Web は Scoket.IO で同期
- 現在のヒート番号のみ Firestore に保存して https://info.japandroneleague.com/ と同期
rye インストール
Python 仮想環境とモジュール管理に rye つかってます。
curl -sSf https://rye.astral.sh/get | bash
git clone https://github.com/a2chub/droras.git
cd droras
rye sync
rye sync
だけで仮想環境構築と関連モジュールダウンロード全部できる、らくちん。
run.sh
と同じディレクトリに jdl-main-key.json
として保存。
-
droras.service.example
をdroras.service
としてコピー。 -
droras.service
を開いてExecStart
のrun.sh
のパスを正しいものに変更。 -
droras.service
を/etc/systemd/system/
に移動sudo mv droras.service /etc/systemd/system/
-
droras.service
を起動するsudo systemctl start droras.service
-
droras.service
を自動起動するようにするsudo systemctl enable droras.service
やらなくてもいいけどやるとポート番号指定しなくてよくなる。( http://jdl-pi.local/ とか)
droras はポート 8000 で動いてるので 80 を 8000 に流してやる。
sudo apt-get install iptables
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8000
sudo iptables-save
sudo apt-get install iptables-persistent
sudo systemctl status droras.service
sudo systemctl restart droras.service
sudo journalctl -u droras.service -f -n 100
- CSV を Spreadsheet から直接読み込んでる
- URL は
convert_heatlist.py
に直接かかれてる(ほんとは環境変数にしたほうがいいかも?
run.sh
で起動すれば uvicorn が reload=True になってるのでファイル変更すれば自働反映
front
ディレクトリ内で開発(ラズパイだとちょっと重いかも…- pnpm でパッケージ管理してるので必要に応じてインストール
pnpm i
で依存関係を installpnpm dev
で dev server が ポート 5173 で起動 http://localhost:5173/pnpm build
で/static/
にサーバー配信用ファイルたちが生成される