esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 35 forks source link

BK72XX Compile error error in IRremoteESP8266 #5432

Closed dianlight closed 2 months ago

dianlight commented 8 months ago

The problem

I have a compiler error when I add climete/heatpumpir to my config.

Which version of ESPHome has the issue?

2023.12.9

What type of installation are you using?

Home Assistant Add-on

Which version of Home Assistant has the issue?

2024.1

What platform are you using?

BK72XX

Board

generic-bk7231t-qfn32-tuya

Component causing the issue

climate/heaypimpir

Example YAML snippet

esphome:
  name: "smart-ir-display"

bk72xx:
  board: generic-bk7231t-qfn32-tuya

logger:

web_server:

captive_portal:

mdns:

api:
  password: !secret api_password

ota:
  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:

text_sensor:
  - platform: libretiny
    version:
      name: LibreTiny Version

remote_receiver:
  id: rcvr
  pin:
    number: PWM2 #P8
    inverted: True
    mode: INPUT_PULLUP
  dump: all
  tolerance: 55%
  buffer_size: 10kB

remote_transmitter:
  id: send
  pin: P26 # P14 for AHT10 model
  carrier_duty_percent: 50%

climate:
  - platform: heatpumpir
    protocol: daikin
    horizontal_default: auto
    vertical_default: auto
    max_temperature: 32
    min_temperature: 16  
    name: "Soggiorno Giochi AC"
    receiver_id: rcvr
    transmitter_id: send

Anything in the logs that might be useful for us?

INFO ESPHome 2023.12.9
INFO Reading configuration /config/esphome/smart-ir-display.yaml...
INFO Detected timezone 'Europe/Rome'
INFO Generating C++ source...
INFO Compiling app...
Processing smart-ir-display (board: generic-bk7231t-qfn32-tuya; framework: arduino; platform: libretiny @ 1.4.1)
--------------------------------------------------------------------------------
Removing unused dependencies...
Library Manager: Installing tonia/HeatpumpIR @ 1.0.23
INFO Installing tonia/HeatpumpIR @ 1.0.23
Unpacking  [####################################]  100%
Library Manager: HeatpumpIR@1.0.23 has been installed!
INFO HeatpumpIR@1.0.23 has been installed!
Library Manager: Resolving dependencies...
INFO Resolving dependencies...
Warning! Non-Git installations are NOT SUPPORTED.
HARDWARE: BK7231T 120MHz, 256KB RAM, 1.03MB Flash
 - framework-arduino-api @ 2022.8.24+sha.237b10a 
 - framework-beken-bdk @ 0.0.0+v2021.06.07.sha.6491b8c 
 - library-flashdb @ 1.2.0+sha.d5c892f 
 - library-freertos @ 9.0.0+sha.95cc959 
 - library-freertos-port @ 2023.5.23+sha.a917d93 
 - library-lwip @ 2.1.3-bdk+sha.4ee4d34 
 - library-printf @ 6.1.0+sha.28a79bd 
 - library-uf2ota @ 5.0.0+sha.f955412 
PLATFORM VERSIONS:
 - libretiny @ 1.4.1
 - ltchiptool @ 4.10.1
CUSTOM OPTIONS:
 - fw_name = esphome
 - fw_version = 2023.12.9
Dependency Graph
|-- AsyncTCP-esphome @ 2.0.1
|-- ESPAsyncWebServer-esphome @ 3.1.0
|-- DNSServer @ 1.1.0
|-- ArduinoJson @ 6.18.5
|-- HeatpumpIR @ 1.0.23
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/api_connection.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/api_frame_helper.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/api_pb2.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/api_pb2_service.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/api_server.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/list_entities.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/proto.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/subscribe_state.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/api/user_services.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/binary_sensor/automation.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/binary_sensor/filter.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/captive_portal/captive_portal.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/climate/climate.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/climate/climate_mode.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/climate/climate_traits.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/climate_ir/climate_ir.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/heatpumpir/heatpumpir.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/heatpumpir/ir_sender_esphome.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/homeassistant/time/homeassistant_time.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/json/json_util.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/libretiny/core.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/libretiny/gpio_arduino.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/libretiny/lt_component.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/libretiny/preferences.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/logger/logger.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/md5/md5.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/mdns/mdns_component.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/mdns/mdns_esp32.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/mdns/mdns_host.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/mdns/mdns_libretiny.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/mdns/mdns_rp2040.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/network/util.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/ota/ota_backend_arduino_esp32.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/ota/ota_backend_arduino_esp8266.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/ota/ota_backend_arduino_libretiny.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/ota/ota_backend_arduino_rp2040.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/ota/ota_backend_esp_idf.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/ota/ota_component.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/aeha_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/byronsx_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/canalsat_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/coolix_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/dish_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/drayton_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/haier_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/jvc_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/lg_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/magiquest_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/midea_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/nec_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/nexa_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/panasonic_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/pioneer_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/pronto_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/raw_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/rc5_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/rc6_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/rc_switch_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/remote_base.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/samsung36_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/samsung_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/sony_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_base/toshiba_ac_protocol.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_receiver/remote_receiver_esp32.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_receiver/remote_receiver_esp8266.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_receiver/remote_receiver_libretiny.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_transmitter/remote_transmitter.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_transmitter/remote_transmitter_esp32.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/sensor/automation.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/sensor/filter.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/sensor/sensor.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/socket/bsd_sockets_impl.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/socket/lwip_sockets_impl.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/socket/socket.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/status_led/status_led.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/template/sensor/template_sensor.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/text_sensor/filter.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/text_sensor/text_sensor.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/time/automation.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/time/real_time_clock.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/tuya/automation.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/tuya/tuya.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_component.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_component_esp32_arduino.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_component_esp8266.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_component_esp_idf.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_component_libretiny.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_component_rp2040.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/uart/uart_debugger.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/web_server/list_entities.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/web_server/web_server.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/wifi/wifi_component.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/wifi/wifi_component_esp32_arduino.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/wifi/wifi_component_esp_idf.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/wifi/wifi_component_libretiny.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/components/wifi/wifi_component_pico_w.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/application.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/color.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/component.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/component_iterator.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/controller.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/entity_base.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/helpers.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/log.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/ring_buffer.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/scheduler.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/string_ref.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/time.cpp.o
Compiling .pioenvs/smart-ir-display/src/esphome/core/util.cpp.o
Compiling .pioenvs/smart-ir-display/src/main.cpp.o
Compiling .pioenvs/smart-ir-display/lib5f2/AsyncTCP-esphome/AsyncTCP.cpp.o
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/AsyncEventSource.cpp.o
Archiving .pioenvs/smart-ir-display/lib5f2/libAsyncTCP-esphome.a
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/AsyncWebSocket.cpp.o
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/WebAuthentication.cpp.o
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/WebHandlers.cpp.o
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/WebRequest.cpp.o
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/WebResponses.cpp.o
Compiling .pioenvs/smart-ir-display/lib2be/ESPAsyncWebServer-esphome/WebServer.cpp.o
Compiling .pioenvs/smart-ir-display/libb29/DNSServer/DNSServer.cpp.o
Compiling .pioenvs/smart-ir-display/lib84c/IRremoteESP8266/IRac.cpp.o
Compiling .pioenvs/smart-ir-display/lib84c/IRremoteESP8266/IRrecv.cpp.o
Archiving .pioenvs/smart-ir-display/libb29/libDNSServer.a
Archiving .pioenvs/smart-ir-display/lib2be/libESPAsyncWebServer-esphome.a
Compiling .pioenvs/smart-ir-display/lib84c/IRremoteESP8266/IRsend.cpp.o
Compiling .pioenvs/smart-ir-display/lib84c/IRremoteESP8266/IRtext.cpp.o
/piolibs/IRremoteESP8266/src/IRrecv.cpp:140:7: error: '_IRrecv' has not been declared
  140 | using _IRrecv::timer;
      |       ^~~~~~~
/piolibs/IRremoteESP8266/src/IRrecv.cpp:174:3: error: expected unqualified-id before 'if'
  174 |   if (params.rawlen) params.rcvstate = kStopState;
      |   ^~
/piolibs/IRremoteESP8266/src/IRrecv.cpp:181:1: error: expected declaration before '}' token
  181 | }
      | ^
