{"id":25811300,"url":"https://github.com/cyberscopetoday/esp32_monitor","last_synced_at":"2025-02-28T00:38:18.819Z","repository":{"id":277397645,"uuid":"932192235","full_name":"CyberScopeToday/esp32_monitor","owner":"CyberScopeToday","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-13T18:02:35.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T18:39:18.553Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CyberScopeToday.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-13T14:20:05.000Z","updated_at":"2025-02-13T18:02:38.000Z","dependencies_parsed_at":"2025-02-13T18:49:32.789Z","dependency_job_id":null,"html_url":"https://github.com/CyberScopeToday/esp32_monitor","commit_stats":null,"previous_names":["cyberscopetoday/esp32_monitor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberScopeToday%2Fesp32_monitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberScopeToday%2Fesp32_monitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberScopeToday%2Fesp32_monitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberScopeToday%2Fesp32_monitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyberScopeToday","download_url":"https://codeload.github.com/CyberScopeToday/esp32_monitor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241079532,"owners_count":19906069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-28T00:38:18.251Z","updated_at":"2025-02-28T00:38:18.807Z","avatar_url":"https://github.com/CyberScopeToday.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Мониторинг температуры и загрузки видеокарты (GPU) на OLED-дисплее ESP32\n\nПроект отображает на **OLED-дисплее** (SSD1306) данные о **температуре**, **загрузке** и других характеристиках **видеокарты** (GPU) в режиме слайд-шоу. Сбор данных происходит на **Windows** при помощи **LibreHardwareMonitor** и **Python**, а затем отправляется на **ESP32** по сети (HTTP).\n\n## Содержание\n1. [Особенности проекта](#особенности-проекта)  \n2. [Как это работает](#как-это-работает)  \n3. [Требования](#требования)  \n4. [Установка и настройка](#установка-и-настройка)\n   1. [Настройка Python и LibreHardwareMonitor](#настройка-python-и-librehardwaremonitor)\n   2. [Настройка ESP32](#настройка-esp32)\n5. [Использование](#использование)\n6. [Как изменить анимацию/формат вывода](#как-изменить-анимациюформат-вывода)\n7. [Лицензия](#лицензия)\n\n---\n\n## Особенности проекта\n- **ESP32** с подключённым по **I²C** дисплеем **SSD1306** (128×64).  \n- **Python-скрипт** на Windows собирает данные о GPU (температура, загрузка, фан, частоты и т.п.) с помощью **LibreHardwareMonitor**.  \n- Отправка данных по протоколу **HTTP** на **ESP32** (эндпоинт `/update`).  \n- **OLED-дисплей** циклично (слайд-шоу) отображает 10 параметров о состоянии GPU (можно менять кол-во и название параметров).\n\n---\n\n## Как это работает\n\n1. **LibreHardwareMonitor** (Windows) получает данные с датчиков видеокарты (NVIDIA/AMD).  \n2. **Python-скрипт** обращается к библиотеке LibreHardwareMonitorLib.dll, считывая температуру, загрузку, частоты и т.п.  \n3. Скрипт отправляет значения (GET-параметры) на `http://\u003cIP_ESP32\u003e/update`.  \n4. **ESP32** принимает параметры, сохраняет их во внутренние переменные.  \n5. **OLED SSD1306** показывает один параметр за раз, меняя каждые несколько секунд (по умолчанию 10 c).\n\n---\n\n## Требования\n- **ESP32** (например, DevKitC, NodeMCU-32 и т.п.)  \n- **Дисплей SSD1306** (I²C 128×64)  \n- **Arduino IDE** (или PlatformIO) с установленными библиотеками:\n  - `WiFi.h` и `WebServer.h` (встроенные в ESP32 Core)\n  - `Wire.h`\n  - `Adafruit GFX`\n  - `Adafruit SSD1306`\n- **LibreHardwareMonitor** на Windows  \n- **Python 3.7 – 3.11** с установленным `pythonnet` и `requests`\n\n---\n\n## Установка и настройка\n\n### Настройка Python и LibreHardwareMonitor\n\n1. **Установите Python** (3.7–3.11) с [python.org](https://www.python.org/downloads/).  \n   - Во время установки поставьте галочку «Add Python to PATH».  \n2. В консоли проверьте:\n   ```bash\n   python --version\n   pip --version\n   ```\n3. **Установите нужные пакеты**:\n   ```bash\n   pip install pythonnet requests\n   ```\n4. **Скачайте LibreHardwareMonitor**:\n   - Перейдите на [GitHub Releases](https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/releases).\n   - Скачайте ZIP, распакуйте, запустите `LibreHardwareMonitor.exe`.\n   - Убедитесь, что в папке лежит `LibreHardwareMonitorLib.dll`.\n5. **Склонируйте данный репозиторий** или скачайте ZIP с кодом (ESP32 и `gpu_monitor.py`).\n\n### Настройка ESP32\n1. Подключите **OLED SSD1306** к ESP32:\n   - SDA → **GPIO21**\n   - SCL → **GPIO22**\n   - VCC → **3.3V**\n   - GND → **GND**\n2. Откройте **Arduino IDE** (или PlatformIO) → выберите плату **ESP32**.\n3. Установите библиотеки (если не установлены):\n   - **Adafruit GFX**  \n   - **Adafruit SSD1306**\n4. В файле **`esp32_display.ino`**:\n   - Введите свой **SSID** и **пароль Wi-Fi**.\n   - При необходимости измените статический IP/адреса шлюза (или закомментируйте блок `WiFi.config(...)`).\n5. Загрузите код в ESP32.\n\n---\n\n## Использование\n\n1. **Запустите LibreHardwareMonitor.exe** на Windows (не закрывайте его).\n2. Откройте **консоль** (CMD или PowerShell) → перейдите в папку проекта (где `gpu_monitor.py`).\n3. Запустите скрипт:\n   ```bash\n   python gpu_monitor.py\n   ```\n   - Скрипт каждые 5 секунд будет считывать данные о видеокарте и отправлять их на `ESP32`.\n4. ESP32 (при успешном подключении к Wi-Fi) будет слушать HTTP-запросы на порте 80. При каждом `/update` значения записываются во внутренние переменные.\n5. На OLED-дисплее циклично отображается 10 показателей (GPU Temp, Load, HotSpot и т.д.), сменяясь раз в 10 секунд.\n\n---\n\n## Как изменить анимацию/формат вывода\n\n- **Интервал слайд-шоу** меняется в `esp32_display.ino` (переменная `if (millis() - lastSwitch \u003e 10000)`).\n- **Список параметров** (названия, единицы измерения) можно изменить в массивах:\n  ```cpp\n  const char* labels[] = { \"GPU Temp\", ... };\n  // ...\n  float values[] = { gpuTemp, gpuLoad, gpuHotspot, ... };\n  ```\n- Если хотите **плавную анимацию** (fade, скролл), смотрите примеры с функциями `fadeOut()`, `fadeIn()` или `slideTransition()` (описано в исходном коде).\n\n---\n\n## Лицензия\nДанный проект распространяется по лицензии **MIT**. Подробности см. в файле [LICENSE](./LICENSE).\n\n**Удачи в сборке и приятного использования!**  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberscopetoday%2Fesp32_monitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyberscopetoday%2Fesp32_monitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberscopetoday%2Fesp32_monitor/lists"}