Files
2026-04-30 09:50:50 +02:00

109 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
APP_USER="${APP_USER:-naue}"
APP_DIR="${APP_DIR:-/home/${APP_USER}/rtk}"
ENV_FILE="/etc/rtk.env"
echo "== RTK Base Installer =="
if [[ $EUID -ne 0 ]]; then
echo "Bitte mit sudo ausführen:"
echo "sudo ./install.sh"
exit 1
fi
echo "Installiere Pakete..."
apt update
apt install -y python3 python3-serial python3-paho-mqtt mosquitto-clients jq git
echo "Erstelle Verzeichnis ${APP_DIR}..."
mkdir -p "${APP_DIR}"
chown "${APP_USER}:${APP_USER}" "${APP_DIR}"
echo "Kopiere Python-Skripte..."
install -m 0755 -o "${APP_USER}" -g "${APP_USER}" scripts/rtkbase_lora.py "${APP_DIR}/rtkbase_lora.py"
install -m 0755 -o "${APP_USER}" -g "${APP_USER}" scripts/status_mqtt.py "${APP_DIR}/status_mqtt.py"
if [[ ! -f "${ENV_FILE}" ]]; then
echo "Erstelle ${ENV_FILE}..."
cat > "${ENV_FILE}" <<'EOF'
# RTK MQTT Settings
MQTT_HOST=192.168.2.36
MQTT_PORT=1883
MQTT_USER=wall-e
MQTT_PASS=BITTE_AENDERN
MQTT_TOPIC_PREFIX=rtk/base
EOF
chmod 600 "${ENV_FILE}"
echo "WICHTIG: Bitte ${ENV_FILE} prüfen und MQTT_PASS setzen."
else
echo "${ENV_FILE} existiert bereits, wird nicht überschrieben."
fi
echo "Installiere systemd Units..."
cat > /etc/systemd/system/rtk-base.service <<EOF
[Unit]
Description=RTK Base (ZED-F9P + LoRa)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=${APP_USER}
Group=${APP_USER}
WorkingDirectory=${APP_DIR}
ExecStart=/usr/bin/python3 ${APP_DIR}/rtkbase_lora.py --rtcm-tap-file /run/rtk/rtcm.tap --rtcm-tap-rotate-mb 50 --rtcm-tap-max-files 5
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/rtk-status.service <<EOF
[Unit]
Description=RTK Status -> MQTT (reads /run/rtk/state.json)
After=network-online.target rtk-base.service
Wants=network-online.target
[Service]
Type=simple
User=${APP_USER}
Group=${APP_USER}
EnvironmentFile=${ENV_FILE}
WorkingDirectory=${APP_DIR}
ExecStart=/usr/bin/python3 ${APP_DIR}/status_mqtt.py \\
--state-file /run/rtk/state.json \\
--mqtt-host \${MQTT_HOST} \\
--mqtt-port \${MQTT_PORT} \\
--mqtt-user \${MQTT_USER} \\
--mqtt-pass \${MQTT_PASS} \\
--topic-prefix \${MQTT_TOPIC_PREFIX} \\
--interval 5 \\
--ha-discovery \\
--device-name "RTK Base" \\
--device-id rtk_base
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
EOF
echo "Aktiviere Services..."
systemctl daemon-reload
systemctl enable rtk-base.service
systemctl enable rtk-status.service
echo
echo "Installation abgeschlossen."
echo
echo "Nächste Schritte:"
echo "1) sudo nano ${ENV_FILE}"
echo "2) MQTT_PASS prüfen/anpassen"
echo "3) sudo systemctl restart rtk-base.service rtk-status.service"
echo "4) sudo journalctl -u rtk-base.service -f"
echo