Update install.sh
This commit is contained in:
+43
-33
@@ -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,49 +231,60 @@ if [ "$ASK_DEVICES" = "true" ]; then
|
||||
done
|
||||
fi
|
||||
|
||||
# === СКАЧИВАНИЕ СКРИПТОВ ===
|
||||
info "Загрузка файлов из репозитория..."
|
||||
if ! wget --spider --no-check-certificate "$GITEA_RAW_URL/hostapd.user" >/dev/null 2>&1; then
|
||||
# === УДАЛЕНИЕ МАРКЕРА ИНИЦИАЛИЗАЦИИ ===
|
||||
# При любых изменениях нужно переинициализировать состояния
|
||||
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"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
wget --no-check-certificate -O /etc/hostapd.user "$GITEA_RAW_URL/hostapd.user" >/dev/null 2>&1 || exit 1
|
||||
wget --no-check-certificate -O /usr/bin/mqtt_ha_discovery.sh "$GITEA_RAW_URL/mqtt_ha_discovery.sh" >/dev/null 2>&1 || exit 1
|
||||
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
|
||||
|
||||
wget --no-check-certificate -O /etc/hostapd.user "$GITEA_RAW_URL/hostapd.user" >/dev/null 2>&1 || exit 1
|
||||
wget --no-check-certificate -O /usr/bin/mqtt_ha_discovery.sh "$GITEA_RAW_URL/mqtt_ha_discovery.sh" >/dev/null 2>&1 || exit 1
|
||||
wget --no-check-certificate -O /etc/init.d/openwrt_presence "$GITEA_RAW_URL/openwrt_presence" >/dev/null 2>&1 || exit 1
|
||||
# === АВТОЗАПУСК (только при 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
|
||||
|
||||
chmod +x /etc/hostapd.user /usr/bin/mqtt_ha_discovery.sh /etc/init.d/openwrt_presence
|
||||
|
||||
# === АВТОЗАПУСК ===
|
||||
info "Настройка автозапуска..."
|
||||
/etc/init.d/openwrt_presence enable >/dev/null 2>&1
|
||||
/etc/init.d/openwrt_presence restart >/dev/null 2>&1
|
||||
|
||||
sleep 2
|
||||
if ! ps | grep -q "[h]ostapd_cli"; then
|
||||
sleep 2
|
||||
if ! ps | grep -q "[h]ostapd_cli"; then
|
||||
warn "Служба запущена, но процесс hostapd_cli не найден."
|
||||
echo "Проверьте: logread | grep hostapd"
|
||||
echo "Возможно, ваши интерфейсы Wi-Fi называются не phy0-ap0/phy1-ap0 (проверьте: iw dev)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# === CRON ===
|
||||
info "Настройка Cron..."
|
||||
if command -v crontab >/dev/null 2>&1; then
|
||||
# === CRON ===
|
||||
info "Настройка Cron..."
|
||||
if command -v crontab >/dev/null 2>&1; then
|
||||
if ! crontab -l 2>/dev/null | grep -q "mqtt_ha_discovery.sh"; then
|
||||
(crontab -l 2>/dev/null; echo "* * * * * /usr/bin/mqtt_ha_discovery.sh") | crontab - 2>/dev/null
|
||||
/etc/init.d/cron restart 2>/dev/null
|
||||
fi
|
||||
else
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user