OTA Component Not Included?

First time with ESP Home, so I need a little help.

I’ve got an Emporia Vue2 that I’m trying to get setup on ESPHome and into HA. I have successfully managed to get the firmware built and loaded onto the chip via serial connection, but I want to be able to to do OTA updates once it’s installed in my electrical panel. I can not figure out how to make it work.

I added the ESPHome Add-On in HA, and created my device using the generic yaml file found at Setting up Emporia Vue 2 with ESPHome · GitHub
I modified the first handful of lines to get rid of logging and the api stuff (as per another walkthrough that i found).
Added the 2 lines for ota as below

esphome:
  name: emporiavue2

external_components:
  - source: github://flaviut/[email protected]
    components: [ emporia_vue ]

esp32:
  board: esp32dev
  framework:
    type: esp-idf
    version: recommended


ota:
  safe_mode: true
  
wifi:
  ssid: "The SSID"
  password: "Password Here"
  fast_connect: true
  ap: {}

When I click “install” and choose the download (I don’t have the ability to flash from my browser) it goes through the motions and then throws a bunch of errors relating to the “otacomponent” and then fails. I am not sure what I’m missing and I just installed the add-on last night, so I’m assuming everything ESPHome is up to date.

INFO Reading configuration /config/esphome/emporia-vue-2.yaml...
INFO Detected timezone 'America/Vancouver'
INFO Generating C++ source...
INFO Compiling app...
Processing emporiavue2 (board: esp32dev; framework: espidf; platform: platformio/espressif32 @ 3.5.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - framework-espidf 3.40302.0 (4.3.2) 
 - tool-cmake 3.16.4 
 - tool-ninja 1.7.1 
 - toolchain-riscv32-esp 8.4.0+2021r2-patch2 
 - toolchain-xtensa-esp32 8.4.0+2021r2-patch2 
 - toolchain-xtensa-esp32s2 8.4.0+2021r2-patch2
Reading CMake configuration...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
No dependencies
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/emporia_vue/emporia_vue.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/esp32/gpio_arduino.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/esp32/gpio_idf.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/esp32/preferences.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/i2c/i2c.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/i2c/i2c_bus_arduino.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/i2c/i2c_bus_esp_idf.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/mdns/mdns_component.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/mdns/mdns_esp32_arduino.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/mdns/mdns_esp8266.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/mdns/mdns_esp_idf.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/network/util.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/sensor/automation.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/sensor/filter.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/sensor/sensor.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/sntp/sntp_component.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/template/sensor/template_sensor.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/time/automation.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/time/real_time_clock.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/total_daily_energy/total_daily_energy.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/wifi/wifi_component.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/wifi/wifi_component_esp32_arduino.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/wifi/wifi_component_esp8266.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/components/wifi/wifi_component_esp_idf.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/application.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/component.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/component_iterator.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/controller.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/helpers.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/log.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/scheduler.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/esphome/core/util.o
Compiling /data/emporiavue2/.pioenvs/emporiavue2/src/main.o
Linking /data/emporiavue2/.pioenvs/emporiavue2/firmware.elf
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/emporiavue2/.pioenvs/emporiavue2/src/main.o:(.literal._Z5setupv+0x30): undefined reference to `vtable for esphome::ota::OTAComponent'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/emporiavue2/.pioenvs/emporiavue2/src/main.o:(.literal._Z5setupv+0x398): undefined reference to `esphome::ota::OTAComponent::set_port(unsigned short)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/emporiavue2/.pioenvs/emporiavue2/src/main.o:(.literal._Z5setupv+0x39c): undefined reference to `esphome::ota::OTAComponent::should_enter_safe_mode(unsigned char, unsigned int)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/emporiavue2/.pioenvs/emporiavue2/src/main.o: in function `setup()':
/config/esphome/.esphome/build/emporiavue2/src/main.cpp:167: undefined reference to `esphome::ota::OTAComponent::set_port(unsigned short)'
/data/cache/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /data/emporiavue2/.pioenvs/emporiavue2/src/main.o: in function `esphome::mdns::MDNSComponent* esphome::Application::register_component<esphome::mdns::MDNSComponent>(esphome::mdns::MDNSComponent*)':
/config/esphome/.esphome/build/emporiavue2/src/esphome/core/application.h:124: undefined reference to `esphome::ota::OTAComponent::should_enter_safe_mode(unsigned char, unsigned int)'
collect2: error: ld returned 1 exit status
*** [/data/emporiavue2/.pioenvs/emporiavue2/firmware.elf] Error 1
========================= [FAILED] Took 42.18 seconds =========================

Any suggestions? I’ve tried withtout the “safe_mode” line as well and no go.

replace this

ota:
  safe_mode: true

with this

# Over The Air Password (Stops somone on your network accessing files)
ota:
  password: !secret esphome_secret

in the top right in esphome click secrets button and add this

!include ../secrets.yaml

then put the password in your secret.yaml file like this

# ESP Home
esphome_secret: your_password_here

you should do the same for your wifi and it is best to put everything in your “secrets.yaml” file

replace this

wifi:
  ssid: "The SSID"
  password: "Password Here"
  fast_connect: true
  ap: {}

with this

# Enable Home Assistant API
api:
  password: !secret esphome_secret

# Wifi Information
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "emporiavue2"
    password: !secret fallback_ap_password

then in your secrets.yaml file it should look like this

# Wifi for your network
wifi_ssid: your_wifi_name_here
wifi_password: your_wifi_password_here

# ESP Home
esphome_secret: your_password_here
fallback_ap_password: your_ap_password_here

Well didn’t figure it out explicitly, but deleted the entry in the ESPHome add-on and started from scratch and now it is working. so go figure.

I know that you’ve already fixed the issue, and this is really for anyone else who comes across this in the future.
I had the same issue and figured out what the actual fix was.

In the ESPHome component and the Emporia card, click on the 3 dots and select “Clean Build Files”
This forces the compiler to re-read the yaml and include all the new adds and recompile all the added components.

It’s better than deleting the component and re-adding it :slight_smile: