Update install.sh

This commit is contained in:
2026-10-12 13:49:01 +03:00
parent ac2cbf8454
commit 845a96a619
+25 -15
View File
@@ -47,7 +47,7 @@ if [ -f "$CONFIG_FILE" ]; then
fi
# === МЕНЮ ПРИ НАСТРОЕННОМ MQTT ===
ACTION="install" # install | update | add_device | change_mqtt | uninstall
ACTION="install"
if [ "$MQTT_CONFIGURED" = "true" ]; then
CURRENT_HOST=$(uci get openwrt_ha.main.host)
@@ -66,13 +66,14 @@ if [ "$MQTT_CONFIGURED" = "true" ]; then
2) ACTION="add_device" ;;
3) ACTION="change_mqtt" ;;
4) ACTION="uninstall" ;;
*) exit 1 ;;
5) exit 0 ;;
*) error "Неверный выбор."; exit 1 ;;
esac
fi
# === УДАЛЕНИЕ ===
if [ "$ACTION" = "uninstall" ]; then
info "Удаление..."
info "Удаление интеграции..."
crontab -l 2>/dev/null | grep -v "mqtt_ha_discovery.sh" | crontab - 2>/dev/null || true
/etc/init.d/cron restart 2>/dev/null || true
/etc/init.d/openwrt_presence stop 2>/dev/null || true
@@ -83,13 +84,13 @@ if [ "$ACTION" = "uninstall" ]; then
exit 0
fi
# === ВВОД НАСТРОЕК MQTT ===
# === ВВОД НАСТРОЕК MQTT (только при install/change_mqtt) ===
if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ]; then
echo ""
echo "=== Настройка MQTT брокера ==="
echo "(Нажмите Enter для значения по умолчанию)"
if [ "$MQTT_CONFIGURED" = "true" ]; then
if [ "$MQTT_CONFIGURED" = "true" ] && [ "$ACTION" = "change_mqtt" ]; then
DEFAULT_HOST=$(uci get openwrt_ha.main.host)
DEFAULT_PORT=$(uci get openwrt_ha.main.port)
DEFAULT_USER=$(uci get openwrt_ha.main.user)
@@ -147,9 +148,9 @@ if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ]; then
info "Настройки MQTT сохранены."
fi
# === ДОБАВЛЕНИЕ УСТРОЙСТВ ===
# === ДОБАВЛЕНИЕ УСТРОЙСТВ (только при install/add_device) ===
ASK_DEVICES=false
if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ] || [ "$ACTION" = "add_device" ]; then
if [ "$ACTION" = "install" ] || [ "$ACTION" = "add_device" ]; then
ASK_DEVICES=true
fi
@@ -161,7 +162,6 @@ if [ "$ASK_DEVICES" = "true" ]; then
fi
if [ "$ASK_DEVICES" = "true" ]; then
# Находим первый свободный индекс
DEVICE_COUNT=1
while uci -q get "openwrt_ha.device${DEVICE_COUNT}" >/dev/null 2>&1; do
DEVICE_COUNT=$((DEVICE_COUNT + 1))
@@ -215,7 +215,6 @@ if [ "$ASK_DEVICES" = "true" ]; then
read DEVICE_DELAY
if [ -z "$DEVICE_DELAY" ]; then DEVICE_DELAY="$DEFAULT_DELAY"; fi
# Сохраняем через uci
uci set "openwrt_ha.device${DEVICE_COUNT}"='device'
uci set "openwrt_ha.device${DEVICE_COUNT}.name"="$DEVICE_NAME"
uci set "openwrt_ha.device${DEVICE_COUNT}.macs"="$DEVICE_MACS"
@@ -232,7 +231,13 @@ if [ "$ASK_DEVICES" = "true" ]; then
done
fi
# === СКАЧИВАНИЕ СКРИПТОВ ===
# === УДАЛЕНИЕ МАРКЕРА ИНИЦИАЛИЗАЦИИ ===
# При любых изменениях нужно переинициализировать состояния
rm -f "$STATES_DIR/.initialized"
info "Маркер инициализации удалён. Состояния будут переинициализированы при следующем запуске."
# === СКАЧИВАНИЕ СКРИПТОВ (только при install/update/change_mqtt) ===
if [ "$ACTION" = "install" ] || [ "$ACTION" = "update" ] || [ "$ACTION" = "change_mqtt" ]; then
info "Загрузка файлов из репозитория..."
if ! wget --spider --no-check-certificate "$GITEA_RAW_URL/hostapd.user" >/dev/null 2>&1; then
error "Не удалось подключиться к репозиторию: $GITEA_RAW_URL"
@@ -244,8 +249,10 @@ wget --no-check-certificate -O /usr/bin/mqtt_ha_discovery.sh "$GITEA_RAW_URL/mqt
wget --no-check-certificate -O /etc/init.d/openwrt_presence "$GITEA_RAW_URL/openwrt_presence" >/dev/null 2>&1 || exit 1
chmod +x /etc/hostapd.user /usr/bin/mqtt_ha_discovery.sh /etc/init.d/openwrt_presence
fi
# === АВТОЗАПУСК ===
# === АВТОЗАПУСК (только при install/update/change_mqtt) ===
if [ "$ACTION" = "install" ] || [ "$ACTION" = "update" ] || [ "$ACTION" = "change_mqtt" ]; then
info "Настройка автозапуска..."
/etc/init.d/openwrt_presence enable >/dev/null 2>&1
/etc/init.d/openwrt_presence restart >/dev/null 2>&1
@@ -267,14 +274,17 @@ if command -v crontab >/dev/null 2>&1; then
else
warn "Cron не установлен. Установите: opkg install cron"
fi
fi
# === ИНИЦИАЛИЗАЦИЯ ===
info "Первичная инициализация..."
/usr/bin/mqtt_ha_discovery.sh >/dev/null 2>&1 || warn "Инициализация завершилась с ошибкой."
# === ПЕРЕЗАПУСК И ИНИЦИАЛИЗАЦИЯ (для всех действий кроме uninstall) ===
info "Применение изменений..."
/etc/init.d/openwrt_presence restart >/dev/null 2>&1
/usr/bin/mqtt_ha_discovery.sh >/dev/null 2>&1 || warn "Discovery завершился с ошибкой."
info "Изменения применены."
echo ""
echo "=================================================="
info "Установка успешно завершена!"
info "Операция успешно завершена!"
echo "=================================================="
echo "Конфигурация: vi /etc/config/openwrt_ha"
echo "Просмотр: uci show openwrt_ha"