Skip to content

Release 26.3.2.1 - New sensors, ESPHome modernisation, and bug fixes#89

Merged
TrevorSchirmer merged 38 commits into
mainfrom
beta
Apr 7, 2026
Merged

Release 26.3.2.1 - New sensors, ESPHome modernisation, and bug fixes#89
TrevorSchirmer merged 38 commits into
mainfrom
beta

Conversation

@bharvey88
Copy link
Copy Markdown
Contributor

@bharvey88 bharvey88 commented Mar 27, 2026

Version: 26.3.2.1

What does this implement/fix?

Merges beta into main for the 26.3.2.1 release. Changes include:

  • NowCast AQI sensor — uses PM2.5 + PM10 via the built-in ESPHome aqi platform (higher of the two sub-indices per 2024 EPA breakpoints)
  • Configurable DPS310 pressure offset — disabled by default
  • IP address text sensor — via wifi_info platform
  • ESPHome version + Apollo firmware version text sensors
  • ESPHome modernisationesp32c3 board variant + flash_size: 4MB, web server v3, API actions/action (was services/service), remove legacy BLE on_connect/on_disconnect wifi hooks from Factory YAML
  • Bug fixes — Apollo firmware version showing "unknown" in always-on mode, UTF-8 special character restoration, entity_category/diagnostic fixes, NaN guard on DPS310 pressure filter lambda

Types of changes

  • Bugfix (fixed change that fixes an issue)
  • New feature (thanks!)
  • Breaking change (repair/feature that breaks existing functionality)
  • Dependency Update - Does not publish
  • Other - Does not publish
  • Website of github readme file update - Does not publish
  • Github workflows - Does not publish

Checklist / Checklijst:

  • The code change has been tested and works locally
  • The code change has not yet been tested

If user-visible functionality or configuration variables are added/modified:

  • Added/updated documentation for the web page

Summary by CodeRabbit

  • New Features

    • NowCast AQI sensor for air quality calculations
    • Pressure offset control for improved pressure accuracy
    • Diagnostic sensors showing device info and Apollo/ESPHome firmware versions
    • CO2 calibration and SEN55 maintenance exposed as executable actions
  • Updates

    • Device firmware version bumped to 26.3.2.1
    • Sensor configurations and identifiers refined for consistency
    • Factory build no longer toggles BLE based on Wi‑Fi connectivity

kmagdziak and others added 30 commits October 1, 2025 12:12
Merges AIR-1 main branch to beta to get it synced up and ready for beta PRs
Add ids for temp and humidity
…to 60 second esphome defaults

Fixed missing ids for mics entities and changed update_interval back to 60 second esphome defaults
…interval

Fixes Missing ids for mics entities and changes update_interval back to 60 second esphome defaults
Uses PM2.5 and PM10 from the SEN55 via the built-in esphome aqi platform.
Returns the higher of the two sub-indices per 2024 EPA breakpoints.
Named "NowCast AQI" rather than "AQI" because the device lacks ozone and SO2.
- esp32: board -> variant: esp32c3 + flash_size: 4MB
- web_server: add version: 3
- api: services/service -> actions/action
- Remove platformio_options board_build.flash_mode from all device YAMLs
- AIR-1_Factory: remove legacy BLE on_connect/on_disconnect wifi hooks

Port of ApolloAutomation/MTR-1#74 (min_version bump excluded per repo conventions)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[esphome] Modernise board spec, web server v3, and API actions
[version] Add ESPHome version and Apollo firmware version sensors
[aqi] Add NowCast AQI sensor using PM2.5 and PM10
[apollo_air-1] Add configurable DPS310 pressure offset
bharvey88 and others added 6 commits March 2, 2026 15:57
Bump version to 26.3.2.1
The sensor uses update_interval: never and only updated via reportAllValues,
which is gated behind the prevent_sleep=OFF branch of on_client_connected.
Since prevent_sleep defaults to RESTORE_DEFAULT_ON, the sensor never got
a value in always-on mode and showed "unknown" in HA.

Fix by calling component.update unconditionally at the start of
on_client_connected, before the 90s delay and sleep conditional.
…nown

fix: Apollo firmware version always showing unknown
The sensor was showing "unknown" because component.update silently fails
when the component's is_ready() check returns false. Replaced with
text_sensor.template.publish which calls publish_state() directly.

Also removed update_interval: never so the lambda fires every 60s as a
periodic fallback.
Per ESPHome dev feedback: the version is a compile-time constant, so
publish it once on_boot rather than using a lambda with periodic updates.
Removed publish from on_client_connected and reportAllValues script.
Fix Apollo Firmware Version sensor showing unknown
@github-actions github-actions Bot added the new-feature New feature label Mar 27, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 27, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: cf4418cc-8d95-49c0-910b-14d6ef7c2912

📥 Commits

Reviewing files that changed from the base of the PR and between b5096d4 and 20cc32c.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • .github/workflows/weekly.yml
✅ Files skipped from review due to trivial changes (2)
  • .github/workflows/weekly.yml
  • .github/workflows/ci.yml

Walkthrough

Updated ESPHome device YAMLs by removing explicit PlatformIO flash-mode overrides and adding an on_boot publish of a template firmware-version text_sensor in AIR-1.yaml. Core.yaml was updated: version bump, esp32c3 target, API services → actions, new sensors/number/text_sensors, sensor id additions, and sensor interval adjustments.

Changes

Cohort / File(s) Summary
Device configs
Integrations/ESPHome/AIR-1.yaml, Integrations/ESPHome/AIR-1_BLE.yaml, Integrations/ESPHome/AIR-1_Factory.yaml
Removed platformio_options.board_build.flash_mode: dio from all three. AIR-1.yaml adds an on_boot action that publishes a text_sensor.template (apollo_firmware_version) with state: "${version}". AIR-1_Factory.yaml also removes WiFi on_connect/on_disconnect BLE toggling.
Core configuration
Integrations/ESPHome/Core.yaml
Bumped substitutions.version to 26.3.2.1, changed ESP32 target to esp32c3 with 4MB flash, set web_server version to 3. Converted api: services: to actions: for calibrate_co2_value and sen55_clean. Added number template DPS310 Pressure Offset with lambda applied to dps310 pressure sensor. Added NowCast AQI sensor, diagnostic text_sensors (wifi_info, version, apollo_firmware_version), explicit IDs for SEN55 and MICS-4514 sub-sensors, and increased MICS update_interval from 10s → 60s.
CI workflow names
.github/workflows/ci.yml, .github/workflows/weekly.yml
Updated job display names to include matrix.esphome-version in the visible build name strings; no logic or step changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

bugfix

Suggested reviewers

  • TrevorSchirmer

Poem

🐰 A tiny hop, a firmware cheer,
I publish my version when boot is near,
Flash-modes slipped away with grace,
New sensors dance, IDs find their place,
I sniff the AQI and smile, ear to ear.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary changes in the PR: a version release (26.3.2.1) with new sensors (NowCast AQI, IP address, firmware version text sensors), ESPHome modernization (board variant, web_server v3, API actions, removal of legacy options), and bug fixes—all of which are clearly present in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch beta

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@bharvey88 bharvey88 added the breaking-change Breaking change label Mar 27, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Integrations/ESPHome/Core.yaml`:
- Around line 330-336: The sensor is misnamed as "NowCast AQI" while using the
ESPHome aqi platform (platform: aqi, id: nowcast_aqi, pm_2_5, pm_10_0,
calculation_type: AQI, device_class: aqi) which does not implement NowCast;
rename the sensor and id to something accurate like "PM AQI" (update name and id
from "NowCast AQI" / nowcast_aqi to "PM AQI" / pm_aqi or "PM-only AQI" /
pm_only_aqi) and ensure any references to the old id are updated accordingly so
the configuration correctly reflects the instantaneous PM-based AQI calculation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9cad7f84-689c-4781-b4b6-7925a0fd7800

📥 Commits

Reviewing files that changed from the base of the PR and between 6637a0c and b5096d4.

📒 Files selected for processing (4)
  • Integrations/ESPHome/AIR-1.yaml
  • Integrations/ESPHome/AIR-1_BLE.yaml
  • Integrations/ESPHome/AIR-1_Factory.yaml
  • Integrations/ESPHome/Core.yaml
💤 Files with no reviewable changes (2)
  • Integrations/ESPHome/AIR-1_BLE.yaml
  • Integrations/ESPHome/AIR-1_Factory.yaml

Comment thread Integrations/ESPHome/Core.yaml
TrevorSchirmer
TrevorSchirmer previously approved these changes Mar 30, 2026
@TrevorSchirmer TrevorSchirmer merged commit 215b525 into main Apr 7, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Breaking change new-feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants