diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..fd2890d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,191 @@ +# CHANGELOG — ACS Monitoring (СКУД + Датчики воды) + +--- + +## [Unreleased] — 2026 Q2 + +- ⏳ Прошивка door-controller v2.0 ожидает первого деплоя на железо +- ⏳ Датчик воды v3.5.8 ожидает USB flash деплой + +--- + +## [2026-02-10] — Прошивка СКУД v2.0 написана + +### Добавлено +- `firmware/door-controller-v2.0/door_controller_v2.ino` — главный файл state machine +- `firmware/door-controller-v2.0/config.h` — GPIO пины, константы, структуры DeviceConfig +- `firmware/door-controller-v2.0/mqtt_handler.h` — MQTT клиент: provision, heartbeat, команды, batch sync +- `firmware/door-controller-v2.0/web_config.h` — AP Mode captive portal с тёмной темой (192.168.4.1) +- `firmware/door-controller-v2.0/wiegand_reader.h` — Wiegand 26/34 bit с проверкой чётности +- `firmware/door-controller-v2.0/card_cache.h` — NVS кеш до 10,000 карт +- `firmware/door-controller-v2.0/event_queue.h` — Offline очередь до 500 событий +- `firmware/door-controller-v2.0/README.md` — полная документация + +### Возможности v2.0 +- WiFi + MQTT связь с сервером +- Авторизация карт по локальному кешу (до 10,000) +- Offline режим: карты работают без WiFi, события копятся и синхронизируются +- AP Mode при первом запуске: `ACS-DOOR-XXXX`, 192.168.4.1 +- OTA обновления +- Команды от сервера: open_door, close_door, reboot, factory_reset, sync_cards, set_door_duration +- Heartbeat каждые 30 сек (uptime, RSSI, free_heap, card_cache_count) + +--- + +## [2026-02-09] — Завершение страниц СКУД + +### Обновлено +- **AccessLogPage.tsx** — полная переработка: + - Группировка событий по дате (Сегодня / Вчера / дата) + - Сворачиваемые группы со счётчиком разрешённых/запрещённых + - Calendar picker с пресетами (Сегодня / Неделя / Месяц) + - Пагинация (load more, по 50 записей) + - Экспорт CSV с BOM для Excel + - Фильтр по устройству + - Сортировка новые/старые + - Цветовые бейджи по типу события + - Подсветка запрещённых проходов красным фоном + +- **FirmwarePage.tsx** — добавлено: + - Удаление прошивки + - Модалка "Подробнее" (changelog, размер, дата) + - Переключение стабильная/бета (`toggleFirmwareStable`) + - Кнопка "Push OTA" на устройства (`pushFirmwareOTA`) + +- **DevicesPage.tsx** — добавлено: + - Кнопка "Открыть дверь" прямо из карточки + - Настройка сети устройства (static IP / DHCP, gateway, DNS) + - Команды: перезагрузка, синхронизация карт, blink LED + - Dropdown обновления прошивки + +- **AccessKeysPage.tsx** — добавлено: + - Интеграция со станцией регистрации (кнопка "Считать карту") + - Пагинация + - Фильтр по типу карты (RFID / RF) + +- **EmployeesPage.tsx** — добавлено: + - Фильтр по отделу/должности + - Пагинация + +### Деплой +```bash +cd /var/www/acs-monitoring/frontend && npm run build +# Сборка: 2708 модулей, 10.28с, 843 kB JS, 42 kB CSS +``` + +--- + +## [2026-02-09] — Backend API прошивок завершён + +### Добавлено/завершено в `backend/src/api/firmware.ts` +- GET `/api/firmware` — список прошивок +- POST `/api/firmware` — добавить прошивку +- DELETE `/api/firmware/:id` — удалить +- PUT `/api/firmware/:id/toggle-stable` — стабильная/бета +- POST `/api/firmware/:id/push-ota` — OTA push на устройства + +--- + +## [2026-02-09] — СКУД backend MQTT завершён + +### Добавлено в `backend/src/mqtt/skud-handlers.ts` +- Обработчик `devices/provision` — активация нового устройства, запись в `devices`, отправка списка карт +- Обработчик `skud/{id}/status` — обновление `is_online`, `last_seen`, firmware_version +- Обработчик `skud/{id}/access` — запись в `access_events`, проверка прав +- Обработчик `skud/{id}/sync` — batch синхронизация offline событий +- Отправка команд через `skud/{id}/command` +- Топик `skud/{id}/provision/ack` с ответом + списком карт + +--- + +## [2026-02-09] — Первые 5 страниц СКУД (базовая версия) + +### Создано (первая версия) +- `AccessLogPage.tsx` — журнал с базовой таблицей +- `FirmwarePage.tsx` — список прошивок, загрузка +- `DevicesPage.tsx` — список дверей, статус online/offline +- `AccessKeysPage.tsx` — CRUD карт, привязка к сотруднику +- `EmployeesPage.tsx` — CRUD сотрудников, RF регистрация +- `DiscoveryPage.tsx` — поиск новых устройств + +--- + +## [2026-02-09] — Сборка первого физического устройства + +### Выполнено +- Получены все компоненты +- ESP32 DevKit 30-pin прошит прошивкой v1.0 +- Mini560 настроен на 5.0V +- Wiegand считыватель подключён (GPIO 26/27) +- Реле подключено (GPIO 25) +- Кнопка выхода (GPIO 33) +- Тест: считыватель читает карты (любая карта открывает — тестовый режим v1.0) + +--- + +## [2026-01-30] — Прошивка СКУД v1.0 (тестовая) + +### Добавлено +- `firmware/door-controller-v1.0/` — тестовая прошивка +- Wiegand RFID 26/34 bit +- Управление реле (замок) +- Кнопка выхода (GPIO прерывание) +- Serial Monitor логи +- Автотесты компонентов при старте +- **⚠️ Открывает дверь для ЛЮБОЙ карты** — только для тестирования + +--- + +## [2026-01-30] — Схема подключения и документация + +### Добавлено +- Схема подключения ESP32 ↔ Wiegand ↔ Реле ↔ Замок ↔ БП ↔ АКБ +- Распиновка ESP32 DevKit 30-pin +- Чеклист сборки +- Инструкция по прошивке +- `TROUBLESHOOTING.md` + +--- + +## [2026-01-28] — Проектирование БД и веб-панели + +### Добавлено +- SQL схема 6 таблиц: employees, access_keys, devices, access_log, firmware, remote_controls +- Структура веб-панели: раздел СКУД в боковом меню +- Обсуждение шлагбаумов, RF брелоков, станции регистрации +- MQTT топики и протокол взаимодействия + +--- + +## [2026-01-14] — Начало проекта СКУД + +### Добавлено +- Архитектурное решение: ESP32 на каждую дверь + Wiegand RFID +- Список компонентов для 1 двери (~4 750 ₽) +- Заказ компонентов (15 дверей) +- Интеграция с существующей системой ACS Monitoring + +--- + +## История (датчики воды) + +### [2026-01-20] — Прошивка датчика воды v3.5.8 +- **journal-first архитектура**: запись в SPIFFS перед MQTT +- Монотонные счётчики для дедупликации +- FIFO очередь неотправленных показаний +- `isFresh` логика на backend (заменила `isJournal`) +- Исправлен timezone bug (3-часовой offset → pure UTC NTP) +- Устранены аномальные показания > 900 л/мин + +### [2026-01-18] — Прошивка датчика воды v3.5.x +- Non-blocking file scanning (исправлены lockups MQTT keepalive) +- Batch processing файлов журнала +- Оптимизация OTA — исправлено зависание при обновлении + +### [2026-01-01] — Датчики воды v3.3.2 (стабильная) +- Базовая версия с MQTT reporting +- `firmware/water-sensor-v3.3.2/acs_sensor_v3.3.2.ino` + +--- + +*Обновлено: май 2026*