Skip to content

wavinAhc9000 fails to compile on ESPHome 2026.8.2 (modbus hook signatures out of date) - Board rev. 1 #27

Description

@mwhallberg

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions