Files
vue-pult/docs/CONFIG_SETTINGS.md
2025-10-07 10:18:02 +03:00

228 lines
7.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🛠️ Настройки 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*