Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MozaHeat

MozaHeat

Поверх игры (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 базы не поддерживаются и поддерживаться не будут — протокол другой.


Запуск

Вариант 1: готовый exe

Просто запусти MozaHeat.exe. Всё.

При первом запуске Windows может показать «неопознанное приложение» (SmartScreen) — это нормальная судьба любого неподписанного exe, жми «Подробнее → Выполнить в любом случае». Антивирусу собранные PyInstaller'ом файлы тоже иногда не нравятся — если ругается, добавь в исключения или собери exe сам из исходника (см. ниже).

Вариант 2: из исходника

Нужен Python 3.9+ и pyserial:

py -m pip install pyserial
py MozaHeat.py

Собрать exe самому

py -m pip install pyinstaller
py -m PyInstaller --onefile --noconsole --name MozaHeat --icon MozaHeat.ico --add-data "MozaHeat.ico;." MozaHeat.py

Готовый файл появится в папке dist. Папку build и файл .spec после сборки можно удалить.


Главный прикол: Pit House и COM-порт

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 ради трёх цифр.

About

Temperature overlay for MOZA wheelbases — direct serial reading, no Pit House needed

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages