Files
Arduino/CPU_temp/docs/BACKLOG.md
T
oskarvitaliiandClaude Opus 5 ed726f7fb6 docs: внести в бэклог перечень доступных датчиков
Проверено перебором через LibreHardwareMonitorLib после установки PawnIO.
Ключевой вывод: температура видеокарты NVIDIA читается без прав
администратора, потому что идёт через её драйвер, а не через MSR. Админ
нужен только процессору.

Дисков и датчиков материнской платы с вентиляторами на этой машине нет.

Кандидаты на экраны расставлены по возрастанию стоимости: видеокарта,
память, батарея, сеть. Последняя требует автоматической смены масштаба,
потому что скорость гуляет от килобайт до мегабайт.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 00:50:15 +07:00

128 lines
9.8 KiB
Markdown
Raw 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.
# Бэклог
Идеи и незакрытые хвосты по проекту. Не план работ: сюда складывается то, что
решено не делать сейчас, чтобы не потерялось.
---
## 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` —
вероятно, тоже упирается в права) и датчиков материнской платы с вентиляторами.
Для ноутбуков второе обычно: доступ к встроенному контроллеру закрыт.
### Разобранные кандидаты на экраны
1. **Видеокарта** — температура и загрузка. Полный аналог текущего экрана,
макет переиспользуется целиком. Работает даже без прав администратора.
2. **Память** — занято в гигабайтах и процент. Меняется медленно, читается с
расстояния, сглаживание не нужно.
3. **Батарея** — заряд и мощность разряда в ваттах: сразу видно, сколько ест
ноутбук прямо сейчас. Для стационарного ПК бесполезно, экран надо скрывать.
4. **Сеть** — скорость приёма и отдачи. Живее всего смотрится на графике, но
единицы прыгают от килобайт до мегабайт, и понадобится автоматическая смена
масштаба — это единственный кандидат, требующий новой логики отрисовки.
Порядок реализации по возрастанию стоимости: видеокарта, память, батарея, сеть.
---
## 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, так что выигрыш только для будущих клонов.
Решено оставить как есть.