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 }}
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