From 98865afdcc4fa8ec6b119cb4e9678e9d019140df Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 21:55:32 -0500 Subject: [PATCH 1/5] Add HTTP request OTA update system from R_PRO-1 Port the managed firmware update system from R_PRO-1 to all MSR-1 variants: - Add http_request OTA platform alongside the existing esphome OTA - Add update component pulling the firmware manifest from GitHub Pages - Add safe_mode for recovery from failed updates - Build and publish the BLE variant (firmware-ble) so BLE devices update from their own manifest instead of being converted to the factory firmware --- Integrations/ESPHome/MSR-1.yaml | 13 +++++++++++++ Integrations/ESPHome/MSR-1_BLE.yaml | 13 +++++++++++++ Integrations/ESPHome/MSR-1_Factory.yaml | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/Integrations/ESPHome/MSR-1.yaml b/Integrations/ESPHome/MSR-1.yaml index 72245d3..9227eb8 100644 --- a/Integrations/ESPHome/MSR-1.yaml +++ b/Integrations/ESPHome/MSR-1.yaml @@ -29,6 +29,8 @@ logger: ota: - platform: esphome password: ${ota_password} + - platform: http_request + id: ota_managed wifi: power_save_mode: none @@ -41,5 +43,16 @@ web_server: port: 80 version: 3 +http_request: + verify_ssl: true + +safe_mode: + +update: + - platform: http_request + id: update_http_request + name: Firmware Update + source: https://apolloautomation.github.io/MSR-1/firmware/manifest.json + packages: core: !include Core.yaml \ No newline at end of file diff --git a/Integrations/ESPHome/MSR-1_BLE.yaml b/Integrations/ESPHome/MSR-1_BLE.yaml index a6cf842..edf57ec 100644 --- a/Integrations/ESPHome/MSR-1_BLE.yaml +++ b/Integrations/ESPHome/MSR-1_BLE.yaml @@ -30,6 +30,8 @@ dashboard_import: ota: - platform: esphome password: ${ota_password} + - platform: http_request + id: ota_managed wifi: ap: @@ -38,5 +40,16 @@ wifi: bluetooth_proxy: active: true +http_request: + verify_ssl: true + +safe_mode: + +update: + - platform: http_request + id: update_http_request + name: Firmware Update + source: https://apolloautomation.github.io/MSR-1/firmware-ble/manifest.json + packages: core: !include Core.yaml \ No newline at end of file diff --git a/Integrations/ESPHome/MSR-1_Factory.yaml b/Integrations/ESPHome/MSR-1_Factory.yaml index ecc54f9..1371759 100644 --- a/Integrations/ESPHome/MSR-1_Factory.yaml +++ b/Integrations/ESPHome/MSR-1_Factory.yaml @@ -38,6 +38,19 @@ logger: ota: - platform: esphome id: ota_esphome + - platform: http_request + id: ota_managed + +http_request: + verify_ssl: true + +safe_mode: + +update: + - platform: http_request + id: update_http_request + name: Firmware Update + source: https://apolloautomation.github.io/MSR-1/firmware/manifest.json packages: core: !include Core.yaml \ No newline at end of file From 64494c629f26eb51d04dcc7267cdc3262eabc621 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 21:55:33 -0500 Subject: [PATCH 2/5] Check for updates when WiFi connects The http_request update component polls every 6h and the first poll fires before the network is up, so a freshly booted device would not see an available update for 6 hours. Trigger a manifest check as soon as WiFi connects. --- Integrations/ESPHome/MSR-1.yaml | 2 ++ Integrations/ESPHome/MSR-1_BLE.yaml | 2 ++ Integrations/ESPHome/MSR-1_Factory.yaml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/Integrations/ESPHome/MSR-1.yaml b/Integrations/ESPHome/MSR-1.yaml index 9227eb8..dafabba 100644 --- a/Integrations/ESPHome/MSR-1.yaml +++ b/Integrations/ESPHome/MSR-1.yaml @@ -33,6 +33,8 @@ ota: id: ota_managed wifi: + on_connect: + - component.update: update_http_request power_save_mode: none ap: ssid: "Apollo MSR1 Hotspot" diff --git a/Integrations/ESPHome/MSR-1_BLE.yaml b/Integrations/ESPHome/MSR-1_BLE.yaml index edf57ec..5eb2aa3 100644 --- a/Integrations/ESPHome/MSR-1_BLE.yaml +++ b/Integrations/ESPHome/MSR-1_BLE.yaml @@ -34,6 +34,8 @@ ota: id: ota_managed wifi: + on_connect: + - component.update: update_http_request ap: ssid: "Apollo MSR1 Hotspot" diff --git a/Integrations/ESPHome/MSR-1_Factory.yaml b/Integrations/ESPHome/MSR-1_Factory.yaml index 1371759..ed0ad7f 100644 --- a/Integrations/ESPHome/MSR-1_Factory.yaml +++ b/Integrations/ESPHome/MSR-1_Factory.yaml @@ -30,6 +30,8 @@ esp32_improv: authorizer: none wifi: + on_connect: + - component.update: update_http_request ap: ssid: "Apollo MSR1 Hotspot" From 250f272882f97ed487e3ceb418eaccd41e742742 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 21:55:33 -0500 Subject: [PATCH 3/5] Raise min_version to 2025.11.0 to match R_PRO-1's update-system floor --- Integrations/ESPHome/MSR-1.yaml | 2 +- Integrations/ESPHome/MSR-1_BLE.yaml | 2 +- Integrations/ESPHome/MSR-1_Factory.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Integrations/ESPHome/MSR-1.yaml b/Integrations/ESPHome/MSR-1.yaml index dafabba..0b83d1f 100644 --- a/Integrations/ESPHome/MSR-1.yaml +++ b/Integrations/ESPHome/MSR-1.yaml @@ -18,7 +18,7 @@ esphome: name: "ApolloAutomation.MSR-1" version: "${version}" - min_version: 2025.2.0 + min_version: 2025.11.0 dashboard_import: package_import_url: github://ApolloAutomation/MSR-1/Integrations/ESPHome/MSR-1.yaml diff --git a/Integrations/ESPHome/MSR-1_BLE.yaml b/Integrations/ESPHome/MSR-1_BLE.yaml index 5eb2aa3..92f7f96 100644 --- a/Integrations/ESPHome/MSR-1_BLE.yaml +++ b/Integrations/ESPHome/MSR-1_BLE.yaml @@ -18,7 +18,7 @@ esphome: name: "ApolloAutomation.MSR-1_BLE" version: "${version}" - min_version: 2025.2.0 + min_version: 2025.11.0 logger: diff --git a/Integrations/ESPHome/MSR-1_Factory.yaml b/Integrations/ESPHome/MSR-1_Factory.yaml index ed0ad7f..0b14b27 100644 --- a/Integrations/ESPHome/MSR-1_Factory.yaml +++ b/Integrations/ESPHome/MSR-1_Factory.yaml @@ -18,7 +18,7 @@ esphome: name: "ApolloAutomation.MSR-1_Factory" version: "${version}" - min_version: 2025.2.0 + min_version: 2025.11.0 dashboard_import: package_import_url: github://ApolloAutomation/MSR-1/Integrations/ESPHome/MSR-1.yaml From 3c6eb13dfb824b5fca49fd4328ec8c5aaa602843 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 21:55:51 -0500 Subject: [PATCH 4/5] Build and publish the BLE variant to its own firmware-ble manifest --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 657c95a..cebfa8e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,8 @@ jobs: device-name: msr-2 yaml-files: | Integrations/ESPHome/MSR-1_Factory.yaml - firmware-names: "1_Factory:firmware" + Integrations/ESPHome/MSR-1_BLE.yaml + firmware-names: "1_Factory:firmware,1_BLE:firmware-ble" core-yaml-path: Integrations/ESPHome/Core.yaml esphome-version: stable # Bypass check if manually triggered with bypass option From b6efb98544e47775756b4f4c4bba31c692693130 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:33:55 -0500 Subject: [PATCH 5/5] Release notes: compact formatting for the HA update dialog Home Assistant shows only the first 255 characters of an ESPHome release summary, so boilerplate is expensive and ## headings render oversized in the update dialog: - Render category titles and What's Changed in bold instead of H2 - Drop the star-the-repo footer - Drop the Full Changelog line: it semver-truncates 4-part versions (always links ...X.Y.Z.1) - the shared build workflow now appends a correct compare link instead --- .github/release-drafter.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 15d30ad..436184d 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -2,6 +2,7 @@ name-template: 'Release v$NEXT_PATCH_VERSION' tag-template: "$RESOLVED_VERSION" change-template: "- #$NUMBER $TITLE @$AUTHOR" sort-direction: ascending +category-template: '**$TITLE**' categories: - title: "🚨 Breaking changes" @@ -25,11 +26,9 @@ include-labels: no-changes-template: '- No changes' +# The shared build workflow appends a Full Changelog compare link to the +# release body (release-drafter cannot render 4-part version tags). template: | - ## What's Changed + **What's Changed** $CHANGES - - **Full Changelog**: https://github.com/ApolloAutomation/MSR-1/compare/$PREVIOUS_TAG...$RESOLVED_VERSION.1 - - Be sure to 🌟 this repository for updates! \ No newline at end of file