Inital!
This commit is contained in:
80
scripts/install-systemd.sh
Executable file
80
scripts/install-systemd.sh
Executable file
@@ -0,0 +1,80 @@
|
||||
#!/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"
|
||||
25
scripts/install-udev.sh
Executable file
25
scripts/install-udev.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
target_user="${SUDO_USER:-$USER}"
|
||||
if [ "$target_user" = "root" ] || [ -z "$target_user" ]; then
|
||||
echo "Run as your normal user (sudo is used internally), e.g.: ./scripts/install-udev.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo groupadd --system patlite 2>/dev/null || sudo groupadd patlite 2>/dev/null || true
|
||||
sudo install -m 644 udev/99-patlite.rules /etc/udev/rules.d/99-patlite.rules
|
||||
sudo usermod -aG patlite "$target_user"
|
||||
sudo udevadm control --reload-rules
|
||||
sudo udevadm trigger
|
||||
|
||||
echo "Installed /etc/udev/rules.d/99-patlite.rules"
|
||||
echo "Added user '$target_user' to group 'patlite'."
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Activate the new group (pick one):"
|
||||
echo " newgrp patlite"
|
||||
echo " or log out and back in / reboot"
|
||||
echo " 2. Unplug and replug the Patlite (required for udev to apply)"
|
||||
echo " 3. Run: python3 -m patlite_mqtt"
|
||||
Reference in New Issue
Block a user