Adding install script in /tools
This commit is contained in:
Executable
+108
@@ -0,0 +1,108 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user