#!/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 < /etc/systemd/system/rtk-status.service < 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