Danil Iarosh 35c9693740 fix: stabilize OTA updates in v2.0.2
- Исправлен перезапуск приложения после замены файлов и добавлено подтверждение запуска новой версии.
- Обеспечены откат при ошибке и корректное завершение фоновых задач.
- Исключены посторонние DLL из Windows-сборки, обновлены тесты и инструкция ручного перехода с v2.0.1.
2026-09-17 10:30:18 +03:00

206 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

# Plate Config App
Приложение для настройки и тестирования аппаратных плат через COM-порт.
Позволяет подключаться к плате, проходить авторизацию, отправлять команды,
тестировать входы, выходы и подсветку, обновлять прошивку и назначать роли.
---
## Содержание
- [Системные требования](#системные-требования)
- [Установка и запуск](#установка-и-запуск)
- [Обновление приложения](#обновление-приложения)
- [Интерфейс приложения](#интерфейс-приложения)
- [Главная страница](#главная-страница)
- [Подключение к плате](#подключение-к-плате)
- [Панель управления](#панель-управления)
- [Файлы данных](#файлы-данных)
- [Настройки](#настройки)
- [Документация для разработчиков](#документация-для-разработчиков)
---
## Системные требования
- Windows 10 / 11
- Debian 13 x86_64 (для Linux-сборки и запуска Linux-пакета)
- COM-порт (физический или виртуальный), к которому подключена плата
Для запуска из собранного EXE дополнительных зависимостей не требуется.
---
## Установка и запуск
### Из готовой сборки
1. Скопируйте сборку для своей платформы в каталог с папками ресурсов.
2. На Windows запустите `plate_config_app-windows-x86_64.exe`.
3. На Debian запустите `./plate_config_app-linux-x86_64`.
Файл настроек `settings.json` создается автоматически рядом с EXE при первом
изменении настроек.
### Из исходников (для разработки)
См. [DEVELOPMENT.md](DEVELOPMENT.md).
Для Debian 13 x86_64 используйте [build_linux.sh](build_linux.sh); подробности
сборки приведены в [BUILD_EXE.md](BUILD_EXE.md).
---
## Обновление приложения
При запуске приложение в фоне переходит по адресу
`https://git.robotail.pro/Robotail/plate-config-app/releases/latest` и сравнивает
тег последнего релиза с текущей версией. Кнопка «Скачать обновление» появляется
под настройками только тогда, когда удалённый тег формата `vX.Y.Z` численно
новее: сначала сравнивается major, затем minor и patch.
Приложение скачивает ZIP-пакет текущей платформы, проверяет его целостность и
безопасность, завершает старый процесс, заменяет бинарник и все каталоги из
пакета, а затем запускается заново. Перед заменой создаётся резервная копия;
она удаляется только после подтверждения запуска новой версии. Если запуск
не удался, предыдущая версия восстанавливается, а сообщение записывается
в `update-error.log`. Файл `settings.json` и другие файлы,
которых нет в архиве, сохраняются. Для работы проверки релизы репозитория должны
быть доступны без авторизации.
Имена release-артефактов:
- Windows x86_64: `plate_config_app-windows-x86_64.zip`;
- Linux x86_64: `plate_config_app-linux-x86_64.zip`.
Для перехода с уже установленной v2.0.1 на v2.0.2 обновите приложение вручную:
закройте его, скачайте ZIP-пакет своей платформы и распакуйте содержимое в
каталог приложения с заменой прежних файлов. `settings.json` удалять не нужно.
Начиная с v2.0.2 последующие обновления можно устанавливать кнопкой в приложении.
---
## Интерфейс приложения
### Главная страница
При запуске отображается стартовый экран с кнопками:
- **Новое соединение** -- открывает вкладку настройки COM-порта.
- **Команды платы** -- справочник поддерживаемых команд платы с поиском.
- **Настройки приложения** -- выбор цветовой темы (светлая / темная, зеленый /
синий акцент).
- **Скачать обновление** -- появляется под настройками, если версия последнего
релиза формата `vX.Y.Z` новее версии запущенного приложения.
Приложение поддерживает несколько одновременных подключений: каждое соединение
открывается в отдельной вкладке.
### Подключение к плате
Во вкладке соединения выберите параметры:
| Параметр | Значение по умолчанию |
|--------------|-----------------------|
| Port | (первый доступный) |
| Baud rate | 115200 |
| Data bits | 8 |
| Stop bits | 1 |
| Parity | None |
| Flow control | None |
Нажмите **OK** для подключения. Кнопка **Обновить порты** обновляет список
доступных COM-портов.
### Панель управления
После подключения открывается панель с двумя режимами работы:
#### Базовый режим
В базовом режиме доступны встроенные секции, организованные в сворачиваемые
группы:
| Секция | Описание |
|---------------------------|--------------------------------------------------|
| Обновление прошивки | Загрузка файла и OTA-обновление с прогрессом |
| Тест цвета | Управление светодиодами и режимами подсветки |
| Тест ввода | Мониторинг входов, джойстик, калибровка, ADC |
| Тест оплаты и призов | Монетоприёмник, хоппер, автовыдача призов |
#### PRO-режим
Переключатель «PRO» открывает доступ к расширенным диалогам:
| Действие | Описание |
|-------------------------|--------------------------------------------------|
| Handshake (Авторизация) | AES-256 авторизация на плате (если требуется) |
| Тест ввода | Мониторинг состояния входов в реальном времени |
| Тест подсветки | Управление светодиодами и режимами подсветки |
| Тест силовых выходов | Включение/выключение силовых выходов |
| Обновление прошивки | Загрузка файла прошивки на плату |
| Задание роли | Назначение роли платы |
| Ввод команд | Терминал для отправки произвольных команд вручную |
#### Статус подключения
Индикатор в заголовке вкладки отображает текущее состояние:
- Красный — нет связи.
- Желтый — подключено, требуется авторизация.
- Зеленый — подключено, плата готова к работе.
Кнопка переподключения (↻) позволяет быстро восстановить связь при обрыве.
При подключении приложение определяет режим по версии в стартовой строке платы.
Если версия содержит маркер `no_auth` без учёта регистра, AES-256 авторизация
пропускается, а статус отображается как «Готово без авторизации». Для остальных
и неизвестных версий сохраняется строгая обязательная авторизация.
После успешного OTA и перезагрузки приложение повторно читает версию новой
прошивки. Полная AES-256 авторизация выполняется только для прошивок без маркера
`no_auth`; перед командой `04` повторная авторизация не выполняется. Кнопка
ручной авторизации в терминале использует то же правило совместимости.
---
## Файлы данных
Рядом с EXE (или в корне проекта при запуске из исходников) могут располагаться
папки с конфигурациями:
| Папка | Расширение | Назначение |
|--------------------|------------|------------------------------------------|
| `light_modes/` | `.lm` | Режимы подсветки (формат TOML) |
| `input_mappings/` | `.mapping` | Маппинги входов по играм (формат TOML) |
| `commands/` | `.csv` | Наборы команд платы (разделитель `;`) |
Эти файлы располагаются рядом с EXE (или в корне проекта при запуске из
исходников). При сборке они автоматически копируются в папку `dist/` рядом с
EXE. Можно редактировать файлы конфигураций без пересборки — достаточно
изменить нужный файл и перезапустить приложение.
---
## Настройки
Настройки хранятся в `settings.json` рядом с EXE. Файл создается автоматически.
Доступные параметры (изменяются через диалог в приложении):
| Параметр | Значения | По умолчанию |
|-------------------------|--------------------------|---------------|
| Тема | Светлая / Тёмная | Светлая |
| Акцент | Зелёный / Синий | Зелёный |
| Проверка состояния платы| Вкл / Выкл | Выкл |
| Интервал проверки | 5–60 сек | 10 сек |
---
## Документация для разработчиков
- [DEVELOPMENT.md](DEVELOPMENT.md) -- настройка окружения, структура проекта,
запуск из исходников.
- [BUILD_EXE.md](BUILD_EXE.md) -- сборка EXE-файла через PyInstaller.
- [Система команд платы v2.x.md](%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%20%D0%BF%D0%BB%D0%B0%D1%82%D1%8B%20v2.x.md) --
описание протокола и команд платы.