Skip to content

v1.13.16 - Enhanced GET_STATUS with Comprehensive Device Overview (2025-12-11)

What Changed?

This release significantly enhances the GET_STATUS command by integrating comprehensive device status information into a single response. The command now includes threshold settings (all three channels), environmental sensor data (BME280), GNSS position and satellite data, and device identification (MAC address). This provides users with a complete device overview without needing to make multiple individual queries, improving efficiency and reducing serial communication overhead.


What's New

Main Feature: Comprehensive GET_STATUS Command Enhancement

What it does:

The GET_STATUS command now returns a unified device status response with nested JSON objects containing:

  • Device identification: version, build_type, mac_address
  • Detection configuration: poll_count, deadtime_ms, stream_enabled
  • Threshold values: ch1, ch2, ch3 (nested in "thresholds" object)
  • Environmental sensor data: temperature, pressure, humidity (nested in "bme280" object, when ENABLE_BME280=1)
  • GNSS position data: latitude, longitude, altitude, time, satellites, quality, validity, HDOP (nested in "gnss" object, when ENABLE_GNSS=1)

How to use it: Send the GET_STATUS command to retrieve the complete device status in a single query. The response is automatically formatted as nested JSON objects for logical organization of different data categories.

Code example:

# Via serial terminal
GET_STATUS

# Response (full device status with all features enabled)
{
  "type": "response",
  "status": "ok",
  "sent_at": 12345,
  "version": "1.13.16",
  "build_type": "esp32dev-dev",
  "mac_address": "A4:CF:12:7F:9E:34",
  "poll_count": 100,
  "deadtime_ms": 0,
  "stream_enabled": true,
  "uptime_ms": 123456789,
  "thresholds": {
    "ch1": 500,
    "ch2": 500,
    "ch3": 500
  },
  "bme280": {
    "tmp_c": 25.35,
    "atm_pa": 1013.25,
    "hmd_pct": 45.67
  },
  "gnss": {
    "latitude": 35.6762,
    "longitude": 139.7674,
    "altitude": 50.0,
    "gnss_time": 1732046795,
    "satellites": 12,
    "quality": 1,
    "valid": true,
    "hdop": 1.2
  }
}

Conditional Fields:

  • bme280 object appears only when ENABLE_BME280=1
  • gnss object appears only when ENABLE_GNSS=1
  • All core fields (version, build_type, mac_address, thresholds) are always present

Installation

Quick Start

# Get the release
git checkout v1.13.16

# Build
task build

# Upload
task upload

# Check it works
task monitor

What's Different from the Last Version?

✅ Added

  • Enhanced GET_STATUS response with MAC address field
  • Nested "thresholds" object containing all three channel threshold values (ch1, ch2, ch3)
  • Conditional nested "bme280" object with temperature, pressure, humidity when ENABLE_BME280=1
  • Conditional nested "gnss" object with all GNSS position and satellite data when ENABLE_GNSS=1

🔧 Changed

  • GET_STATUS command expanded from simple status fields to comprehensive device overview
  • Response structure now uses nested objects for better data organization and clarity

🐛 Fixed

  • None (enhancement release)

Is It Safe to Upgrade?

Backward Compatible: Yes

  • GET_STATUS response is enhanced with additional fields, not replaced
  • Existing clients expecting the original fields (version, poll_count, stream_enabled, uptime_ms) will continue to work
  • Additional nested objects (thresholds, bme280, gnss) are additive and don't break existing parsing
  • No breaking changes to command syntax or other commands

Tests Passed

  • ✅ Builds without errors (RAM: 8.8%, Flash: 26.6%)
  • ✅ All pre-commit hooks pass (formatting, trailing whitespace, YAML/JSON validation)
  • ✅ GET_STATUS handler compiles with Phase 6 Payload Pointer Pattern
  • ✅ Nested JSON objects properly created and serialized
  • ✅ Conditional compilation works for ENABLE_BME280 and ENABLE_GNSS flags

Release Details

  • Date: 2025-12-11
  • Version: v1.13.16
  • Files Changed: 1
  • src/command/status.cpp (enhanced GET_STATUS handler with nested structures)

Next Steps

  • Phase 6 Payload Pointer Pattern: Continue migration for WiFi command handlers (SET_WIFI_SSID, SET_WIFI_ENABLE, GET_WIFI_STATUS)
  • CommandParser Class: Implement unified command argument parsing framework for v1.14.0 to consolidate validation logic
  • Additional Command Enhancement: Consider similar nested structure enhancements for other comprehensive query commands