feat(ui): экран оперативной памяти и переключение кнопкой BOOT
Второй экран показывает загрузку ОЗУ крупной цифрой и её график со шкалой 0-100 - у памяти она естественная, подбирать нечего. В углу свой значок, планка памяти вместо микросхемы: он же и говорит, какой экран открыт. Тревога в приоритете: при перегреве плата принудительно возвращается на экран процессора и кнопка не работает, пока температура не упадёт. Смысл тревоги в том, что её нельзя прощёлкать. Экран памяти выпадает из листания, если агент не шлёт ключ M - со старым агентом кнопка просто ничего не делает. То же решение подойдёт машинам без дискретной видеокарты. Выбранный экран не запоминается при перезагрузке: хранить негде. Тревоги по памяти нет намеренно - загрузка ОЗУ под 100% здесь обычное рабочее состояние. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4344fa8873
commit
f18090b5b7
8 files changed
+201
-59
No files matched your search
+32
-9
@@ -1,8 +1,9 @@
|
||||
# CPU Temp — индикатор температуры процессора на ESP32-C3
|
||||
|
||||
Небольшая плата ESP32-C3 со встроенным OLED-экраном 0.42″ стоит на столе и
|
||||
показывает температуру процессора компьютера: крупная цифра, загрузка CPU рядом
|
||||
и график за последнюю минуту. При перегреве экран мигает негативом.
|
||||
показывает состояние компьютера: крупная цифра, мелкий показатель рядом и график
|
||||
за последнюю минуту. Экранов два — процессор и оперативная память, переключаются
|
||||
кнопкой BOOT. При перегреве процессора экран мигает негативом.
|
||||
|
||||
```
|
||||
LibreHardwareMonitorLib.dll ──> PowerShell-агент ──COM (USB CDC)──> ESP32-C3 ──I2C──> OLED 72×40
|
||||
@@ -240,6 +241,8 @@ Start-ScheduledTask -TaskName 'CPU Temp Agent'
|
||||
| `ALARM_OFF_C` | 82.0 | температура отпускания тревоги |
|
||||
| `ALARM_BLINK_MS` | 500 | полупериод мигания |
|
||||
| `PIN_LED` | 8 | светодиод |
|
||||
| `PIN_BUTTON` | 9 | кнопка BOOT, переключает экраны |
|
||||
| `BUTTON_DEBOUNCE_MS` | 50 | защита от дребезга контактов |
|
||||
| `LED_ACTIVE_LEVEL` | `LOW` | уровень, при котором светодиод горит |
|
||||
| `TEMP_AVG_SAMPLES` | 5 | окно сглаживания температуры, замеров |
|
||||
| `SCALE_MIN`, `SCALE_MAX` | 30.0, 90.0 | шкала графика, °C |
|
||||
@@ -283,14 +286,34 @@ Start-ScheduledTask -TaskName 'CPU Temp Agent'
|
||||
|
||||
## Что показывает экран
|
||||
|
||||
Экранов два, переключаются коротким нажатием кнопки **BOOT**:
|
||||
|
||||
| Экран | Крупно | Мелко | График |
|
||||
|---|---|---|---|
|
||||
| Процессор | температура, °C | загрузка, % | температура, шкала 30–90 °C |
|
||||
| Память | загрузка, % | знак процента | загрузка, шкала 0–100 % |
|
||||
|
||||
Значок в правом верхнем углу говорит, какой экран открыт: микросхема — процессор,
|
||||
планка памяти — ОЗУ.
|
||||
|
||||
| Состояние | Экран | Светодиод GPIO8 |
|
||||
|---|---|---|
|
||||
| Норма | температура, загрузка, график | погашен |
|
||||
| Перегрев | то же, мигает негативом | мигает синхронно с экраном |
|
||||
| Норма | выбранный экран | погашен |
|
||||
| Перегрев | **принудительно** экран процессора, мигает негативом | мигает синхронно с экраном |
|
||||
| Нет данных дольше 5 с | `NO DATA` | горит ровно |
|
||||
|
||||
В режиме `NO DATA` история графика не пополняется — иначе обрыв связи выглядел бы
|
||||
как резкое падение температуры.
|
||||
**Тревога в приоритете.** При перегреве плата сама возвращается на экран
|
||||
процессора, и кнопка перестаёт работать до тех пор, пока температура не упадёт.
|
||||
Смысл тревоги в том, что её нельзя прощёлкать.
|
||||
|
||||
Выбранный экран **не запоминается** при перезагрузке платы: энергонезависимого
|
||||
хранилища в прошивке нет вовсе, после сброса всегда показывается процессор.
|
||||
|
||||
Тревога считается только по температуре процессора. По памяти её нет намеренно:
|
||||
загрузка ОЗУ под 100 % — обычное рабочее состояние, мигать на него бессмысленно.
|
||||
|
||||
В режиме `NO DATA` история графиков не пополняется — иначе обрыв связи выглядел
|
||||
бы как резкое падение значений.
|
||||
|
||||
---
|
||||
|
||||
@@ -308,9 +331,9 @@ T=67.0;L=34;M=97
|
||||
| `L` | общая загрузка CPU, % |
|
||||
| `M` | загрузка оперативной памяти, % |
|
||||
|
||||
Ключ `M` агент шлёт, а прошивка пока **не показывает** — на экране 72×40 нет
|
||||
места для третьего показателя. Это и есть демонстрация расширяемости: агента
|
||||
обновили, платы не трогали, ничего не сломалось.
|
||||
Ключ `M` показывается на отдельном экране памяти — третьему показателю на экране
|
||||
72×40 места нет. Если агент старый и ключа `M` не шлёт, экран памяти из листания
|
||||
выпадает сам, и кнопка ничего не делает.
|
||||
|
||||
Берётся он у железа с именем `Total Memory` — это физическая память. У соседнего
|
||||
`Virtual Memory` датчик называется точно так же, но считает вместе с файлом
|
||||
|
||||
Reference in new issue
Block a user