228 lines
7.1 KiB
Markdown
228 lines
7.1 KiB
Markdown
# 🛠️ Настройки ESP - Руководство
|
||
|
||
## 📍 Как открыть настройки
|
||
|
||
1. **Через бургер-меню** (левый нижний угол):
|
||
- Кликнуть на иконку бургера (три полоски)
|
||
- Выбрать пункт с иконкой ⚙️ (Настройки)
|
||
|
||
2. **Прямой переход**:
|
||
- Открыть URL: `http://localhost:5173/config`
|
||
|
||
## 🔐 Доступ к настройкам
|
||
|
||
Настройки доступны только пользователям с ролями:
|
||
- **Техник** (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: Изменение значения
|
||
1. Найдите нужный параметр в списке
|
||
2. Измените значение в поле ввода
|
||
3. Появится кнопка **"Применить"** (зелёная)
|
||
|
||
### Шаг 2: Сохранение
|
||
1. Нажмите кнопку **"Применить"**
|
||
2. Система выполнит:
|
||
- ✅ Валидацию значения (проверка диапазона)
|
||
- 📡 Отправку команды на ESP через Serial порт
|
||
- 💾 Сохранение в файл `data/esp.ini`
|
||
3. При успехе появится индикатор **"✓ Сохранено"**
|
||
|
||
### Шаг 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:
|
||
|
||
```json
|
||
{
|
||
"hz": 14000,
|
||
"MaxTime": 140000,
|
||
"maxShot": 2,
|
||
"maxA": 80,
|
||
"zvtime": 95000,
|
||
"otime": 4
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ Обработка ошибок
|
||
|
||
### Ошибка валидации
|
||
- **Причина**: Значение вне диапазона
|
||
- **Действие**: Отображается сообщение об ошибке
|
||
- **Пример**: "Значение должно быть от 9999 до 100000"
|
||
|
||
### Ошибка отправки на ESP
|
||
- **Причина**: ESP не ответила на команду
|
||
- **Действие**: Откат к предыдущему значению
|
||
- **Сообщение**: "❌ Не удалось сохранить"
|
||
|
||
### Ошибка загрузки настроек
|
||
- **Причина**: Файл esp.ini недоступен
|
||
- **Действие**: Отображается страница ошибки
|
||
- **Решение**: Проверить наличие файла `server/data/esp.ini`
|
||
|
||
---
|
||
|
||
## 🔧 Техническая информация
|
||
|
||
### WebSocket команды:
|
||
|
||
#### Получение настроек
|
||
```javascript
|
||
// Клиент → Сервер
|
||
{
|
||
"do": "cfg-esp-get"
|
||
}
|
||
|
||
// Сервер → Клиент
|
||
{
|
||
"do": "cfg-esp-get",
|
||
"cfg": {
|
||
"hz": 14000,
|
||
"MaxTime": 140000,
|
||
...
|
||
}
|
||
}
|
||
```
|
||
|
||
#### Сохранение параметра
|
||
```javascript
|
||
// Клиент → Сервер
|
||
{
|
||
"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` - Маршрут `/config`
|
||
- `client/src/pages/HomePage.vue` - Обработчик клика по "Настройки"
|
||
|
||
### Backend
|
||
- `server/ws.js:952` - Обработчик `cfg-esp-get`
|
||
- `server/ws.js:974` - Обработчик `cfg-esp`
|
||
- `server/data/esp.ini` - Файл хранения настроек
|
||
|
||
---
|
||
|
||
## ✅ Преимущества реализации
|
||
|
||
1. **Безопасность**: Откат при ошибке ESP
|
||
2. **Валидация**: Проверка диапазонов перед отправкой
|
||
3. **Обратная связь**: Визуальные индикаторы состояния
|
||
4. **Атомарность**: Каждый параметр сохраняется отдельно
|
||
5. **Логирование**: Детальные логи на сервере
|
||
|
||
---
|
||
|
||
*Создано: 2025-01-06*
|