Experimental Telemetry Dataset and Codebase for TinyOLAF: A Closed-Loop Framework for Autonomous Anomaly Detection, Diagnosis and Self-Healing in Intelligent Edge IoT
Abstract
This version introduces the expanded physical testbed dataset (>148,000 telemetry records across 66 independent hardware runs) executed on live ESP32 microcontroller nodes and a Raspberry Pi edge gateway. Version 5.0 validates the TinyOLAF closed-loop edge AI framework across nominal baselines, concurrent network contention, distance attenuation, and autonomous self-healing recovery. This release incorporates detector-independent ground truth timestamps (monotonic authority), run-level block bootstrap confidence intervals to account for temporal autocorrelation, and resource-matched hardware ablation benchmarks. This repository contains the complete raw physical testbed telemetry datasets, Python analysis pipelines, LaTeX table generators, publication figure scripts, and edge firmware sketches evaluating the TinyOLAF framework on resource-constrained microcontrollers. The codebase and data validate an ultra-lightweight sequential change detector with an anti-poisoning state machine, coupled with an autonomous closed-loop self-healing controller to preserve IoT transmission reliability and Quality of Experience (QoE) during severe network congestion and channel degradation. 📄 ASSOCIATED MANUSCRIPT This dataset and replication codebase accompany the research article: Title: "TinyOLAF: A Closed-Loop Framework for Autonomous Anomaly Detection, Diagnosis and Self-Healing in Intelligent Edge IoT" 📂 REPOSITORY STRUCTURE TinyOLAF_Experiment/ │ ├── README.md (Dataset specification & replication guide) ├── requirements.txt (Python runtime dependencies) ├── run_pipeline.py (1-click end-to-end audit and analysis pipeline) │ ├── 01_Detection/ (Stage 1: Streaming Anomaly Detection) │ ├── datasets/ # Baseline and saturation telemetry streams (.csv) │ └── firmware/ # ESP32 sequential detection firmware (.ino) │ ├── 02_Diagnosis/ (Stage 2: Metric-Space Fault Diagnosis) │ ├── datasets/ # Multi-fault physical telemetry (RSSI vs. latency .csv) │ └── firmware/ # C++ diagnostic boundary library (.h) │ └── 03_Self_Healing/ (Stage 3: Closed-Loop Adaptation & Mitigation - 66 Runs) ├── datasets/ # Complete raw hardware runs (server UDP & client serial .csv) ├── firmware/ # Production closed-loop edge actuation firmware (.ino) ├── analysis/ # Multi-run statistical evaluation, table & figure generators (.py) ├── gateway/ # Raspberry Pi UDP receiver & traffic injection tools (.py) └── docs/ # Physical testbed topography, calibration, and reproducibility notes 📊 KEY TELEMETRY DATA DICTIONARY server_timestamp: Gateway reception clock recorded via monotonic authority (HH:MM:SS.mmm). packet_seq_num: Monotonic packet counter emitted by the edge node. tx_latency_ms (L_t): Observed round-trip transmission and echo latency in milliseconds. ewma_mu (mu_t): Online running mean baseline calculated directly on the ESP32 silicon. ewma_sigma (sigma_t): Online mean absolute dispersion tracking. z_score (z_t): Standardized innovation score computed against the baseline. cusum_danger_score (S_t): Integrated sequential CUSUM decision statistic. tinyol_state: Anti-poisoning state machine status: 0 (Normal), 1 (Warning), 2 (Critical). rssi_dbm: Radio link Received Signal Strength Indicator (dBm) reported by the Wi-Fi PHY layer. current_mA & power_mW: Instantaneous electrical telemetry monitored via onboard INA219 sensor. sensor_temp & sensor_audio: Sensor readings acquired from DHT22 and INMP441 peripherals. recovery_action: Autonomous mitigation strategy executed on hardware: 0 (Normal), 1 (Backoff 100ms), 2 (Backoff 250ms), 3 (TX Power Boost +19.5dBm). 🛠 USAGE & REPRODUCIBILITY To verify cryptographic checksums, compute multi-run empirical statistics, and reproduce all LaTeX tables and 300 DPI publication figures from the raw data, run the unified automated pipeline: # 1. Install dependencies pip install -r requirements.txt # 2. Run automated validation and analysis pipeline python run_pipeline.py --skip-replay Execution Time: Approximately 26 seconds on a standard desktop workstation. Environment: Python 3.10+ (NumPy, SciPy, Matplotlib, Seaborn) and Arduino IDE 2.x (ESP32 Arduino Core / FreeRTOS).