/piolibs/IRremoteESP8266/src/IRrecv.cpp:184:27: error: expected initializer before 'gpio_intr'
  184 | static void USE_IRAM_ATTR gpio_intr() {
      |                           ^~~~~~~~~
/piolibs/IRremoteESP8266/src/IRrecv.cpp: In member function 'void IRrecv::enableIRIn(bool)':
/piolibs/IRremoteESP8266/src/IRrecv.cpp:389:35: error: 'gpio_intr' was not declared in this scope
  389 |   attachInterrupt(params.recvpin, gpio_intr, CHANGE);
      |                                   ^~~~~~~~~
*** [.pioenvs/smart-ir-display/lib84c/IRremoteESP8266/IRrecv.cpp.o] Error 1
========================= [FAILED] Took 217.86 seconds =========================

Additional information

No response

crankyoldgit commented 8 months ago

FYI, I don't believe the bk7231t etc is part of the ESP chip family. The IRremoteESP8266 library only supports the ESP8266 & ESP32 family of chips.

VivitechMT commented 8 months ago

I've encountered the same issue when using

climate: platform: heatpumpir

I understand the comments about the BK72xx not being ESP chips, but the curious thing is that I have a working BK72xx device using this config:

climate: platform: mitsubishi

So I wonder how does the mitsubishi configuration successfully send IR commands to the Beken chip ?!

crankyoldgit commented 8 months ago

So I wonder how does the mitsubishi configuration successfully send IR commands to the Beken chip ?!

That is something you will have to ask the ESPHome community. I have no idea.

If ESP32 or ESP8266 are not defined, you will get the error you orginally described.

rob-deutsch commented 3 months ago

@crankyoldgit thanks for chiming in here.

I'm the codeowner for this part of esphome, and I agree with your perspective.

We'll resolve this internally and won't need to involve your crankyoldgit/IRremoteESP8266 repo.

PS thanks for creating and maintaining IRremoteESP8266! I've used it a few times and its very helpful.

rob-deutsch commented 3 months ago

I've encountered the same issue when using

climate: platform: heatpumpir

I understand the comments about the BK72xx not being ESP chips, but the curious thing is that I have a working BK72xx device using this config:

climate: platform: mitsubishi

So I wonder how does the mitsubishi configuration successfully send IR commands to the Beken chip ?!

That's a good quesiton, and its answered in the ESPHome documentation:

The heatpumpir platform supports dozens of manufacturers and hundreds of AC units by utilising the Arduino-HeatpumpIR library.

This platform should only be used if your AC unit is not supported by any of the other (native) platforms. No support can be provided for Arduino-HeatpumpIR, because it is a third party library.

The heatpumpir platform doesn't currently work on BK72xx chips. Fixes for this are being discussed in https://github.com/esphome/esphome/pull/6955 .