esphome / issues

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

Problem BME680 BSEC with ESP32-S2 #4338

Closed ldelvalleh closed 1 year ago

ldelvalleh commented 1 year ago

The problem

The problem comes when I compile the code where I try to configure a BME680 sensor with a Lolin Wemos D1 Mini ESP32-S2 board.

Which version of ESPHome has the issue?

2023.3.1

What type of installation are you using?

pip

Which version of Home Assistant has the issue?

2023.3.1

What platform are you using?

ESP32

Board

Lolin S2 mini

Component causing the issue

bme680_bsec

Example YAML snippet

esphome:
  name: pruebas2

esp32:
  board: lolin_s2_mini
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: ""

ota:
  password: ""

wifi:
  ssid: "SSID"
  password: "PASS"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Fallback Hotspot"
    password: "PASS"

captive_portal:

i2c:
  scan: true

bme680_bsec:
  address: 0x77
  temperature_offset: 0
  iaq_mode: static
  sample_rate: ulp
  state_save_interval: 6h

sensor:
  - platform: bme680_bsec
    temperature:
      name: "Temperatura"
      id: "temperatura"
      unit_of_measurement: "ºC"
      device_class: "temperature"
    pressure:
      name: "Pressió"
      id: "pressio"
      unit_of_measurement: "hPa"
      device_class: "pressure"
    humidity:
      name: "Humitat ambient"
      id: "humitat_ambient"
      unit_of_measurement: "%"
      device_class: "humidity"
    gas_resistance:
      name: "Gas"
      id: "gas"
    iaq:
      name: "IAQ"
      id: "iaq"
      device_class: "aqi"
    iaq_accuracy:
      name: "Estat IAQ"
      id: "precisioiaq"
    co2_equivalent:
      name: "CO2"
      id: "co2"
      device_class: "carbon_dioxide"
    breath_voc_equivalent:
      name: "Humitat ambient equivalent"
      id: "humitatambientequivalent"

Anything in the logs that might be useful for us?

