Skip to content

v1.10.6 - Text Command Response Format Standardization (2025-12-06)

What Changed?

This release standardizes the response format across all text commands for consistency and simplicity. The main changes are: simplifying GET_UPTIME to return only uptime milliseconds (delegating time parsing to clients), standardizing RTC_TIME response fields to use consistent naming, and ensuring all command responses follow the unified {"type":"response","status":"..."} format.


What's New

GET_UPTIME Simplified

What it does: The GET_UPTIME command now returns only the raw uptime in milliseconds, eliminating complex time conversion logic from the firmware.

Old response (v1.10.5):

{
  "type": "response",
  "status": "ok",
  "uptime_ms": 12345,
  "days": 0,
  "hours": 0,
  "minutes": 0,
  "seconds": 12,
  "milliseconds": 345
}

New response (v1.10.6):

{
  "type": "response",
  "status": "ok",
  "uptime_ms": 12345
}

Benefits:

  • Reduces firmware code complexity
  • Smaller JSON payload size
  • Clients can implement custom time formatting as needed
  • Keeps embedded system responses minimal and focused

RTC_TIME Response Standardized

What it does: Both SET_RTC_TIME and GET_RTC_TIME now use consistent field naming and response format.

Updated response format:

{
  "type": "response",
  "status": "ok",
  "rtc_timestamp": 1732046789
}

Changes:

  • Added missing "type":"response" field to both commands
  • Unified field name as "rtc_timestamp" (was "timestamp" for SET, "time" for GET)
  • Aligns with standard response format used across all commands

Response Format Consistency

All 19 text commands now follow unified response structure:

{
  "type": "response",
  "status": "ok|error",
  ...data fields...
}

Affected commands: GET_UPTIME, SET_RTC_TIME, GET_RTC_TIME

Benefit: Clients can parse all command responses with a single, predictable schema.


Installation

Quick Start

# Get the release
git checkout v1.10.6

# Build development version
task dev:build && task dev:upload

# Or production version
task prod:build && task prod:upload

# Monitor output
task monitor

What's Different from the Last Version?

✅ Changed

  • GET_UPTIME response: Simplified from 6 fields to 1 field (uptime_ms only)
  • SET_RTC_TIME response: Added "type":"response" field, renamed field to "rtc_timestamp"
  • GET_RTC_TIME response: Added "type":"response" field, renamed field to "rtc_timestamp"

Performance Impact

  • Firmware size: Reduced by ~30 bytes (removed time conversion code)
  • JSON payload: Reduced by ~60% for GET_UPTIME (from ~120 to ~50 bytes)
  • Runtime overhead: Eliminated time conversion calculations

Backward Compatibility

⚠️ Breaking changes for clients using GET_UPTIME or RTC_TIME commands:

  1. GET_UPTIME clients must update to use only uptime_ms field
  2. RTC_TIME clients must handle new field names (rtc_timestamp instead of timestamp/time)
  3. RTC_TIME clients must handle new "type":"response" field

All other commands remain unchanged.


Testing Checklist

  • GET_UPTIME returns {"type":"response","status":"ok","uptime_ms":value}
  • SET_RTC_TIME returns {"type":"response","status":"ok","rtc_timestamp":value}
  • GET_RTC_TIME returns {"type":"response","status":"ok","rtc_timestamp":value}
  • All 19 text commands include "type":"response" field
  • Serial output format validated with existing protocol

Is It Safe to Upgrade?

For production systems: ⚠️ Only if you don't use GET_UPTIME or RTC_TIME commands in your data pipeline.

For development: ✅ Yes, safe to upgrade.


Known Issues

None reported.