# MetricsModule MetricsModule is a C++ class designed for collecting and sending metrics data from an ESP32-based device. The module supports buffering metrics in JSON format and sending them to a specified database URL. It integrates with FreeRTOS for task management and leverages ESP-IDF for network and logging capabilities. ## Features - Collects various system metrics (e.g., free heap, task stack sizes). - Buffers metrics in JSON format. - Sends buffered metrics to a remote server. - Handles network connectivity checks. - Generates a unique device ID. - Configurable through `sdkconfig`. ## Getting Started ### Prerequisites - ESP-IDF setup - FreeRTOS ### Installation 1. Clone the repository: ```sh git clone <repository-url> cd <repository-directory> ``` 2. Set up ESP-IDF: Follow the [official ESP-IDF setup guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) to set up the ESP-IDF environment. 3. Configure the project: ```sh idf.py menuconfig ``` Ensure that you set the following configurations: - `CONFIG_M_M_DEFAULT_DATABASE_URL` to your metrics database URL. - `CONFIG_M_M_DEFAULT_DEVICE_LOCATION` to the location of your device. - Enable `CONFIG_M_M_ENABLED` to start the metrics collection. ### Building and Flashing Build and flash the project to your ESP32 device: ```sh idf.py build idf.py flash idf.py monitor ``` ### Usage After flashing the firmware, the MetricsModule will start collecting and sending metrics data. You can customize and extend the metrics collection by modifying the MetricsModule class methods. ### Example To use the MetricsModule: ```cpp #include "MetricsModule.hpp" extern "C" void app_main() { MetricsModule metrics("http://your-database-url", "device-location"); metrics.start(); } ```
idf.py add-dependency "ronny-antoon/metricsmodule^5.2.1"