Skip to content

Commit 7958412

Browse files
limengducursoragent
andcommitted
fix: add XIAO_Soil_Moisture_Sensor build job to workflow
- Add soil-moisture detection filter in detect-changes job - Add build-soil-moisture job for ESP32-C6 compilation - Include soil moisture sensor in combine job Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent a8de4f6 commit 7958412

1 file changed

Lines changed: 47 additions & 2 deletions

File tree

.github/workflows/build-firmware.yml

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ jobs:
4242
outputs:
4343
library: ${{ steps.filter.outputs.library }}
4444
iot-button: ${{ steps.filter.outputs.iot-button }}
45+
soil-moisture: ${{ steps.filter.outputs.soil-moisture }}
4546
camera-stream: ${{ steps.filter.outputs.camera-stream }}
4647
reterminal-e1001: ${{ steps.filter.outputs.reterminal-e1001 }}
4748
reterminal-e1002: ${{ steps.filter.outputs.reterminal-e1002 }}
@@ -62,6 +63,8 @@ jobs:
6263
- '.github/workflows/build-firmware.yml'
6364
iot-button:
6465
- 'arduino/SeeedHADiscovery/examples/IoTButtonV2_DeepSleep/**'
66+
soil-moisture:
67+
- 'arduino/SeeedHADiscovery/examples/XIAO_Soil_Moisture_Sensor/**'
6568
camera-stream:
6669
- 'arduino/SeeedHADiscovery/examples/CameraStream/**'
6770
reterminal-e1001:
@@ -127,6 +130,48 @@ jobs:
127130
name: firmware-IoTButtonV2_DeepSleep
128131
path: build/IoTButtonV2_DeepSleep/
129132

133+
# Soil Moisture Sensor - XIAO ESP32-C6 only
134+
build-soil-moisture:
135+
needs: detect-changes
136+
if: ${{ github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.library == 'true' || needs.detect-changes.outputs.soil-moisture == 'true' }}
137+
runs-on: ubuntu-latest
138+
steps:
139+
- uses: actions/checkout@v4
140+
- name: Setup Arduino CLI
141+
run: |
142+
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh
143+
- name: Install dependencies
144+
run: |
145+
arduino-cli config init
146+
arduino-cli config add board_manager.additional_urls "https://espressif.github.io/arduino-esp32/package_esp32_index.json"
147+
arduino-cli core update-index
148+
arduino-cli core install esp32:esp32@${{ env.ESP32_CORE_VERSION }}
149+
for i in 1 2 3; do arduino-cli lib install "ArduinoJson@${{ env.ARDUINOJSON_VERSION }}" && break || sleep 10; done
150+
for i in 1 2 3; do arduino-cli lib install "WebSockets@${{ env.WEBSOCKETS_VERSION }}" && break || sleep 10; done
151+
mkdir -p ~/Arduino/libraries && cp -r arduino/SeeedHADiscovery ~/Arduino/libraries/
152+
- name: Compile
153+
run: |
154+
mkdir -p build/XIAO_Soil_Moisture_Sensor
155+
arduino-cli compile --fqbn "esp32:esp32:XIAO_ESP32C6:CDCOnBoot=cdc,PartitionScheme=huge_app,FlashMode=qio,FlashSize=4M" \
156+
--output-dir "build/XIAO_Soil_Moisture_Sensor" --export-binaries \
157+
"arduino/SeeedHADiscovery/examples/XIAO_Soil_Moisture_Sensor/XIAO_Soil_Moisture_Sensor.ino"
158+
- name: Prepare firmware
159+
run: |
160+
cd build/XIAO_Soil_Moisture_Sensor
161+
for f in *.bin; do
162+
[[ "$f" == *".ino.bin" ]] && mv "$f" "firmware.bin"
163+
[[ "$f" == *".bootloader.bin" ]] && mv "$f" "bootloader.bin"
164+
[[ "$f" == *".partitions.bin" ]] && mv "$f" "partitions.bin"
165+
done
166+
cp $(find ~/.arduino15/packages/esp32 -name "boot_app0.bin" -type f | head -1) ./boot_app0.bin
167+
cat > manifest.json << 'EOF'
168+
{"name":"Soil Moisture Sensor (XIAO ESP32-C6)","version":"1.0.0","new_install_prompt_erase":true,"builds":[{"chipFamily":"ESP32-C6","parts":[{"path":"bootloader.bin","offset":0},{"path":"partitions.bin","offset":32768},{"path":"boot_app0.bin","offset":57344},{"path":"firmware.bin","offset":65536}]}]}
169+
EOF
170+
- uses: actions/upload-artifact@v4
171+
with:
172+
name: firmware-XIAO_Soil_Moisture_Sensor
173+
path: build/XIAO_Soil_Moisture_Sensor/
174+
130175
# Camera Stream - XIAO ESP32-S3 Sense only
131176
build-camera-stream:
132177
needs: detect-changes
@@ -516,7 +561,7 @@ jobs:
516561
# ============================================================================
517562

518563
combine:
519-
needs: [detect-changes, build-iot-button, build-camera-stream, build-reterminal-e1001, build-reterminal-e1002, build-wifi-provisioning, build-button-switch, build-led-switch, build-ha-state-subscribe, build-temp-humidity]
564+
needs: [detect-changes, build-iot-button, build-soil-moisture, build-camera-stream, build-reterminal-e1001, build-reterminal-e1002, build-wifi-provisioning, build-button-switch, build-led-switch, build-ha-state-subscribe, build-temp-humidity]
520565
if: always() && !cancelled()
521566
runs-on: ubuntu-latest
522567
steps:
@@ -532,7 +577,7 @@ jobs:
532577
mkdir -p combined-firmware
533578
534579
# Single-chip firmware (Seeed-specific)
535-
for fw in IoTButtonV2_DeepSleep CameraStream reTerminal_E1001 reTerminal_E1002; do
580+
for fw in IoTButtonV2_DeepSleep XIAO_Soil_Moisture_Sensor CameraStream reTerminal_E1001 reTerminal_E1002; do
536581
if [ -d "all-firmware/firmware-${fw}" ]; then
537582
cp -r "all-firmware/firmware-${fw}" "combined-firmware/${fw}"
538583
echo "Added: ${fw}"

0 commit comments

Comments
 (0)