v5 is a rewrite on ESP-IDF with a new hardware config model. WiFi and MQTT settings survive an OTA from v4; hardware settings do not. Expect to re-enter pins (or import a board template) and to clean up Home Assistant entities.
Breaking Changes
- Firmware is pure ESP-IDF v5.4. No Arduino, no PlatformIO. Build with
./build.sh <env>(#2497) - Hardware config is four JSON settings:
leds,inputs,outputs,power. All oldled_N_*,pir_*,radar_*,switch_N_*,button_N_*,led_pwr_pinkeys are gone with no migration (#2530) - PIR, radar, switches and buttons are now inputs (up to 8).
<room>/motion, switch and button topics are replaced by<room>/input_Nbinary sensors (#2530) - Relays are now outputs (up to 8), one HA switch each on
<room>/output_N,/settakes ON/OFF/TOGGLE (#2530) - Input timeout MQTT commands removed (#2530)
m5stickc,m5stickc-plus,m5atomimages are now aliases ofesp32; the M5StickC screen no longer shows status text, AXP192 is a hardware checkbox (#2497, #2530)macchina-a0(CAN) build dropped (#2497)- Fresh flashes should use the new
<env>.factory.binat offset 0x0 (#2532) - Some boards needed a power cycle after the first boot following an OTA from v4
New Features
- Board templates: import/export hardware settings as JSON on a new Templates page (#2531)
- Smart plug power monitoring: BL0937, HLW8012 and CSE7766 publish power, voltage, current and energy to HA (#2530)
- Outputs can be driven by a linked input (button toggles, switch/motion follows) and restore state on boot (#2530)
- Fixed
high/lowoutput types for enable pins such as the NanoC6 LED power rail (#2530, #2536) - LED
outputcontrol mode mirrors an output, e.g. a plug's relay LED (#2530) - Battery level on any ADC1 pin via
batt_pinandbatt_mult(#2530) - Waveshare ESP32-S3-ETH (W5500) and WESP32 Rev7+ Ethernet (#2528)
- Optional WPA2 password on the setup access point (#2519)
rssi_window_mssetting for RSSI smoothing (#2520)- Active connection option for IRK discovery (#2247)
- MQTT
/setfor forget, requery and count settings (#2336)
Memory & Performance
- Free heap under full fingerprint load: ESP32-S3 13 KB → 111 KB, ESP32-C6 66 KB → 150 KB, ESP32-C3 18 KB → 30 KB. 4 h soak flat on all four chips (#2497)
- Fingerprint cap, tunable in Settings. Defaults: ESP32 45, ESP32-C3 100, ESP32-S3 150, ESP32-C6 200 (#2208, #2282)
- ESP32-S3 and C3 low-heap freezes, leaks and reboots fixed (#2309: #2414, #2426, #2428, #2431, #2439, #2446, #2453, #2462)
- No heap allocation or double-precision math on the per-advertisement path (#2284, #2504, #2506)
- OTA and
/jsonback off under low heap instead of crashing (#2291, #2428, #2462) - Smaller binaries: newlib-nano printf, no oversized libm calls, smaller UI payload (#2412, #2505, #2507)
Bug Fixes
- Beacons that switch iBeacon UUID when triggered (BlueCharm BC021 Pro / BC04P) get one fingerprint per UUID instead of hiding the trigger (#2527)
- Stack overflow in MQTT publish and heap corruption on lock failure (#2314, #2315, #2413)
- Enrollment on ESP32-C6 (#2366)
- Clear stale bonds after init (#2382)
- Password fields no longer autofill (#2526)