Experimental Telemetry Dataset and Codebase for Closed-Loop-TinyOL for Autonomic Anomaly Detection, Diagnosis, and Self-Healing in Edge IoT
收藏资源简介:
🚀 Version 4.0 Update: This version introduces the complete physical testbed dataset (58,858 measurements) executed on live microcontroller hardware. Version 4.0 validates the TinyOL framework through closed-loop physical executions. This update incorporates independent ground truth validation against attack injection timestamps, block bootstrap confidence intervals to correct for temporal autocorrelation, non-parametric rank-biserial correlation effect sizes, and temporal hold-out split evaluation scripts. This repository contains the complete raw physical testbed telemetry datasets, Python analysis pipelines, plotting scripts, and hardware deployment firmware from an experimental campaign evaluating the "TinyOL" framework on resource-constrained microcontrollers. The codebase and data validate an ultra-lightweight CUSUM-EWMA anomaly detection framework featuring an anti-poisoning state machine, coupled with a MAPE-K closed-loop self-healing controller to protect multi-modal IoT sensor reliability and multimedia Quality of Experience (QoE) during severe network congestion and DDoS floods. 📄 ASSOCIATED MANUSCRIPT This dataset and codebase support the findings presented in the research article: Haranath Rakshit and Subhasis Banerjee, "Closed-Loop-TinyOL for Autonomic Anomaly Detection, Diagnosis, and Self-Healing in Edge IoT," 2026. 📂 REPOSITORY STRUCTURE Closed-Loop-TinyOL_Experiment/ │ ├── README.md (Main reproducibility documentation) │ ├── 01_Anomaly_Detection/ (Stage 1: Anomaly Detection evaluation) │ ├── analysis/anomaly_analysis.py # Python script to analyze metrics & generate figures │ ├── datasets/ # Physical telemetry datasets for detection │ ├── firmware/ # ESP32 detection firmware │ └── results/ # Generated graphs (latency spikes, confusion matrix) │ ├── 02_Root_Cause_Diagnosis/ (Stage 2: Root-cause Diagnosis evaluation) │ ├── analysis/generate_confusion_matrix.py # Script for dual-feature diagnostic analysis │ ├── datasets/ # Distinguishing distance vs. congestion signals │ └── results/ # Generated diagnostic matrices and graphs │ └── 03_Adaptive_Recovery/ (Stage 3: Severity-aware Self-healing evaluation) ├── analysis/analyze_results.py # Python script to evaluate self-healing and recovery ├── datasets/ # Recovery datasets under physical constraints └── results/ # Generated telemetry timelines and boxplots 📊 KEY TELEMETRY COLUMN DEFINITIONS L_t / true_latency_ms / tx_latency_ms: Extracted physical MAC-layer transmission latency measured in milliseconds (ms). mu: The EWMA-based baseline mean calculated online directly on the microcontroller silicon. sigma: The EWMA-based mean absolute deviation. S_t / cusum_score: The TinyOL CUSUM Danger Score (accumulation of standardized deviations). State / inferred_state: The anti-poisoning state machine status (Normal, Warning, or Critical). rssi / rssi_dbm: Received Signal Strength Indicator measured in dBm (used for diagnostic localization). recovery_action: Adaptive mitigation strategy selected by the controller (e.g., Backoff, TX Power Boost). 🛠 USAGE & REPRODUCIBILITY To audit the physical datasets, evaluate the anomaly detection thresholds, and automatically reproduce the classification metrics (e.g., 80.10% Precision), self-healing recovery benchmarks (e.g., 60.1% timeout reduction, 9.9% median latency improvement), and the figures found in the associated manuscript, navigate to the stage directories and run the analysis scripts: To run the anomaly detection sweep: cd 01_Anomaly_Detection/analysis python anomaly_analysis.py To generate the diagnostic evaluation matrices: cd 02_Root_Cause_Diagnosis/analysis python generate_confusion_matrix.py To generate the self-healing telemetry and impact plots: cd 03_Adaptive_Recovery/analysis python analyze_results.py Environment: Python 3.11.6+ (with packages: Scikit-Learn, PyCryptodome, Pandas, Numpy, Matplotlib, Seaborn) and Arduino IDE v2.3.2+ (with ESP32 Board Support Package v2.0.14).