INFO Reading configuration .\pruebas2.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing pruebas2 (board: lolin_s2_mini; framework: arduino; platform: platformio/espressif32 @ 5.2.0)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Removing unused dependencies...
Library Manager: Installing esphome/AsyncTCP-esphome @ 1.2.2
INFO Installing esphome/AsyncTCP-esphome @ 1.2.2
Unpacking  [####################################]  100%
Library Manager: AsyncTCP-esphome@1.2.2 has been installed!
INFO AsyncTCP-esphome@1.2.2 has been installed!
Library Manager: Installing esphome/ESPAsyncWebServer-esphome @ 2.1.0
INFO Installing esphome/ESPAsyncWebServer-esphome @ 2.1.0
Unpacking  [####################################]  100%
Library Manager: ESPAsyncWebServer-esphome@2.1.0 has been installed!
INFO ESPAsyncWebServer-esphome@2.1.0 has been installed!
Library Manager: Resolving dependencies...
INFO Resolving dependencies...
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/lolin_s2_mini.html
PLATFORM: Espressif 32 (5.2.0) > WEMOS LOLIN S2 Mini
HARDWARE: ESP32S2 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 @ 3.20005.220925 (2.0.5)
 - tool-esptoolpy @ 1.40201.0 (4.2.1)
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch3
 - toolchain-xtensa-esp32s2 @ 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ off, Compatibility ~ soft
Found 35 compatible libraries
Scanning dependencies...
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
|   |-- AsyncTCP-esphome @ 1.2.2
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- Wire @ 2.0.0
|-- SPI @ 2.0.0
|-- BSEC Software Library @ 1.6.1480
Building in release mode
Compiling .pioenvs\pruebas2\src\esphome\components\api\api_connection.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\api_frame_helper.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\api_pb2.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\api_pb2_service.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\api_server.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\list_entities.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\proto.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\subscribe_state.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\api\user_services.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\bme680_bsec\bme680_bsec.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\captive_portal\captive_portal.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\esp32\core.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\esp32\gpio.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\esp32\preferences.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\i2c\i2c.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\i2c\i2c_bus_arduino.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\i2c\i2c_bus_esp_idf.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\logger\logger.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\md5\md5.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\mdns\mdns_component.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\mdns\mdns_esp32.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\mdns\mdns_esp8266.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\mdns\mdns_rp2040.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\network\util.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\ota\ota_backend_arduino_esp32.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\ota\ota_backend_arduino_esp8266.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\ota\ota_backend_arduino_rp2040.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\ota\ota_backend_esp_idf.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\ota\ota_component.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\sensor\automation.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\sensor\filter.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\sensor\sensor.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\socket\bsd_sockets_impl.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\socket\lwip_raw_tcp_impl.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\socket\socket.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\text_sensor\filter.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\text_sensor\text_sensor.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\web_server_base\web_server_base.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\wifi\wifi_component.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\wifi\wifi_component_esp32_arduino.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\wifi\wifi_component_esp8266.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\wifi\wifi_component_esp_idf.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\components\wifi\wifi_component_pico_w.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\application.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\color.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\component.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\component_iterator.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\controller.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\entity_base.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\helpers.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\log.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\scheduler.cpp.o
Compiling .pioenvs\pruebas2\src\esphome\core\util.cpp.o
Compiling .pioenvs\pruebas2\src\main.cpp.o
Building .pioenvs\pruebas2\bootloader.bin
Generating partitions .pioenvs\pruebas2\partitions.bin
esptool.py v4.2.1
Creating esp32s2 image...
Merged 1 ELF section
Successfully created esp32s2 image.
Compiling .pioenvs\pruebas2\lib1d6\AsyncTCP-esphome\AsyncTCP.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFi.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiAP.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiClient.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiGeneric.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiMulti.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiSTA.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiScan.cpp.o
Archiving .pioenvs\pruebas2\lib1d6\libAsyncTCP-esphome.a
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiServer.cpp.o
Compiling .pioenvs\pruebas2\lib9c2\WiFi\WiFiUdp.cpp.o
Compiling .pioenvs\pruebas2\libfd5\FS\FS.cpp.o
Compiling .pioenvs\pruebas2\libfd5\FS\vfs_api.cpp.o
Compiling .pioenvs\pruebas2\liba14\Update\HttpsOTAUpdate.cpp.o
Compiling .pioenvs\pruebas2\liba14\Update\Updater.cpp.o
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\AsyncEventSource.cpp.o
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\AsyncWebSocket.cpp.o
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\WebAuthentication.cpp.o
Archiving .pioenvs\pruebas2\lib9c2\libWiFi.a
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\WebHandlers.cpp.o
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\WebRequest.cpp.o
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\WebResponses.cpp.o
Archiving .pioenvs\pruebas2\libfd5\libFS.a
Compiling .pioenvs\pruebas2\libdff\ESPAsyncWebServer-esphome\WebServer.cpp.o
Archiving .pioenvs\pruebas2\liba14\libUpdate.a
Compiling .pioenvs\pruebas2\libda0\DNSServer\DNSServer.cpp.o
Compiling .pioenvs\pruebas2\liba47\ESPmDNS\ESPmDNS.cpp.o
Compiling .pioenvs\pruebas2\lib348\Wire\Wire.cpp.o
Compiling .pioenvs\pruebas2\libc30\SPI\SPI.cpp.o
Compiling .pioenvs\pruebas2\lib6df\BSEC Software Library\bme680\bme680.c.o
Compiling .pioenvs\pruebas2\lib6df\BSEC Software Library\bsec.cpp.o
Archiving .pioenvs\pruebas2\libda0\libDNSServer.a
Archiving .pioenvs\pruebas2\libdff\libESPAsyncWebServer-esphome.a
Compiling .pioenvs\pruebas2\FrameworkArduino\Esp.cpp.o
Archiving .pioenvs\pruebas2\lib348\libWire.a
Archiving .pioenvs\pruebas2\liba47\libESPmDNS.a
Archiving .pioenvs\pruebas2\libc30\libSPI.a
Compiling .pioenvs\pruebas2\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\HWCDC.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\IPAddress.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\IPv6Address.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\MD5Builder.cpp.o
Archiving .pioenvs\pruebas2\lib6df\libBSEC Software Library.a
Compiling .pioenvs\pruebas2\FrameworkArduino\Print.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\Stream.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\StreamString.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\Tone.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\USB.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\USBCDC.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\USBMSC.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\WMath.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\WString.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\base64.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\cbuf.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-i2c.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-time.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\libb64\cdecode.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\libb64\cencode.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\main.cpp.o
Compiling .pioenvs\pruebas2\FrameworkArduino\stdlib_noniso.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\wiring_pulse.c.o
Compiling .pioenvs\pruebas2\FrameworkArduino\wiring_shift.c.o
Archiving .pioenvs\pruebas2\libFrameworkArduino.a
Linking .pioenvs\pruebas2\firmware.elf
c:/users/luis/.platformio/packages/toolchain-xtensa-esp32s2/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld.exe: cannot find -lalgobsec
collect2.exe: error: ld returned 1 exit status
*** [.pioenvs\pruebas2\firmware.elf] Error 1

Additional information

No response

ssieb commented 1 year ago

This is a problem with using proprietary software. There is no version for the S2 and no source to compile. https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BME-680-BSEC-for-ESP32-S2/td-p/16892 There is nothing we can do about this, other than fail the config if you try to compile it for an S2.

ssieb commented 1 year ago

https://github.com/esphome/esphome/pull/4616 gives a proper error message now if you try to compile with esp-idf or one of the ESP32 variants.

ldelvalleh commented 1 year ago

Thank you very much, I thought so.

TamasKazsoki commented 1 year ago

Actually there is a solution i was able to found thanks to @ssieb 's reply to me last day.

The original BSEC module is old and cannot handle newer devices. Bosch is developing a new module called BSEC2 which supports ESP32-S2, S3 and C3 models as well. Also it supports BME680 and the newer BME688 as well. @schluggi created a fork of the ESPHome module and also initiated changes to the ESPHome module as well. Until that is merged, you can use the new module with lolin_s2_mini.

You have to use SchLuggi 's BSEC2 module with defining it as an external component:

external_components:
  - source: github://Schluggi/esphome@bsec2
    components:
      - bme680_bsec

Defining the address: 0x77 for BME680 is also needed as the default in BSEC2 is address: 0x76 Fortunately, you defined it in your config. Every other config options can remain the same.

This is the other thread of the feature request: https://github.com/esphome/feature-requests/issues/2072

fran6120 commented 1 year ago

The same bme680 configuration in yaml with esphome 2023.5.0-dev fails to compile both esp32-s2 and esp32-c3.

Using framework esp-idf:

INFO Reading configuration /config/estacion-c3.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing estacionc3 (board: lolin_c3_mini; framework: espidf; platform: platformio/espressif32 @ 5.3.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
 - framework-espidf @ 3.40404.0 (4.4.4) 
 - tool-cmake @ 3.16.4 
 - tool-ninja @ 1.7.1 
 - toolchain-esp32ulp @ 2.35.0-20220830 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
Reading CMake configuration...
Library Manager: Installing SPI
Warning! Could not find the package with 'SPI' requirements for your system 'linux_x86_64'
Library Manager: Installing SPI
Warning! Could not find the package with 'SPI' requirements for your system 'linux_x86_64'
Dependency Graph
|-- noise-c @ 0.1.4
|   |-- libsodium @ 1.10018.1
Compiling .pioenvs/estacionc3/src/esphome/components/bme680_bsec/bme680_bsec.o
Compiling .pioenvs/estacionc3/src/esphome/components/button/button.o
Compiling .pioenvs/estacionc3/src/esphome/components/deep_sleep/deep_sleep_component.o
Compiling .pioenvs/estacionc3/src/esphome/components/esp32/core.o
In file included from src/esphome/components/bme680_bsec/bme680_bsec.cpp:1:
src/esphome/components/bme680_bsec/bme680_bsec.h:12:10: fatal error: bsec2.h: No such file or directory

***************************************************************
* Looking for bsec2.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:bsec2.h"
* Web  > https://registry.platformio.org/search?q=header:bsec2.h
*
***************************************************************

 #include <bsec2.h>
          ^~~~~~~~~
compilation terminated.
*** [.pioenvs/estacionc3/src/esphome/components/bme680_bsec/bme680_bsec.o] Error 1
========================== [FAILED] Took 3.52 seconds ==========================

using arduino framwork:

INFO Reading configuration /config/estacion-c3.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing estacionc3 (board: lolin_c3_mini; framework: arduino; platform: platformio/espressif32 @ 5.2.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch3
Dependency Graph
|-- WiFi @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- Update @ 2.0.0
|-- Wire @ 2.0.0
|-- SPI @ 2.0.0
|-- BME68x Sensor library @ 1.1.40407+sha.16984f4
|-- BSEC2 Software Library @ 1.5.2400+sha.a8fe04a
|-- noise-c @ 0.1.4
|   |-- libsodium @ 1.10018.1
Compiling .pioenvs/estacionc3/src/esphome/components/bme680_bsec/bme680_bsec.cpp.o
Compiling .pioenvs/estacionc3/src/esphome/components/esp32/gpio.cpp.o
Compiling .pioenvs/estacionc3/src/esphome/components/esp32/preferences.cpp.o
Compiling .pioenvs/estacionc3/src/esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp.o
Compiling .pioenvs/estacionc3/src/esphome/components/gpio/output/gpio_binary_output.cpp.o
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'virtual void esphome::bme680_bsec::BME680BSECComponent::setup()':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:23:24: error: 'bsec_init' was not declared in this scope
   this->bsec_status_ = bsec_init();
                        ^~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:23:24: note: suggested alternative: 'bsec_init_m'
   this->bsec_status_ = bsec_init();
                        ^~~~~~~~~
                        bsec_init_m
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'void esphome::bme680_bsec::BME680BSECComponent::set_config_(const uint8_t*, uint32_t)':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:65:24: error: 'bsec_set_configuration' was not declared in this scope
   this->bsec_status_ = bsec_set_configuration(config, len, work_buffer, sizeof(work_buffer));
                        ^~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:65:24: note: suggested alternative: 'bsec_set_configuration_m'
   this->bsec_status_ = bsec_set_configuration(config, len, work_buffer, sizeof(work_buffer));
                        ^~~~~~~~~~~~~~~~~~~~~~
                        bsec_set_configuration_m
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'void esphome::bme680_bsec::BME680BSECComponent::update_subscription_()':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:130:7: error: 'bsec_update_subscription' was not declared in this scope
       bsec_update_subscription(virtual_sensors, num_virtual_sensors, sensor_settings, &num_sensor_settings);
       ^~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:130:7: note: suggested alternative: 'bsec_update_subscription_m'
       bsec_update_subscription(virtual_sensors, num_virtual_sensors, sensor_settings, &num_sensor_settings);
       ^~~~~~~~~~~~~~~~~~~~~~~~
       bsec_update_subscription_m
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'virtual void esphome::bme680_bsec::BME680BSECComponent::dump_config()':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:137:3: error: 'bsec_get_version' was not declared in this scope
   bsec_get_version(&version);
   ^~~~~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:137:3: note: suggested alternative: 'bsec_get_version_m'
   bsec_get_version(&version);
   ^~~~~~~~~~~~~~~~
   bsec_get_version_m
Compiling .pioenvs/estacionc3/src/esphome/components/hmc5883l/hmc5883l.cpp.o
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'void esphome::bme680_bsec::BME680BSECComponent::run_()':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:194:24: error: 'bsec_sensor_control' was not declared in this scope
   this->bsec_status_ = bsec_sensor_control(curr_time_ns, &bsec_settings);
                        ^~~~~~~~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:194:24: note: suggested alternative: 'bsec_sensor_control_m'
   this->bsec_status_ = bsec_sensor_control(curr_time_ns, &bsec_settings);
                        ^~~~~~~~~~~~~~~~~~~
                        bsec_sensor_control_m
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'void esphome::bme680_bsec::BME680BSECComponent::read_(int64_t)':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:361:26: error: 'bsec_do_steps' was not declared in this scope
     this->bsec_status_ = bsec_do_steps(inputs, num_inputs, outputs, &num_outputs);
                          ^~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:361:26: note: suggested alternative: 'bsec_do_steps_m'
     this->bsec_status_ = bsec_do_steps(inputs, num_inputs, outputs, &num_outputs);
                          ^~~~~~~~~~~~~
                          bsec_do_steps_m
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'void esphome::bme680_bsec::BME680BSECComponent::load_state_()':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:462:26: error: 'bsec_set_state' was not declared in this scope
     this->bsec_status_ = bsec_set_state(state, BSEC_MAX_STATE_BLOB_SIZE, work_buffer, sizeof(work_buffer));
                          ^~~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:462:26: note: suggested alternative: 'bsec_set_state_m'
     this->bsec_status_ = bsec_set_state(state, BSEC_MAX_STATE_BLOB_SIZE, work_buffer, sizeof(work_buffer));
                          ^~~~~~~~~~~~~~
                          bsec_set_state_m
src/esphome/components/bme680_bsec/bme680_bsec.cpp: In member function 'void esphome::bme680_bsec::BME680BSECComponent::save_state_(uint8_t)':
src/esphome/components/bme680_bsec/bme680_bsec.cpp:482:7: error: 'bsec_get_state' was not declared in this scope
       bsec_get_state(0, state, BSEC_MAX_STATE_BLOB_SIZE, work_buffer, BSEC_MAX_STATE_BLOB_SIZE, &num_serialized_state);
       ^~~~~~~~~~~~~~
src/esphome/components/bme680_bsec/bme680_bsec.cpp:482:7: note: suggested alternative: 'bsec_get_state_m'
       bsec_get_state(0, state, BSEC_MAX_STATE_BLOB_SIZE, work_buffer, BSEC_MAX_STATE_BLOB_SIZE, &num_serialized_state);
       ^~~~~~~~~~~~~~
       bsec_get_state_m
Compiling .pioenvs/estacionc3/src/esphome/components/homeassistant/binary_sensor/homeassistant_binary_sensor.cpp.o
Compiling .pioenvs/estacionc3/src/esphome/components/homeassistant/time/homeassistant_time.cpp.o
*** [.pioenvs/estacionc3/src/esphome/components/bme680_bsec/bme680_bsec.cpp.o] Error 1
========================== [FAILED] Took 2.73 seconds ==========================

any suggestions?

ssieb commented 1 year ago

It might not work with esp-idf, but regardless, this is not the place to discuss that.

raccettura commented 1 year ago

image Looks like BSEC 2.4 is the solution per: https://www.bosch-sensortec.com/media/boschsensortec/downloads/bsec/bsec1_binary_size_information.pdf

maikischa commented 1 year ago

I'm running into exact the same issue.

As seen in the output it's using BSEC2 v1.5.2400 which is using BSEC 2.4.0.0 which should work on the ESP32-C3

INFO Reading configuration /config/esp32-s3-devkit.yaml... INFO Generating C++ source... INFO Compiling app... Processing esp32-s3-devkit (board: esp32-s3-devkitc-1; framework: arduino; platform: platformio/espressif32@5.3.0)

HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash