4.4 KiB
Печать чеков команды на MXW01
Печать работает только на локальной площадке (APP_MODE=venue). На вкладке
«Команды» выберите «Печать чека» → проверьте предпросмотр → нажмите «Печатать».
Firefox и Chrome используют один серверный API; Web Bluetooth и настройки
браузера не нужны. Сервер берёт название и пароль команды из базы, а адрес QR —
из APP_BASE_URL площадки.
Настройка площадки на Linux
- Сервер venue и MXW01 должны находиться рядом на одном Linux-компьютере с включённым Bluetooth. Установите термобумагу и включите принтер.
- В локальном
venue/.envзадайтеMXW01_ADDRESS=<Bluetooth MAC принтера>. Адрес текущего MXW01 уже настроен локально;.envне включается в Git. - Соберите комплект существующей командой
make build, затем запуститеmake venue. Службаreceipt_printerзапускается из того же Go-образа. - Если приложение телефона подключено к принтеру, закройте его.
Служба печати использует прямое Bluetooth LE-соединение. Её контейнер работает
с network_mode: host и NET_RAW, без privileged, доступа к базе и TCP-порта.
API передаёт растровые данные через закрытый Unix-сокет в общем Docker-volume.
Остальные контейнеры сохраняют существующую сеть. Python, Bleak и BlueZ D-Bus
для печати не нужны.
Без MXW01_ADDRESS игра продолжает работать; при попытке печати сервер сообщает,
что принтер не настроен. На публичном сервере кнопки печати нет, и API её запрещает.
Поведение и проверка
- За один запрос печатается один чек шириной 384 пикселя. Одновременный запрос получает сообщение «принтер занят»; постоянной очереди нет.
- Сервер проверяет бумагу и состояние MXW01, затем ждёт подтверждение завершения и проверяет контрольную сумму изображения. Общий таймаут — 110 секунд.
- Длинное название переносится. Неподдерживаемые символы, слишком длинная ссылка или чек выше 1024 пикселей отклоняются до печати.
- После разрыва связи или таймаута сначала проверьте бумажный чек: он мог уже выйти. Автоматической повторной печати нет. После устранения проблемы повторите печать вручную; спящий принтер разбудите кнопкой.
- Перед игрой напечатайте две разные команды, проверьте названия и отсканируйте QR телефоном в Wi-Fi площадки. Ссылка должна открывать напечатанную команду.
Чек содержит ссылку доступа команды; передавайте его участникам этой команды.
PNG-предпросмотр требует авторизации и отдаётся с Cache-Control: no-store.
Протокол проверен на текущем MXW01: фактический ответ состояния содержит 10 байт, а ответ завершения — подтверждение и две копии CRC изображения. Источник описания формата: измерения протокола MXW01.