Update install.sh
This commit is contained in:
+43
-33
@@ -47,7 +47,7 @@ if [ -f "$CONFIG_FILE" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# === МЕНЮ ПРИ НАСТРОЕННОМ MQTT ===
|
# === МЕНЮ ПРИ НАСТРОЕННОМ MQTT ===
|
||||||
ACTION="install" # install | update | add_device | change_mqtt | uninstall
|
ACTION="install"
|
||||||
|
|
||||||
if [ "$MQTT_CONFIGURED" = "true" ]; then
|
if [ "$MQTT_CONFIGURED" = "true" ]; then
|
||||||
CURRENT_HOST=$(uci get openwrt_ha.main.host)
|
CURRENT_HOST=$(uci get openwrt_ha.main.host)
|
||||||
@@ -66,13 +66,14 @@ if [ "$MQTT_CONFIGURED" = "true" ]; then
|
|||||||
2) ACTION="add_device" ;;
|
2) ACTION="add_device" ;;
|
||||||
3) ACTION="change_mqtt" ;;
|
3) ACTION="change_mqtt" ;;
|
||||||
4) ACTION="uninstall" ;;
|
4) ACTION="uninstall" ;;
|
||||||
*) exit 1 ;;
|
5) exit 0 ;;
|
||||||
|
*) error "Неверный выбор."; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === УДАЛЕНИЕ ===
|
# === УДАЛЕНИЕ ===
|
||||||
if [ "$ACTION" = "uninstall" ]; then
|
if [ "$ACTION" = "uninstall" ]; then
|
||||||
info "Удаление..."
|
info "Удаление интеграции..."
|
||||||
crontab -l 2>/dev/null | grep -v "mqtt_ha_discovery.sh" | crontab - 2>/dev/null || true
|
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/cron restart 2>/dev/null || true
|
||||||
/etc/init.d/openwrt_presence stop 2>/dev/null || true
|
/etc/init.d/openwrt_presence stop 2>/dev/null || true
|
||||||
@@ -83,13 +84,13 @@ if [ "$ACTION" = "uninstall" ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === ВВОД НАСТРОЕК MQTT ===
|
# === ВВОД НАСТРОЕК MQTT (только при install/change_mqtt) ===
|
||||||
if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ]; then
|
if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Настройка MQTT брокера ==="
|
echo "=== Настройка MQTT брокера ==="
|
||||||
echo "(Нажмите Enter для значения по умолчанию)"
|
echo "(Нажмите Enter для значения по умолчанию)"
|
||||||
|
|
||||||
if [ "$MQTT_CONFIGURED" = "true" ]; then
|
if [ "$MQTT_CONFIGURED" = "true" ] && [ "$ACTION" = "change_mqtt" ]; then
|
||||||
DEFAULT_HOST=$(uci get openwrt_ha.main.host)
|
DEFAULT_HOST=$(uci get openwrt_ha.main.host)
|
||||||
DEFAULT_PORT=$(uci get openwrt_ha.main.port)
|
DEFAULT_PORT=$(uci get openwrt_ha.main.port)
|
||||||
DEFAULT_USER=$(uci get openwrt_ha.main.user)
|
DEFAULT_USER=$(uci get openwrt_ha.main.user)
|
||||||
@@ -147,9 +148,9 @@ if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ]; then
|
|||||||
info "Настройки MQTT сохранены."
|
info "Настройки MQTT сохранены."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === ДОБАВЛЕНИЕ УСТРОЙСТВ ===
|
# === ДОБАВЛЕНИЕ УСТРОЙСТВ (только при install/add_device) ===
|
||||||
ASK_DEVICES=false
|
ASK_DEVICES=false
|
||||||
if [ "$ACTION" = "install" ] || [ "$ACTION" = "change_mqtt" ] || [ "$ACTION" = "add_device" ]; then
|
if [ "$ACTION" = "install" ] || [ "$ACTION" = "add_device" ]; then
|
||||||
ASK_DEVICES=true
|
ASK_DEVICES=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -161,7 +162,6 @@ if [ "$ASK_DEVICES" = "true" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ASK_DEVICES" = "true" ]; then
|
if [ "$ASK_DEVICES" = "true" ]; then
|
||||||
# Находим первый свободный индекс
|
|
||||||
DEVICE_COUNT=1
|
DEVICE_COUNT=1
|
||||||
while uci -q get "openwrt_ha.device${DEVICE_COUNT}" >/dev/null 2>&1; do
|
while uci -q get "openwrt_ha.device${DEVICE_COUNT}" >/dev/null 2>&1; do
|
||||||
DEVICE_COUNT=$((DEVICE_COUNT + 1))
|
DEVICE_COUNT=$((DEVICE_COUNT + 1))
|
||||||
@@ -215,7 +215,6 @@ if [ "$ASK_DEVICES" = "true" ]; then
|
|||||||
read DEVICE_DELAY
|
read DEVICE_DELAY
|
||||||
if [ -z "$DEVICE_DELAY" ]; then DEVICE_DELAY="$DEFAULT_DELAY"; fi
|
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}"='device'
|
||||||
uci set "openwrt_ha.device${DEVICE_COUNT}.name"="$DEVICE_NAME"
|
uci set "openwrt_ha.device${DEVICE_COUNT}.name"="$DEVICE_NAME"
|
||||||
uci set "openwrt_ha.device${DEVICE_COUNT}.macs"="$DEVICE_MACS"
|
uci set "openwrt_ha.device${DEVICE_COUNT}.macs"="$DEVICE_MACS"
|
||||||
@@ -232,49 +231,60 @@ if [ "$ASK_DEVICES" = "true" ]; then
|
|||||||
done
|
done
|
||||||
fi
|
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"
|
error "Не удалось подключиться к репозиторию: $GITEA_RAW_URL"
|
||||||
exit 1
|
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
|
fi
|
||||||
|
|
||||||
wget --no-check-certificate -O /etc/hostapd.user "$GITEA_RAW_URL/hostapd.user" >/dev/null 2>&1 || exit 1
|
# === АВТОЗАПУСК (только при install/update/change_mqtt) ===
|
||||||
wget --no-check-certificate -O /usr/bin/mqtt_ha_discovery.sh "$GITEA_RAW_URL/mqtt_ha_discovery.sh" >/dev/null 2>&1 || exit 1
|
if [ "$ACTION" = "install" ] || [ "$ACTION" = "update" ] || [ "$ACTION" = "change_mqtt" ]; then
|
||||||
wget --no-check-certificate -O /etc/init.d/openwrt_presence "$GITEA_RAW_URL/openwrt_presence" >/dev/null 2>&1 || exit 1
|
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
|
sleep 2
|
||||||
|
if ! ps | grep -q "[h]ostapd_cli"; then
|
||||||
# === АВТОЗАПУСК ===
|
|
||||||
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
|
|
||||||
warn "Служба запущена, но процесс hostapd_cli не найден."
|
warn "Служба запущена, но процесс hostapd_cli не найден."
|
||||||
echo "Проверьте: logread | grep hostapd"
|
echo "Проверьте: logread | grep hostapd"
|
||||||
echo "Возможно, ваши интерфейсы Wi-Fi называются не phy0-ap0/phy1-ap0 (проверьте: iw dev)"
|
echo "Возможно, ваши интерфейсы Wi-Fi называются не phy0-ap0/phy1-ap0 (проверьте: iw dev)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === CRON ===
|
# === CRON ===
|
||||||
info "Настройка Cron..."
|
info "Настройка Cron..."
|
||||||
if command -v crontab >/dev/null 2>&1; then
|
if command -v crontab >/dev/null 2>&1; then
|
||||||
if ! crontab -l 2>/dev/null | grep -q "mqtt_ha_discovery.sh"; 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
|
(crontab -l 2>/dev/null; echo "* * * * * /usr/bin/mqtt_ha_discovery.sh") | crontab - 2>/dev/null
|
||||||
/etc/init.d/cron restart 2>/dev/null
|
/etc/init.d/cron restart 2>/dev/null
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
warn "Cron не установлен. Установите: opkg install cron"
|
warn "Cron не установлен. Установите: opkg install cron"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# === ИНИЦИАЛИЗАЦИЯ ===
|
# === ПЕРЕЗАПУСК И ИНИЦИАЛИЗАЦИЯ (для всех действий кроме uninstall) ===
|
||||||
info "Первичная инициализация..."
|
info "Применение изменений..."
|
||||||
/usr/bin/mqtt_ha_discovery.sh >/dev/null 2>&1 || warn "Инициализация завершилась с ошибкой."
|
/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 ""
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
info "Установка успешно завершена!"
|
info "Операция успешно завершена!"
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo "Конфигурация: vi /etc/config/openwrt_ha"
|
echo "Конфигурация: vi /etc/config/openwrt_ha"
|
||||||
echo "Просмотр: uci show openwrt_ha"
|
echo "Просмотр: uci show openwrt_ha"
|
||||||
|
|||||||
Reference in New Issue
Block a user