# 🛠️ Настройки 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*