54 lines
1.6 KiB
Bash
54 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# Pi Zero W setup for the doorbell PTT server.
|
|
# Run as the 'pi' user after flashing Raspberry Pi OS Lite (Bookworm).
|
|
#
|
|
# Usage:
|
|
# chmod +x install.sh
|
|
# ./install.sh
|
|
|
|
set -euo pipefail
|
|
|
|
echo ">>> Installing OS packages..."
|
|
sudo apt update
|
|
sudo apt install -y ffmpeg alsa-utils python3-venv python3-pip
|
|
|
|
echo ">>> Creating project dirs..."
|
|
mkdir -p "$HOME/doorbell"
|
|
|
|
echo ">>> Creating Python virtualenv..."
|
|
python3 -m venv "$HOME/doorbell-venv"
|
|
# shellcheck disable=SC1091
|
|
source "$HOME/doorbell-venv/bin/activate"
|
|
pip install --upgrade pip
|
|
pip install flask flask-sock
|
|
|
|
echo ">>> Copying server.py..."
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cp "$SCRIPT_DIR/server.py" "$HOME/doorbell/server.py"
|
|
|
|
echo ">>> Installing systemd service..."
|
|
sudo cp "$SCRIPT_DIR/doorbell.service" /etc/systemd/system/doorbell.service
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable doorbell
|
|
|
|
echo ">>> Testing audio output..."
|
|
echo "You should hear 'front left' in a moment. Ctrl-C if nothing plays."
|
|
speaker-test -D default -c 2 -t wav -l 1 || {
|
|
echo "!! speaker-test failed. Fix ALSA output before starting the service."
|
|
echo " Try: sudo raspi-config -> System Options -> Audio"
|
|
echo " Or: aplay -l and edit /etc/asound.conf"
|
|
exit 1
|
|
}
|
|
|
|
echo ">>> Starting doorbell service..."
|
|
sudo systemctl restart doorbell
|
|
sleep 2
|
|
sudo systemctl status doorbell --no-pager
|
|
|
|
echo
|
|
echo "=========================================="
|
|
echo "Done. Quick checks:"
|
|
echo " curl http://127.0.0.1:5555/healthz"
|
|
echo " sudo journalctl -u doorbell -f"
|
|
echo "=========================================="
|