7.1 KiB
7.1 KiB
🛠️ Настройки ESP - Руководство
📍 Как открыть настройки
-
Через бургер-меню (левый нижний угол):
- Кликнуть на иконку бургера (три полоски)
- Выбрать пункт с иконкой ⚙️ (Настройки)
-
Прямой переход:
- Открыть URL:
http://localhost:5173/config
- Открыть URL:
🔐 Доступ к настройкам
Настройки доступны только пользователям с ролями:
- Техник (technic)
- Администратор (admin)
Если у вас нет прав доступа, появится сообщение "Нет доступа".
📊 Параметры ESP
1. hz - Частота (Hz)
- Диапазон: 9999 - 100000
- По умолчанию: 14000
- Описание: Частота работы ESP модуля
2. MaxTime - Максимальное время (ms)
- Диапазон: 1000 - 200000
- По умолчанию: 140000
- Описание: Максимальное время работы
3. maxShot - Максимум выстрелов
- Диапазон: 1 - 100
- По умолчанию: 2
- Описание: Максимальное количество выстрелов
4. maxA - Максимальная амплитуда
- Диапазон: 1 - 255
- По умолчанию: 80
- Описание: Максимальная амплитуда сигнала
5. zvtime - Время звука (ms)
- Диапазон: 1000 - 200000
- По умолчанию: 95000
- Описание: Длительность звукового сигнала
6. otime - Время отклика
- Диапазон: 1 - 100
- По умолчанию: 4
- Описание: Время отклика системы
🎯 Как изменить параметр
Шаг 1: Изменение значения
- Найдите нужный параметр в списке
- Измените значение в поле ввода
- Появится кнопка "Применить" (зелёная)
Шаг 2: Сохранение
- Нажмите кнопку "Применить"
- Система выполнит:
- ✅ Валидацию значения (проверка диапазона)
- 📡 Отправку команды на ESP через Serial порт
- 💾 Сохранение в файл
data/esp.ini
- При успехе появится индикатор "✓ Сохранено"
Шаг 3: Отмена изменения
- Нажмите кнопку "✕" справа от "Применить"
- Значение вернётся к предыдущему
🔄 Логика работы (под капотом)
Последовательность событий:
1️⃣ КЛИЕНТ (Vue.js)
└─> Изменение значения hz с 14000 на 15000
└─> Валидация: 9999 ≤ 15000 ≤ 100000 ✅
└─> Отправка через WebSocket: {do:"cfg-esp", cfg:"hz", value:15000}
2️⃣ СЕРВЕР (Node.js)
└─> Получение команды
└─> Сохранение старого значения: previousValue = 14000
└─> Обновление в памяти: espConfig.hz = 15000
└─> Отправка на ESP через Serial: "hz=15000;\n"
┌─────────────────────┐
│ ESP ответила? │
└─────────────────────┘
│
┌─────┴─────┐
✅ ДА ❌ НЕТ
│ │
↓ ↓
Сохранить Откатить
в файл hz=14000
│ │
↓ ↓
Отправить Отправить
успех ошибку
3️⃣ КЛИЕНТ (Vue.js)
└─> Получение ответа
└─> Обновление UI
└─> Показ уведомления
📁 Файлы системы
server/data/esp.ini
Хранит текущие настройки ESP в формате JSON:
{
"hz": 14000,
"MaxTime": 140000,
"maxShot": 2,
"maxA": 80,
"zvtime": 95000,
"otime": 4
}
⚠️ Обработка ошибок
Ошибка валидации
- Причина: Значение вне диапазона
- Действие: Отображается сообщение об ошибке
- Пример: "Значение должно быть от 9999 до 100000"
Ошибка отправки на ESP
- Причина: ESP не ответила на команду
- Действие: Откат к предыдущему значению
- Сообщение: "❌ Не удалось сохранить"
Ошибка загрузки настроек
- Причина: Файл esp.ini недоступен
- Действие: Отображается страница ошибки
- Решение: Проверить наличие файла
server/data/esp.ini
🔧 Техническая информация
WebSocket команды:
Получение настроек
// Клиент → Сервер
{
"do": "cfg-esp-get"
}
// Сервер → Клиент
{
"do": "cfg-esp-get",
"cfg": {
"hz": 14000,
"MaxTime": 140000,
...
}
}
Сохранение параметра
// Клиент → Сервер
{
"do": "cfg-esp",
"cfg": "hz",
"value": 15000
}
// Сервер → Клиент (успех)
{
"do": "cfg-esp",
"cfg": "hz",
"value": 15000
}
// Сервер → Клиент (ошибка)
{
"do": "error",
"message": "Ошибка настройки ESP: timeout",
"type": "esp_config_failed",
"cfg": "hz"
}
🚀 Используемые файлы
Frontend
client/src/pages/ConfigPage.vue- Страница настроекclient/src/composables/config/useConfigESP.js- Логика работы с настройкамиclient/src/router/index.js- Маршрут/configclient/src/pages/HomePage.vue- Обработчик клика по "Настройки"
Backend
server/ws.js:952- Обработчикcfg-esp-getserver/ws.js:974- Обработчикcfg-espserver/data/esp.ini- Файл хранения настроек
✅ Преимущества реализации
- Безопасность: Откат при ошибке ESP
- Валидация: Проверка диапазонов перед отправкой
- Обратная связь: Визуальные индикаторы состояния
- Атомарность: Каждый параметр сохраняется отдельно
- Логирование: Детальные логи на сервере
Создано: 2025-01-06