#!/bin/sh set -e cd "$(dirname "$0")/.." INSTALL_DIR="$(pwd)" SERVICE_USER="${SERVICE_USER:-${SUDO_USER:-$USER}}" VENV_PYTHON="$INSTALL_DIR/.venv/bin/python" if [ "$SERVICE_USER" = "root" ] || [ -z "$SERVICE_USER" ]; then echo "Set SERVICE_USER or run via sudo as your normal user." >&2 exit 1 fi if ! getent group patlite >/dev/null; then echo "Group 'patlite' not found. Run ./scripts/install-udev.sh first." >&2 exit 1 fi if ! id -nG "$SERVICE_USER" | tr ' ' '\n' | grep -qx patlite; then echo "Warning: user '$SERVICE_USER' is not in group 'patlite' (USB access may fail)." >&2 echo "Run: sudo usermod -aG patlite $SERVICE_USER" >&2 fi if ! command -v python3 >/dev/null; then echo "python3 is required." >&2 exit 1 fi if ! ldconfig -p 2>/dev/null | grep -q 'libusb-1.0\.so'; then echo "Warning: libusb-1.0 may be missing. Install: sudo apt install libusb-1.0-0" >&2 fi if ! python3 -c "import venv" 2>/dev/null; then echo "python3-venv is required. Install with: sudo apt install python3-venv" >&2 exit 1 fi if [ ! -x .venv/bin/python ]; then python3 -m venv .venv fi if ! .venv/bin/python -m pip --version >/dev/null 2>&1; then if ! .venv/bin/python -m ensurepip --upgrade >/dev/null 2>&1; then echo "pip is missing from the venv. Install with:" >&2 echo " sudo apt install python3-venv python3-pip" >&2 exit 1 fi fi .venv/bin/python -m pip install -q -U pip .venv/bin/python -m pip install -q -r requirements.txt sudo mkdir -p /etc/patlite-mqtt if [ ! -f /etc/patlite-mqtt/patlite-mqtt.env ]; then sudo install -m 640 systemd/patlite-mqtt.env.example /etc/patlite-mqtt/patlite-mqtt.env sudo chown root:"$SERVICE_USER" /etc/patlite-mqtt/patlite-mqtt.env echo "Created /etc/patlite-mqtt/patlite-mqtt.env — edit MQTT settings before starting." else echo "Keeping existing /etc/patlite-mqtt/patlite-mqtt.env" fi sed \ -e "s|@INSTALL_DIR@|$INSTALL_DIR|g" \ -e "s|@VENV_PYTHON@|$VENV_PYTHON|g" \ -e "s|@SERVICE_USER@|$SERVICE_USER|g" \ systemd/patlite-mqtt.service.in | sudo tee /etc/systemd/system/patlite-mqtt.service >/dev/null sudo systemctl daemon-reload sudo systemctl enable patlite-mqtt.service echo "" echo "Installed patlite-mqtt.service" echo " Install dir: $INSTALL_DIR" echo " Service user: $SERVICE_USER" echo " Config: /etc/patlite-mqtt/patlite-mqtt.env" echo "" echo "Edit config, then:" echo " sudo systemctl restart patlite-mqtt" echo " sudo systemctl status patlite-mqtt" echo " journalctl -u patlite-mqtt -n 30 --no-pager"