Commit Graph
10 Commits
Author SHA1 Message Date
oskarvitaliiandClaude Opus 5 b15421305c docs: записать в бэклог план по видеокарте
Выбран приоритетный экран, а не листалка: устройство смотрится боковым
зрением и должно само показывать то, что ближе к своему порогу.
Совмещённый экран отвергнут по измерениям - вторая температура влезает
только шрифтом 5x7, и смысл крупной цифры теряется.

Отдельным пунктом записан опыт, который надо поставить до реализации:
проверить, будит ли опрос дискретную видеокарту и не начнёт ли мониторинг
сам расходовать батарею. Измеритель есть - датчик мощности разряда
батареи, прав администратора он не требует.

Записана и главная ловушка подхода: при близких к порогам показателях
экран начнёт скакать между ними, нужна задержка переключения.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 01:08:11 +07:00
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
oskarvitaliiandClaude Opus 5 fcc96f5090 feat(ui): сглаживать температуру скользящим средним за 5 замеров
Мгновенное значение плавает на +-1 градус, и цифра мельтешила каждую
секунду при полном покое. На экран теперь идёт среднее за
TEMP_AVG_SAMPLES последних замеров; агент шлёт раз в секунду, так что
это ровно 5 секунд.

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

Тревога переведена на усреднённое значение: иначе экран показывал бы 84,
когда мигание уже идёт. Загрузка и график намеренно остались сырыми.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 00:41:20 +07:00
oskarvitaliiandClaude Opus 5 1047ae1452 docs: завести бэклог проекта
Первый пункт - другие показатели (GPU, память, диски) и листалка экранов
кнопкой BOOT. Протокол к этому уже готов: незнакомые ключи прошивка
игнорирует, так что агент может начать слать новые поля, не ломая уже
прошитые платы.

Там же записаны открытые хвосты: обрезание строки при 100 градусах и
100% загрузки, непроверенный перезагрузкой автозапуск, ручной цикл
заливки и вес обзорного изображения.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 23:33:02 +07:00
oskarvitaliiandClaude Opus 5 135278ba18 docs: добавить обзорное изображение проекта
К изображению дана сноска с двумя поправками: экран на плате 0.42 дюйма,
а не 0.96, и график строится по температуре, а не по загрузке.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 23:29:20 +07:00
oskarvitaliiandClaude Opus 5 c76c2ef7e5 feat(ui): значок процессора в правом верхнем углу
Полоса y=0..10 справа выбрана по измерениям на самой плате, а не на глаз:
строка загрузки лежит ниже (y=11..24), а цифры температуры не дотягиваются
туда даже трёхзначными (49 px + градус = 56 из 72). Значок 11x11 не
перекрывает ничего ни при каких значениях и не исчезает под нагрузкой.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 23:29:19 +07:00
oskarvitaliiandClaude Opus 5 03db58473c docs: переписать README как пошаговую инструкцию по повторению
Прежний README описывал устройство проекта, но по нему нельзя было
собрать всё с нуля. Теперь это инструкция: что установить, какие пункты
меню выставить, как определить пины дисплея, как поставить агента и
автозапуск, как проверить без агента.

Отдельно вынесены грабли, на которые мы наступили: USB CDC On Boot по
умолчанию выключен, LibreHardwareMonitor требует PawnIO, разделитель
дробной части должен быть точкой, .ps1 нужен UTF-8 с BOM, порт надо
освобождать перед заливкой.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 22:40:25 +07:00
oskarvitaliiandClaude Opus 5 bd0a87ea49 feat(ui): тревога по перегреву и config.h со всеми настройками
Настройки собраны в config.h: пины, ориентация, пороги тревоги, шкала
графика, тайминги и скорость Serial. Раньше они были раскиданы по
модулям, и подстройка требовала лазить по коду.

Тревога включается на ALARM_ON_C и отпускает только на ALARM_OFF_C
(85 и 82 градуса). Один порог заставлял бы её дёргаться каждую секунду,
пока температура топчется на границе.

В тревоге экран мигает негативом (инверсия буфера, а не команда
контроллера - не зависит от микросхемы дисплея), светодиод GPIO8 мигает
с ним в общей фазе. Без данных светодиод горит ровно, в норме погашен.
Зажигается низким уровнем: проверено опытом, заодно в простое пин стоит
высоким, что безопасно для GPIO8 как пина начальной загрузки.

Переменная alarm переименована в alarmActive: имя alarm занято функцией
из unistd.h, которая попадает в сборку ESP32.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 22:32:31 +07:00
oskarvitaliiandClaude Opus 5 db86597433 feat(ui): повернуть экран на 180 градусов и укрупнить загрузку
Ориентация вынесена в константу DISPLAY_ROTATION: менять её теперь
правкой одной строки, а не параметра в конструкторе.

Знак градуса поднят с базовой линии 10 на 8 - встал надстрочным знаком
вровень с верхом цифр. Загрузка CPU выводится шрифтом 7x14 вместо 5x7.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 22:08:34 +07:00
oskarvitaliiandClaude Opus 5 59848698ff feat(cpu_temp): индикатор температуры CPU на ESP32-C3 с OLED
Плата принимает по USB-CDC строки "T=67.0;L=34" от агента на ПК и рисует
крупную цифру, загрузку и график за последнюю минуту на экране 72x40.

Пины дисплея (SDA=5, SCL=6) определены сканером, а не по шелкографии:
подписи GPIO8/GPIO9 на плате - это дефолтные Wire-пины чипа.

Агент читает сенсоры через LibreHardwareMonitorLib. С версии 0.9.5 она
требует отдельно установленный драйвер PawnIO: без него загрузка CPU
читается, а температуры пусты даже под администратором.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 21:42:24 +07:00