Поверх игры (borderless windowed):
Компактный оверлей температуры для баз MOZA. Читает датчики напрямую с базы по её серийному протоколу — быстрее и свежее, чем Pit House пишет свой лог. Висит поверх игры, красится по нагреву, помнит свои настройки.
MOZA R9 V2 · MozaHeat
МОТОР 45.5 °C peak 50.3
MOSFET 49.8 °C peak 49.8
КОНТР. 52.0 °C peak 52.0
● Подключено
− + ▴ ⚙ ✕
Неофициальная утилита. К MOZA Racing отношения не имеет. Протокол восстановлен по открытому проекту Boxflat — спасибо его автору.
- Три датчика базы: статор мотора, силовые MOSFET, контроллер (MCU).
- Два источника данных, переключаются сами:
- COM-порт базы — опрос раз в 2 секунды (основной режим);
- лог Pit House — автоматический запасной вариант, если порт занят (обновляется раз в ~30 секунд, потому что чаще Pit House сам не пишет).
- Пики за сессию по каждому датчику (сброс — в меню ⚙).
- Цветовая индикация: зелёный — норма, жёлтый — тепло (60°+),
красный — горячо (72°+). Пороги правятся в начале скрипта
(константы
WARNиHOT). - Определение модели базы по USB PID — показывается в заголовке.
- Окно: без рамки, всегда сверху, таскается мышкой, не утаскивается за край экрана, масштабируется (кнопки −/+, Ctrl+колесо, пресеты в меню), сворачивается в одну строку, помнит позицию/масштаб/прозрачность между запусками.
- Только чтение. Программа физически не умеет ничего записывать в базу — команд записи в коде нет.
| База | Статус |
|---|---|
| MOZA R9 V2 | ✅ проверено вживую |
| Остальные базы MOZA (R3/R5/R12/R16/R21...) | 🟡 должно работать: протокол у MOZA общий для всей линейки, но не проверялось. Модель в заголовке покажется как «Base» — пришлите свой USB PID, добавим в таблицу |
Не-MOZA базы не поддерживаются и поддерживаться не будут — протокол другой.
Просто запусти MozaHeat.exe. Всё.
При первом запуске Windows может показать «неопознанное приложение» (SmartScreen) — это нормальная судьба любого неподписанного exe, жми «Подробнее → Выполнить в любом случае». Антивирусу собранные PyInstaller'ом файлы тоже иногда не нравятся — если ругается, добавь в исключения или собери exe сам из исходника (см. ниже).
Нужен Python 3.9+ и pyserial:
py -m pip install pyserial
py MozaHeat.pypy -m pip install pyinstaller
py -m PyInstaller --onefile --noconsole --name MozaHeat --icon MozaHeat.ico --add-data "MozaHeat.ico;." MozaHeat.pyГотовый файл появится в папке dist. Папку build и файл .spec
после сборки можно удалить.
COM-порт в Windows может держать только одна программа. Отсюда простое правило:
- Pit House закрыт → MozaHeat читает базу напрямую, статус зелёный ● Подключено, обновление раз в 2 секунды. Это основной режим.
- Pit House запущен → порт занят им, статус оранжевый ⚠ Закройте Pit House. Цифры при этом никуда не пропадают — программа сама пересаживается на лог Pit House, просто данные обновляются раз в ~30 секунд и слегка отстают.
Закрывать Pit House нужно полностью: крестик сворачивает его в трей, процесс остаётся жить и держит порт. Правый клик по иконке в трее → выход.
FFB в играх от закрытого Pit House не страдает: настройки хранятся в самой базе, а игры общаются с ней по другому каналу (HID/DirectInput), COM-порт им не нужен. Рабочая схема: настроил профиль в Pit House → закрыл его → катаешь с MozaHeat.
| Действие | Как |
|---|---|
| Перенести окно | зажать ЛКМ в любом месте и тащить |
| Масштаб | кнопки − / +, Ctrl+колесо мыши, пресеты в меню ⚙ |
| Свернуть в одну строку | кнопка ▴ (обратно — ▾) |
| Меню (размер, прозрачность, сброс пиков) | кнопка ⚙ или ПКМ по окну |
| Выход | кнопка ✕ |
Настройки лежат в %APPDATA%\moza_temp_overlay.json —
удалишь файл, окно вернётся к дефолту.
Окно рисуется поверх всего, кроме эксклюзивного полноэкранного режима. В настройках графики игры выбери Borderless / Windowed Fullscreen («окно без рамки») — на FPS это почти не влияет, а любые оверлеи начинают работать. Это ограничение самой Windows, не программы.
| Статус | Что значит | Что делать |
|---|---|---|
| ● Подключено (зелёный) | прямое чтение с базы | ничего, всё отлично |
| ⚠ Закройте Pit House (оранжевый) | порт занят, данные идут из лога | закрыть Pit House из трея |
| база не найдена (USB) | база не видна в системе | проверить USB и питание базы |
| переподключение... | порт отвалился на лету | само восстановится за пару секунд |
| нет pyserial | не установлен модуль | py -m pip install pyserial (только для запуска из исходника) |
- Цифры застыли — глянь статус. Если «лог ...» и Pit House закрыт, переткни USB базы.
- Окно уехало за экран после смены мониторов — удали
%APPDATA%\moza_temp_overlay.jsonи запусти заново. - Хочется другие пороги подсветки — открой скрипт, в самом верху
константы
WARN = 60иHOT = 72, поставь свои и пересобери exe (или запускай из исходника). - База не R9 V2 и в заголовке «Base» — открой Диспетчер устройств →
свойства устройства → Сведения → ИД оборудования, найди
PID_XXXXи пришли — добавить модель в таблицу это одна строка.
База MOZA видна в Windows как USB-серийное устройство (VID 0x346E).
Обмен идёт кадрами вида 0x7E | длина | группа | устройство | команда | значение | контрольная сумма; температуры читаются командами 4/5/6
группы 0x2B у устройства 0x13 (база), ответ приходит зеркальный,
значение — два байта big-endian, делённые на 100. Контрольная сумма —
(13 + сумма байтов кадра) mod 256. Формат восстановлен по проекту
Boxflat и проверен на живых ответах R9 V2.
MozaHeat — сделано за один вечер, чтобы не держать Pit House ради трёх цифр.

