Note: This issue was drafted by an AI assistant on my behalf. I hit the compile error as an end user, so I may not be able to answer deep technical follow-up questions myself — but I'm happy to test any proposed fix on my hardware (ESP32-C3 / ESPHome 2026.8.2) and report back.
Problem
The wavinAhc9000 component on main does not compile on the current stable ESPHome 2026.8.2. Both wavinAhc9000.cpp and wavinAhc9000_climate.cpp fail with:
wavinAhc9000.h:18:10: error: 'void ...::on_modbus_data(const std::vector<uint8_t>&)' marked 'override', but does not override
Cause
main currently targets the 2026.7.x ModbusClientDevice hook names (on_modbus_data / on_modbus_no_response / on_modbus_not_sent). In the released 2026.8.x API these were renamed and now take the request PDU as an argument. The relevant base-class declarations in modbus.h (2026.8.2) are:
virtual void on_response(std::span<const uint8_t> request_pdu, std::span<const uint8_t> response_pdu);
virtual bool on_no_response(std::span<const uint8_t> request_pdu);
virtual void on_not_sent(std::span<const uint8_t> request_pdu);
The earlier (reverted) commit cfdda97 already ported to on_response() / on_no_response() / on_not_sent(), but it was written against a pre-release 2026.8 master where the latter two took no arguments. Released 2026.8.2 added the request_pdu parameter, so those two now fail to override (compiler reports them as hidden via -Woverloaded-virtual).
Suggested fix
Use the cfdda97 port and add the request_pdu parameter to the two hooks so they match released 2026.8.2:
wavinAhc9000.h
void on_response(std::span<const uint8_t> request_pdu, std::span<const uint8_t> response_pdu) override; // already correct
bool on_no_response(std::span<const uint8_t> /*request_pdu*/) override;
void on_not_sent(std::span<const uint8_t> /*request_pdu*/) override { this->waiting_ = false; }
wavinAhc9000.cpp
bool WavinAhc9000::on_no_response(std::span<const uint8_t> /*request_pdu*/) {
The bodies don't need the argument, so it can stay unnamed. send_pdu() still works but is deprecated in favour of queue_pdu() (removal announced for 2027.2.0), so that could be switched at the same time to silence the warning.
Environment
- ESPHome 2026.8.2 (HA add-on)
- Board:
esp32-c3-devkitm-1, framework esp-idf 5.5.5
- Also requires
flow_control_pin on the modbus: hub (as noted in cfdda97); rw_pin on the component is deprecated/ignored.
Problem
The
wavinAhc9000component onmaindoes not compile on the current stable ESPHome 2026.8.2. BothwavinAhc9000.cppandwavinAhc9000_climate.cppfail with:Cause
maincurrently targets the 2026.7.xModbusClientDevicehook names (on_modbus_data/on_modbus_no_response/on_modbus_not_sent). In the released 2026.8.x API these were renamed and now take the request PDU as an argument. The relevant base-class declarations inmodbus.h(2026.8.2) are:The earlier (reverted) commit
cfdda97already ported toon_response()/on_no_response()/on_not_sent(), but it was written against a pre-release 2026.8 master where the latter two took no arguments. Released 2026.8.2 added therequest_pduparameter, so those two now fail to override (compiler reports them as hidden via-Woverloaded-virtual).Suggested fix
Use the
cfdda97port and add therequest_pduparameter to the two hooks so they match released 2026.8.2:wavinAhc9000.hwavinAhc9000.cppThe bodies don't need the argument, so it can stay unnamed.
send_pdu()still works but is deprecated in favour ofqueue_pdu()(removal announced for 2027.2.0), so that could be switched at the same time to silence the warning.Environment
esp32-c3-devkitm-1, frameworkesp-idf5.5.5flow_control_pinon themodbus:hub (as noted incfdda97);rw_pinon the component is deprecated/ignored.