Unable to build firmware

I have built a bluetooth proxy using the prebuilt template and that works but as soon as I try and tweak it I get errors building the firmware. Each time it looks like missing dependencies but I have downloaded the latest docker image so am I doing something wrong or have I missed something?

Each time I have made the amendments, clicked save and then chose to install by downloading and selecting modern format.

All the examples below are amendments to the ESP32 default bluetooth proxy config (bluetooth-proxies/esp32-generic.yaml at d01a17a599a38493c7bf4e317ac29388cc6f2cc3 · esphome/bluetooth-proxies · GitHub)

eg. adding a ble_presence sensor (ESP32 Bluetooth Low Energy Device — ESPHome)

binary_sensor:
  - platform: ble_presence
    mac_address: xx:xx:xx:xx:xx:xx
    name: "IBS-P01B Tracker"

I get

/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xb0): undefined reference to `vtable for esphome::ble_presence::BLEPresenceDevice'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xf0): undefined reference to `esphome::binary_sensor::BinarySensor::BinarySensor()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o: in function `esphome::safe_mode::SafeModeButton* esphome::Application::register_component<esphome::safe_mode::SafeModeButton>(esphome::safe_mode::SafeModeButton*)':
/config/.esphome/build/esp32-bluetooth-proxy/src/esphome/core/application.h:124: undefined reference to `esphome::binary_sensor::BinarySensor::BinarySensor()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/core/controller.o:(.literal._ZN7esphome10Controller16setup_controllerEb+0x8): undefined reference to `esphome::binary_sensor::BinarySensor::add_on_state_callback(std::function<void (bool)>&&)'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/core/controller.o: in function `esphome::Controller::setup_controller(bool)':
/config/.esphome/build/esp32-bluetooth-proxy/src/esphome/core/controller.cpp:11: undefined reference to `esphome::binary_sensor::BinarySensor::add_on_state_callback(std::function<void (bool)>&&)'
collect2: error: ld returned 1 exit status
*** [.pioenvs/esp32-bluetooth-proxy/firmware.elf] Error 1

adding a restart button (Restart Button — ESPHome)

button:
  - platform: safe_mode
    name: Safe Mode Boot
    entity_category: diagnostic
  - platform: restart
    name: "Bluetooth Proxy Restart"

I get

/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xa8): undefined reference to `vtable for esphome::restart::RestartButton'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xac): undefined reference to `vtable for esphome::restart::RestartButton'
collect2: error: ld returned 1 exit status
*** [.pioenvs/esp32-bluetooth-proxy/firmware.elf] Error 1

adding a restart switch (Restart Switch — ESPHome)

switch:
  - platform: restart
    name: "Bluetooth Proxy Restart"

I get

/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection14switch_commandERKNS0_20SwitchCommandRequestE+0x8): undefined reference to `esphome::switch_::Switch::turn_on()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection14switch_commandERKNS0_20SwitchCommandRequestE+0xc): undefined reference to `esphome::switch_::Switch::turn_off()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection16send_switch_infoEPNS_7switch_6SwitchE+0x18): undefined reference to `esphome::switch_::Switch::get_device_class[abi:cxx11]()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.o: in function `esphome::api::APIConnection::switch_command(esphome::api::SwitchCommandRequest const&)':
/config/.esphome/build/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.cpp:466: undefined reference to `esphome::switch_::Switch::turn_on()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/.esphome/build/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.cpp:468: undefined reference to `esphome::switch_::Switch::turn_off()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.o: in function `esphome::api::APIConnection::send_switch_info(esphome::switch_::Switch*)':
/config/.esphome/build/esp32-bluetooth-proxy/src/esphome/components/api/api_connection.cpp:456: undefined reference to `esphome::switch_::Switch::get_device_class[abi:cxx11]()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xa8): undefined reference to `vtable for esphome::restart::RestartSwitch'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xac): undefined reference to `vtable for esphome::restart::RestartSwitch'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o:(.literal._Z5setupv+0xe8): undefined reference to `esphome::switch_::Switch::Switch()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/main.o: in function `setup()':
/config/.esphome/build/esp32-bluetooth-proxy/src/main.cpp:194: undefined reference to `esphome::switch_::Switch::Switch()'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/core/controller.o:(.literal._ZN7esphome10Controller16setup_controllerEb+0x8): undefined reference to `esphome::switch_::Switch::add_on_state_callback(std::function<void (bool)>&&)'
/config/.esphome/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pioenvs/esp32-bluetooth-proxy/src/esphome/core/controller.o: in function `esphome::Controller::setup_controller(bool)':
/config/.esphome/build/esp32-bluetooth-proxy/src/esphome/core/controller.cpp:35: undefined reference to `esphome::switch_::Switch::add_on_state_callback(std::function<void (bool)>&&)'
collect2: error: ld returned 1 exit status
*** [.pioenvs/esp32-bluetooth-proxy/firmware.elf] Error 1
1 Like

I have the same problem. Installed bluetooth-proxy. If I try to add a SCD30 CO2 sensor to it I get similar errors and the build fails.
Unfortunately nobody here has made any suggestions on OP’s question, maybe this will bump the issue.

/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection17send_sensor_stateEPNS_6sensor6SensorEf+0x8): undefined reference to `esphome::sensor::Sensor::has_state() const'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection16send_sensor_infoEPNS_6sensor6SensorE+0x10): undefined reference to `esphome::sensor::Sensor::get_unit_of_measurement[abi:cxx11]()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection16send_sensor_infoEPNS_6sensor6SensorE+0x14): undefined reference to `esphome::sensor::Sensor::get_accuracy_decimals()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection16send_sensor_infoEPNS_6sensor6SensorE+0x18): undefined reference to `esphome::sensor::Sensor::get_device_class[abi:cxx11]()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o:(.literal._ZN7esphome3api13APIConnection16send_sensor_infoEPNS_6sensor6SensorE+0x1c): undefined reference to `esphome::sensor::Sensor::get_state_class()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o: in function `esphome::api::APIConnection::send_sensor_state(esphome::sensor::Sensor*, float)':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.cpp:414: undefined reference to `esphome::sensor::Sensor::has_state() const'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/data/cache/platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/basic_string.h:1366: undefined reference to `esphome::sensor::Sensor::get_unit_of_measurement[abi:cxx11]()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.o: in function `esphome::api::APIConnection::send_sensor_info(esphome::sensor::Sensor*)':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.cpp:426: undefined reference to `esphome::sensor::Sensor::get_accuracy_decimals()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.cpp:427: undefined reference to `esphome::sensor::Sensor::get_device_class[abi:cxx11]()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/api/api_connection.cpp:429: undefined reference to `esphome::sensor::Sensor::get_state_class()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x54): undefined reference to `vtable for esphome::i2c::IDFI2CBus'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x58): undefined reference to `vtable for esphome::i2c::IDFI2CBus'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0xd0): undefined reference to `vtable for esphome::scd30::SCD30Component'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x144): undefined reference to `esphome::sensor::Sensor::Sensor()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x148): undefined reference to `esphome::sensor::Sensor::set_device_class(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x14c): undefined reference to `esphome::sensor::Sensor::set_state_class(esphome::sensor::StateClass)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x150): undefined reference to `esphome::sensor::Sensor::set_unit_of_measurement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o:(.literal._Z5setupv+0x154): undefined reference to `esphome::sensor::Sensor::set_accuracy_decimals(signed char)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `setup()':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:238: undefined reference to `esphome::sensor::Sensor::Sensor()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `esphome::sensirion_common::SensirionI2CDevice::SensirionI2CDevice()':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/sensirion_common/i2c_sensirion.h:17: undefined reference to `esphome::sensor::Sensor::set_device_class(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `esphome::scd30::SCD30Component::SCD30Component()':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/scd30/scd30.h:11: undefined reference to `esphome::sensor::Sensor::set_state_class(esphome::sensor::StateClass)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `esphome::scd30::SCD30Component* esphome::Application::register_component<esphome::scd30::SCD30Component>(esphome::scd30::SCD30Component*)':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/core/application.h:132: undefined reference to `esphome::sensor::Sensor::set_unit_of_measurement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `esphome::i2c::I2CDevice::set_i2c_bus(esphome::i2c::I2CBus*)':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/components/i2c/i2c.h:44: undefined reference to `esphome::sensor::Sensor::set_accuracy_decimals(signed char)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `setup()':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:289: undefined reference to `esphome::sensor::Sensor::Sensor()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:293: undefined reference to `esphome::sensor::Sensor::set_device_class(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:293: undefined reference to `esphome::sensor::Sensor::set_state_class(esphome::sensor::StateClass)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:294: undefined reference to `esphome::sensor::Sensor::set_unit_of_measurement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()':
/data/cache/platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/basic_string.h:657: undefined reference to `esphome::sensor::Sensor::set_accuracy_decimals(signed char)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/main.o: in function `setup()':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:296: undefined reference to `esphome::sensor::Sensor::Sensor()'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:300: undefined reference to `esphome::sensor::Sensor::set_device_class(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:302: undefined reference to `esphome::sensor::Sensor::set_state_class(esphome::sensor::StateClass)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:302: undefined reference to `esphome::sensor::Sensor::set_unit_of_measurement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/main.cpp:303: undefined reference to `esphome::sensor::Sensor::set_accuracy_decimals(signed char)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/core/controller.o:(.literal._ZN7esphome10Controller16setup_controllerEb+0x8): undefined reference to `esphome::sensor::Sensor::add_on_state_callback(std::function<void (float)>&&)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/src/esphome/core/controller.o: in function `esphome::Controller::setup_controller(bool)':
/config/esphome/.esphome/build/esp32-bluetooth-proxy-93f480/src/esphome/core/controller.cpp:29: undefined reference to `esphome::sensor::Sensor::add_on_state_callback(std::function<void (float)>&&)'
collect2: error: ld returned 1 exit status
*** [/data/esp32-bluetooth-proxy-93f480/.pioenvs/esp32-bluetooth-proxy-93f480/firmware.elf] Error 1

Either of you tried the ‘clean build files’ button in the ESPHome hamburger menu? I can’t count the number of times something has failed to compile after making changes and that has fixed it. I’ve gotten into the habit, that unless the error message immediately makes sense, I try that first.

4 Likes

I got this answer elsewhere but yes doing a clean up and then building worked