BME 680 & ESP32 avec plateforme BSEC

Mon problème

Utilisation de la plateforme BSEC sous ESPHome

Ma configuration


Bonjour,
Je souhaite associer un ESP32 C3 avec une BME680. Le problème est que la bibliothèque BSEC n’est pas disponible sous ESP32 mais uniquement pour ESP8266.
En cherchant sur le net j’ai trouvé des personnes qui arrivent à faire fonctionner ensemble via des sources GitHub

Si vous avez des tutos / astuces pour faire fonctionner ça je suis preneur
Merci à vous
Max___

Bonjour,
regarde ce lien Support for BSEC 2.0.6 and BSEC_OUTPUT_GAS_ESTIMATE_1/2/3/4 · Issue #1332 · esphome/feature-requests · GitHub
Ta jusque a changer l’ESP.

esphome:
  name: esp-device-name

external_components:
  - source: github://neffs/esphome@bsec2_bme68x
    components:
     - bme68x_bsec

esp32:
  board: lolin_s2_mini
  variant: ESP32S2
  framework:
    type: arduino

# Enable logging
logger:

api:
  encryption:
    key: "xxxxxxxxxxxxx"

ota:

wifi:
  ssid: "xxxxxxxxx"
  password: "xxxxxxxxxx"

captive_portal:

i2c:
  sda: 11
  scl: 12

bme68x_bsec:
  # Default: 0x76 or 0x77
  address: 0x77
  temperature_offset: 0
  # Default: static or mobile
  # iaq_mode: static # currently not working
  # Default: lp or ulp
  sample_rate: lp
  # Default: 6h
  state_save_interval: 6h
  # Download from Bosch website: https://www.bosch-sensortec.com/software-tools/software/bme688-software/
  # File: BSEC 2.x
  # bsec2-4-0-0_generic_release_23012023.zip\BSEC2.4.0.0_Generic_Release_23012023\config\bme680\bme680_iaq_33v_3s_28d
  bsec_configuration: 0,0,4,2,189,1,0,0,(...copy from the file above...)

sensor:
  - platform: bme68x_bsec
    temperature:
      name: "Temperature"
      id: "temperature"
    humidity:
      name: "Humidity"
      id: "humidity"
    pressure:
      name: "Pressure"
      id: "pressure"
      icon: "mdi:gauge"
    co2_equivalent:
      name: "CO2 Equivalent"
      icon: "mdi:molecule-co2"
    breath_voc_equivalent:
      name: "VOC Equivalent"
      icon: "mdi:molecule"
    iaq:
      name: "IAQ"
      id: iaq
      icon: "mdi:approximately-equal"
    gas_resistance:
      name: "Gas Resistance"
      icon: "mdi:omega"

  - platform: absolute_humidity
    name: Absolute Humidity
    icon: "mdi:water"
    temperature: temperature
    humidity: humidity

text_sensor:
  - platform: bme68x_bsec
    iaq_accuracy:
      name: "IAQ Accuracy"

  - platform: template
    name: "IAQ Classification"
    icon: "mdi:checkbox-marked-circle-outline"
    lambda: |-
      if ( int(id(iaq).state) <= 50) {
        return {"Excellent"};
      }
      else if (int(id(iaq).state) >= 51 && int(id(iaq).state) <= 100) {
        return {"Good"};
      }
      else if (int(id(iaq).state) >= 101 && int(id(iaq).state) <= 150) {
        return {"Lightly polluted"};
      }
      else if (int(id(iaq).state) >= 151 && int(id(iaq).state) <= 200) {
        return {"Moderately polluted"};
      }
      else if (int(id(iaq).state) >= 201 && int(id(iaq).state) <= 250) {
        return {"Heavily polluted"};
      }
      else if (int(id(iaq).state) >= 251 && int(id(iaq).state) <= 350) {
        return {"Severely polluted"};
      }
      else if (int(id(iaq).state) >= 351) {
        return {"Extremely polluted"};
      }
      else {
        return {"error"};
      }

Salut,
Merci de ton retour !
J’ai testé, la validation fonctionne bien mais dès que j’installe ça se complique.

Je me demande s’il ne me manque pas quelque chose…

Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 33, in <module>
    sys.exit(load_entry_point('esphome', 'console_scripts', 'esphome')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1041, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1028, in run_esphome
    rc = POST_CONFIG_ACTIONS[args.command](args, config)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 458, in command_run
    exit_code = write_cpp(config)
                ^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 192, in write_cpp
    generate_cpp_contents(config)
  File "/esphome/esphome/__main__.py", line 204, in generate_cpp_contents
    CORE.flush_tasks()
  File "/esphome/esphome/core/__init__.py", line 679, in flush_tasks
    self.event_loop.flush_tasks()
  File "/esphome/esphome/coroutine.py", line 246, in flush_tasks
    next(task.iterator)
  File "/esphome/esphome/__main__.py", line 184, in wrapped
    await coro(conf)
  File "/data/external_components/0d898391/esphome/components/bme68x_bsec/__init__.py", line 61, in to_code
    temp = [int(a) for a in config[CONF_BSEC_CONFIGURATION].split(",")]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File
"/data/external_components/0d898391/esphome/components/bme68x_bsec/__init__.py", line 61, in <listcomp>
    temp = [int(a) for a in config[CONF_BSEC_CONFIGURATION].split(",")]
            ^^^^^^
ValueError: invalid literal for int() with base 10: '(...copy from the file above...)'