#!/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 "=========================================="