Skip to content

Commit ceff4c7

Browse files
authored
Attempt to build minimal atom echo factory firmware (#113)
1 parent fe181a5 commit ceff4c7

File tree

3 files changed

+129
-0
lines changed

3 files changed

+129
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Build minimal
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
10+
11+
jobs:
12+
build-firmware:
13+
name: Build Firmware
14+
uses: esphome/workflows/.github/workflows/build.yml@2025.4.0
15+
with:
16+
files: |
17+
m5stack-atom-echo/m5stack-atom-echo.minimal.factory.yaml
18+
esphome-version: 2025.5.0
19+
release-summary: ${{ github.event_name == 'release' && github.event.release.body || '' }}
20+
release-url: ${{ github.event_name == 'release' && github.event.release.html_url || '' }}
21+
release-version: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}
22+
23+
upload-to-release:
24+
name: Upload to Release
25+
runs-on: ubuntu-latest
26+
needs:
27+
- build-firmware
28+
steps:
29+
- name: Download Artifact
30+
uses: actions/download-artifact@v4.3.0
31+
with:
32+
path: files
33+
34+
- name: Copy file to output
35+
run: |-
36+
mkdir output
37+
version="${{ github.event.release.tag_name }}"
38+
cd "files/m5stack-atom-echo/$version"
39+
cp m5stack-atom-echo-esp32.factory.bin ../../../output/m5stack-atom-echo.minimal.factory.bin
40+
md5sum m5stack-atom-echo-esp32.factory.bin | head -c 32 > ../../../output/m5stack-atom-echo.minimal.factory.bin.md5
41+
42+
- name: Upload files to release
43+
uses: softprops/action-gh-release@v2.2.2
44+
with:
45+
files: output/*
46+
tag_name: ${{ github.event.release.tag_name }}

.github/workflows/build.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@ jobs:
2525
release-url: ${{ github.event_name == 'release' && github.event.release.html_url || '' }}
2626
release-version: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}
2727

28+
build-minimal-firmware:
29+
name: Build Atom Echo Minimal Firmware
30+
uses: esphome/workflows/.github/workflows/build.yml@2025.4.0
31+
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
32+
with:
33+
files: |
34+
m5stack-atom-echo/m5stack-atom-echo.minimal.factory.yaml
35+
combined-name: m5stack-atom-echo-minimal
36+
esphome-version: 2025.5.0
37+
release-summary: ${{ github.event_name == 'release' && github.event.release.body || '' }}
38+
release-url: ${{ github.event_name == 'release' && github.event.release.html_url || '' }}
39+
release-version: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}
40+
2841
upload-to-r2:
2942
if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
3043
name: Upload to R2
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
packages:
2+
m5stack-atom-echo: !include m5stack-atom-echo.yaml
3+
4+
esphome:
5+
name: m5stack-atom-echo
6+
project:
7+
name: m5stack.atom-echo-wake-word-voice-assistant
8+
version: 25.0.0 # This firmware is a first step and devices should be OTA updated to the latest firmware on first use
9+
10+
ota:
11+
- platform: http_request
12+
id: ota_http_request
13+
14+
update:
15+
- platform: http_request
16+
id: update_http_request
17+
name: Firmware
18+
source: https://firmware.esphome.io/wake-word-voice-assistant/m5stack-atom-echo/manifest.json
19+
20+
http_request:
21+
timeout: 10s
22+
watchdog_timeout: 15s
23+
24+
dashboard_import:
25+
package_import_url: github://esphome/wake-word-voice-assistants/m5stack-atom-echo/m5stack-atom-echo.yaml@main
26+
27+
improv_serial:
28+
29+
esp32_improv:
30+
authorizer: echo_button
31+
32+
wifi:
33+
on_connect:
34+
- component.update: update_http_request
35+
- delay: 2s
36+
- ble.disable:
37+
38+
# The below is removed to make this binary smaller
39+
40+
binary_sensor:
41+
- id: !extend echo_button
42+
on_multi_click: !remove
43+
on_press:
44+
- delay: 10s
45+
- if:
46+
condition:
47+
binary_sensor.is_on: echo_button
48+
then:
49+
- button.press: factory_reset_btn
50+
media_player:
51+
- id: !extend echo_media_player
52+
files: !remove
53+
on_announcement: !remove
54+
on_idle: !remove
55+
56+
script: !remove
57+
58+
micro_wake_word: !remove
59+
select: !remove
60+
switch: !remove
61+
voice_assistant:
62+
micro_wake_word: !remove
63+
on_listening: !remove
64+
on_stt_vad_end: !remove
65+
on_tts_start: !remove
66+
on_end: !remove
67+
on_error: !remove
68+
on_client_connected: !remove
69+
on_client_disconnected: !remove
70+
on_timer_finished: !remove

0 commit comments

Comments
 (0)