Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GS32ReportWeb

GS32ReportWeb — это простая и удобная библиотека для ESP32 (Arduino IDE), предназначенная для сбора системной информации микроконтроллера и отправки ее в формате JSON через HTTP POST-запрос на ваш удаленный сервер.

Библиотека идеально подходит для систем мониторинга, отладки, сбора телеметрии «умного дома» и контроля состояния устройств.


🚀 Основные возможности

  • Гибкая настройка системных параметров: Включайте или отключайте только те метрики ESP32, которые вам действительно нужны (модель чипа, свободная RAM, Uptime, Flash и т.д.).
  • Поддержка пользовательских данных: Легко добавляйте показатели со своих датчиков (температура, влажность, статус реле и т.д.) с помощью удобного callback-интерфейса.
  • Инициализация в setup(): Задавайте адрес сервера и конфигурацию прямо при старте устройства.
  • Современный стек: Полностью оптимизирована под ArduinoJson v7 (автоматическое управление памятью, отсутствие утечек).
  • Чистый API: Понятные названия методов без лишнего «шума».

📦 Установка

  1. Создайте папку GS32ReportWeb в директории с библиотеками вашей Arduino IDE:
    Documents/Arduino/libraries/GS32ReportWeb/
  2. Поместите туда файлы библиотеки (library.properties, README.md, папку src с .h и .cpp файлами).
  3. Убедитесь, что в Arduino IDE установлена библиотека ArduinoJson (версии 7 и выше) через Менеджер библиотек.
  4. Перезапустите Arduino IDE.

Структура папки библиотеки должна выглядеть так:

GS32ReportWeb/
├── library.properties
├── README.md
├── src/
│   ├── GS32ReportWeb.h
│   └── GS32ReportWeb.cpp
└── examples/
    └── BasicReport/
        └── BasicReport.ino

📋 Системные параметры (Флаги конфигурации)

Вы можете точечно управлять передачей следующих параметров (вызывая соответствующие методы в setup()):

Метод настройки Описание параметра По умолчанию
reporter.chipModel(bool) Модель чипа (например, ESP32) true
reporter.chipCores(bool) Количество ядер процессора true
reporter.chipRevision(bool) Ревизия чипа true
reporter.cpuFreq(bool) Частота процессора в МГц true
reporter.chipId(bool) Уникальный Chip ID (на основе MAC-адреса) true
reporter.heap(bool) Всего свободной RAM true
reporter.minHeap(bool) Минимальный исторический остаток RAM true
reporter.maxAllocHeap(bool) Максимальный непрерывный блок RAM false
reporter.flashSize(bool) Размер Flash-памяти true
reporter.flashSpeed(bool) Скорость Flash-памяти false
reporter.sdkVersion(bool) Версия ESP-IDF / SDK false
reporter.sketchSize(bool) Размер текущего скетча false
reporter.freeSketch(bool) Свободно места под скетч false
reporter.uptime(bool) Время работы устройства с момента запуска (мс) true

💻 Пример использования (Arduino IDE)

#include <WiFi.h>
#include <GS32ReportWeb.h>

// Данные вашей сети Wi-Fi
const char* ssid     = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// Создаем глобальный объект библиотеки
GS32ReportWeb reporter;

// Callback-функция для добавления ваших пользовательских данных (датчики, счетчики и т.д.)
void addMyCustomData(JsonObject& custom) {
    custom["temperature"] = 24.5;
    custom["humidity"] = 52.1;
    custom["device_status"] = "OK";
}

void setup() {
    Serial.begin(115200);
    delay(1000);

    // Подключение к Wi-Fi
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi");
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\nWiFi connected!");

    // --- НАСТРОЙКА БИБЛИОТЕКИ ---
    
    // 1. Указываем адрес сервера
    reporter.begin("http://your-server-ip/report_handler.php");

    // 2. Настраиваем системные флаги (что отправлять)
    reporter.chipModel(true);
    reporter.chipId(true);
    reporter.heap(true);
    reporter.uptime(true);
    
    // Отключаем ненужные параметры для экономии трафика
    reporter.flashSpeed(false);
    reporter.sdkVersion(false);

    // 3. Подключаем функцию с пользовательскими данными
    reporter.onCustomData(addMyCustomData);
}

void loop() {
    Serial.println("\n--- Sending Report ---");
    reporter.sendReport();

    // Отправляем отчет каждые 30 секунд
    delay(30000);
}

📄 Структура отправляемого JSON

Библиотека формирует структурированный JSON-документ следующего вида:

{
  "system": {
    "chip_model": "ESP32",
    "chip_cores": 2,
    "chip_revision": 3,
    "cpu_freq_mhz": 240,
    "chip_id": "78E36D123456",
    "free_heap": 215432,
    "min_free_heap": 198210,
    "flash_size": 4194304,
    "uptime_ms": 30214
  },
  "custom": {
    "temperature": 24.5,
    "humidity": 52.1,
    "device_status": "OK"
  }
}

🛠️ Пример серверного скрипта (PHP)

Чтобы принимать и разбирать данные на стороне сервера, вы можете использовать этот простой скрипт report_handler.php:

<?php
header("Content-Type: application/json; charset=UTF-8");

// Принимаем только POST-запросы
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(["status" => "error", "message" => "Method not allowed"]);
    exit;
}

// Читаем сырые JSON-данные из тела запроса
$rawInput = file_get_contents("php://input");
$data = json_decode($rawInput, true);

if (!$data) {
    http_response_code(400);
    echo json_encode(["status" => "error", "message" => "Invalid JSON"]);
    exit;
}

// Извлекаем данные
$chipId      = $data['system']['chip_id'] ?? 'Unknown';
$freeHeap    = $data['system']['free_heap'] ?? 0;
$temperature = $data['custom']['temperature'] ?? null;

// Пример: логируем в файл
$log = "[" . date('Y-m-d H:i:s') . "] Chip: $chipId | Heap: $freeHeap | Temp: $temperature\n";
file_put_contents("esp32_reports.log", $log, FILE_APPEND);

// Отвечаем устройству
http_response_code(200);
echo json_encode(["status" => "success", "message" => "Report received"]);
?>

📝 Лицензия

Этот проект распространяется под лицензией MIT. Вы можете свободно использовать и модифицировать его в своих проектах.

About

GS32ReportWeb — это простая и удобная библиотека для ESP32 (Arduino IDE), предназначенная для сбора системной информации микроконтроллера и отправки ее в формате JSON через HTTP POST-запрос на ваш удаленный сервер.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages