Проверено перебором через LibreHardwareMonitorLib после установки PawnIO. Ключевой вывод: температура видеокарты NVIDIA читается без прав администратора, потому что идёт через её драйвер, а не через MSR. Админ нужен только процессору. Дисков и датчиков материнской платы с вентиляторами на этой машине нет. Кандидаты на экраны расставлены по возрастанию стоимости: видеокарта, память, батарея, сеть. Последняя требует автоматической смены масштаба, потому что скорость гуляет от килобайт до мегабайт. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9.8 KiB
Бэклог
Идеи и незакрытые хвосты по проекту. Не план работ: сюда складывается то, что решено не делать сейчас, чтобы не потерялось.
1. Другие показатели и листалка по кнопке BOOT
Что хочется. Показывать не только процессор: видеокарту, оперативную память, диски. Переключать экраны кнопкой BOOT на плате — нажал, увидел следующий набор данных.
Почему это дёшево со стороны протокола. Формат T=67.0;L=34 изначально
сделан расширяемым: прошивка молча игнорирует незнакомые ключи. Агент может
начать слать G=61;GL=88;M=73 (видеокарта, её загрузка, память), и уже прошитые
платы от этого не сломаются — просто не покажут новое.
Что придётся решить при реализации:
- Кнопка BOOT сидит на GPIO9. Это пин начальной загрузки: при сбросе он
должен быть в высоком уровне, иначе плата уйдёт в режим прошивки. Читать его
как
INPUT_PULLUPв работе безопасно, но проверить фактически. - Дребезг контактов. Нужна программная защита, иначе одно нажатие пролистает три экрана.
- Свой макет под каждый экран. На 72×40 не получится «то же самое, только другие цифры»: у памяти уместнее проценты и гигабайты, у диска — температура без графика. Каждый экран проектировать отдельно.
- Отдельная история на каждый показатель. Сейчас кольцевой буфер один и хранит температуру CPU. На каждый график нужен свой буфер: 72 байта на штуку, памяти достаточно.
- Что показывать, если данных нет. Например, в системе нет дискретной видеокарты — экран GPU надо либо пропускать при листании, либо честно писать, что источника нет.
- Запоминать ли выбранный экран между перезагрузками. Если да, понадобится энергонезависимое хранилище, которого у прошивки сейчас нет вовсе.
- Тревога при листании. Сейчас перегрев виден всегда, потому что экран один. С листалкой можно стоять на экране памяти и не увидеть, что горит процессор. Нужно решить: принудительно перекидывать на экран CPU, показывать тревогу поверх любого экрана или мигать только светодиодом.
Последний пункт — самый важный: он затрагивает смысл устройства, а не удобство.
Что фактически доступно на этой машине
Проверено перебором датчиков через LibreHardwareMonitorLib после установки
PawnIO (ноутбук с i5-11400H и RTX 3050 Ti):
| Железо | Датчики | Права |
|---|---|---|
| Процессор | температура (15 датчиков: пакет, среднее, максимум, по ядрам, запас до предела), мощность | админ |
| Процессор | загрузка (общая, по ядрам, по потокам), частоты | обычные |
| Видеокарта NVIDIA | температура ядра и горячей точки, загрузка, мощность, напряжение, частоты, память, PCIe | обычные |
| Встроенная графика Intel | загрузка по блокам (3D, декод видео, копирование) | обычные |
| Оперативная память | занято и свободно в ГБ, загрузка в процентах | обычные |
| Сеть (5 адаптеров) | скорость приёма и отдачи, объём, утилизация | обычные |
| Батарея | заряд, деградация, ток, напряжение, мощность заряда и разряда, ёмкость | обычные |
Важное следствие: температура видеокарты не требует прав администратора — NVIDIA отдаёт её через свой драйвер, ядро для этого не нужно. Админ нужен только процессору, потому что там чтение MSR.
Чего нет: дисков (раздел не появился даже при включённом IsStorageEnabled —
вероятно, тоже упирается в права) и датчиков материнской платы с вентиляторами.
Для ноутбуков второе обычно: доступ к встроенному контроллеру закрыт.
Разобранные кандидаты на экраны
- Видеокарта — температура и загрузка. Полный аналог текущего экрана, макет переиспользуется целиком. Работает даже без прав администратора.
- Память — занято в гигабайтах и процент. Меняется медленно, читается с расстояния, сглаживание не нужно.
- Батарея — заряд и мощность разряда в ваттах: сразу видно, сколько ест ноутбук прямо сейчас. Для стационарного ПК бесполезно, экран надо скрывать.
- Сеть — скорость приёма и отдачи. Живее всего смотрится на графике, но единицы прыгают от килобайт до мегабайт, и понадобится автоматическая смена масштаба — это единственный кандидат, требующий новой логики отрисовки.
Порядок реализации по возрастанию стоимости: видеокарта, память, батарея, сеть.
2. Обрезание строки при 100° и 100%
При трёхзначной температуре и трёхзначной загрузке верхняя строка занимает 79
пикселей из 72: 100 — 49 px, зазор 2, 100% — 28 px. Лишние 7 пикселей
уходят за правый край, и загрузка обрезается.
Дефект существовал с самого начала, проявляется только под предельной нагрузкой. Для i5-11400H это не гипотеза: предельная температура около 100 °C.
Решение на выбор: при трёхзначной температуре переходить на более мелкий шрифт загрузки либо убирать знак процента. Оценка — около получаса вместе с проверкой.
Решено оставить как есть: в такой момент экран всё равно мигает тревогой.
3. Автозапуск не проверен перезагрузкой
Задание Планировщика CPU Temp Agent зарегистрировано с триггером «при входе в
систему», запускается вручную и работает. Живой перезагрузкой триггер не
испытан.
Проверится само при следующей перезагрузке: экран должен ожить без участия пользователя в течение примерно полуминуты.
4. Скрипт заливки
Цикл «остановить агента → залить прошивку → запустить агента» делается тремя
командами вручную. Пока правок мало, это терпимо; если работа по экрану
продолжится, стоит свести в flash.ps1.
Причина, по которой шаг вообще нужен: плата прошивается через тот же COM-порт,
по которому идут данные, и занятый порт валит заливку с PermissionError.
5. Вес обзорного изображения
docs/promo.png весит 2,1 МБ при исходниках примерно на 30 КБ. Сжатие до
300–500 КБ не ухудшило бы читаемость, но старый файл всё равно останется в
истории git, так что выигрыш только для будущих клонов.
Решено оставить как есть.