BME680 温度+压力+湿度+气体传感器 (通过 BSEC)
组件/集线器
Section titled “组件/集线器”bme680_bsec 传感器平台允许您通过 Bosch Sensortec Environmental Cluster (BSEC) 软件库在 ESPHome 中使用 BME680
(数据手册,
Adafruit, Pimoroni) 温度、压力、湿度和气体传感器。Bosch 专有算法的使用提供了从气体电阻传感器对特定挥发性有机化合物 (VOC) 的响应中得出的空气质量指数 (IAQ) 测量值。BSEC 软件还使用人类呼出气息中 VOC 和 CO₂ 之间的相关性,提供 CO₂ 和呼吸挥发性有机化合物 (b-VOC) 的估算值。
NOTE
-
BSEC 库仅在接受其软件许可协议后方可使用。启用此组件即表示您明确同意 BSEC 许可协议 的条款。您不得分发任何包含此组件的编译固件二进制文件。
-
我们建议尽可能使用更新的 bme68x_bsec2 组件。
需要在配置中设置 I²C 才能使此传感器工作。
# 包含常用传感器的最小示例配置i2c:
bme680_bsec:
sensor: - platform: bme680_bsec temperature: name: "BME680 Temperature" pressure: name: "BME680 Pressure" humidity: name: "BME680 Humidity" iaq: name: "BME680 IAQ" id: iaq co2_equivalent: name: "BME680 CO2 Equivalent" breath_voc_equivalent: name: "BME680 Breath VOC Equivalent"
text_sensor: - platform: bme680_bsec iaq_accuracy: name: "BME680 IAQ Accuracy"
- platform: template name: "BME680 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"}; }配置变量:
-
address (可选, int): 手动指定传感器的 I²C 地址。默认为
0x76。另一个地址可以是0x77。 -
temperature_offset (可选, float): 如果设备在外壳中且读数过高,则设置温度偏移。此值从读数中减去(例如,如果传感器读数比预期高 5°C,则将此值设置为
5),同时也会校正相对湿度读数。默认为0。 -
iaq_mode (可选, string): IAQ 计算模式。默认为
static,适用于静态应用(例如固定的室内设备)。可以是mobile,适用于移动应用(例如便携设备)。 -
supply_voltage (可选, string): 传感器的供电电压。默认为
3.3V。如果您的传感器由 1.8V 供电(例如 Pimoroni PIM357 BME680 Breakout 模块),可以设置为1.8V。 -
sample_rate (可选, string): 采样率。默认为
lp,表示低功耗,每 3 秒采样一次。可以是ulp,表示超低功耗,每 5 分钟采样一次。这控制了依赖气体的传感器的采样率,并将决定传感器加热器运行的间隔。默认情况下,此速率也将用于温度、压力和湿度传感器,但如果需要,可以在每个传感器级别上覆盖。 -
state_save_interval (可选, Time): 将校准后的 BSEC 算法状态保存到 flash 的最小间隔,以便在设备重启时校准不必从零开始。默认为
6h。 -
id (可选, ID): 手动指定用于代码生成的 ID。如果您有多个设备,请在传感器部分使用此 ID 来引用正确的 BME680。这也将用于引用保存到 flash 的校准后的 BSEC 算法状态。
配置变量:
-
bme680_bsec_id (可选, ID): 设置要引用的 bme680_bsec 组件的 ID。当使用多个设备时很有用。
-
temperature (可选): 温度传感器的信息。
- sample_rate (可选, string): 此传感器的可选采样率覆盖。可以是
lp,表示低功耗,每 3 秒采样一次,或ulp,表示超低功耗,每 5 分钟采样一次。 - 来自 Sensor 的所有其他选项。
- sample_rate (可选, string): 此传感器的可选采样率覆盖。可以是
-
pressure (可选): 压力传感器的信息。
- sample_rate (可选, string): 此传感器的可选采样率覆盖。可以是
lp,表示低功耗,每 3 秒采样一次,或ulp,表示超低功耗,每 5 分钟采样一次。 - 来自 Sensor 的所有其他选项。
- sample_rate (可选, string): 此传感器的可选采样率覆盖。可以是
-
humidity (可选): 湿度传感器的信息。
- sample_rate (可选, string): 此传感器的可选采样率覆盖。可以是
lp,表示低功耗,每 3 秒采样一次,或ulp,表示超低功耗,每 5 分钟采样一次。 - 来自 Sensor 的所有其他选项。
- sample_rate (可选, string): 此传感器的可选采样率覆盖。可以是
-
gas_resistance (可选): 气体传感器的信息。
- 来自 Sensor 的所有选项。
-
iaq (可选): IAQ 传感器的信息。
- 来自 Sensor 的所有选项。
-
iaq_accuracy (可选): 数值 IAQ 准确度传感器的信息。
- 来自 Sensor 的所有选项。
-
co2_equivalent (可选): CO₂ 当量传感器的信息。
- 来自 Sensor 的所有选项。
-
breath_voc_equivalent (可选): 呼吸 VOC 当量湿度传感器的信息。
- 来自 Sensor 的所有选项。
准确度可以以文本格式报告。
配置变量:
-
bme680_bsec_id (可选, ID): 设置要引用的 bme680_bsec 组件的 ID。当使用多个设备时很有用。
-
iaq_accuracy (可选): IAQ 准确度传感器的信息。显示:Stabilizing(稳定中)、Uncertain(不确定)、Calibrating(校准中)、Calibrated(已校准)。
- 来自 TextSensor 的所有其他选项。
以下配置显示了该组件所有可用的传感器和可选设置。它还包括一个过滤示例,用于防止异常值、限制发送到 Home Assistant 的更新数量,并减少其他系统(如用于存储历史数据的 influxdb)的存储需求。
对于每个传感器,来自 Sensor 和 TextSensor 的所有其他选项也可用于过滤、自动化等。
bme680_bsec: # id # ----------- # 此组件的标识符,在使用多个设备时很有用。 # 必须唯一,可在传感器部分用于引用正确的设备。 # 默认值:自动计算 id: bme680_internal
# i2c 地址 # ----------- # 常用值: # - 0x76 # - 0x77 # 默认值:0x76 address: 0x76
# 温度偏移 # ------------------ # 如果设备在外壳中且读数过高,此选项很有用 # 例如,如果读数高 5C,则将此值设置为 5 # 这也会校正相对湿度读数 # 默认值:0 temperature_offset: 0
# IAQ 计算模式 # -------------------- # 可用选项: # - static(用于固定位置设备) # - mobile(用于人员身上或其他可移动设备) # 默认值:static iaq_mode: static
# 供电电压 # -------------------- # 可用选项: # - 3.3V # - 1.8V # 默认值:3.3V supply_voltage: 3.3V
# 采样率 # ----------- # 可用选项: # - lp(低功耗 - 每 3 秒采样一次) # - ulp(超低功耗 - 每 5 分钟采样一次) # 默认值:lp sample_rate: ulp
# 保存 BSEC 状态的间隔 # ------------------------------------ # 默认值:6h state_save_interval: 6h
sensor: - platform: bme680_bsec # 用于后续传感器的 bme680_bsec 组件 ID。 # 在使用多个设备时很有用 bme680_bsec_id: bme680_internal
temperature: # 温度,单位 °C name: "BME680 Temperature" sample_rate: lp filters: - median pressure: # 压力,单位 hPa name: "BME680 Pressure" sample_rate: lp filters: - median humidity: # 相对湿度 % name: "BME680 Humidity" sample_rate: lp filters: - median gas_resistance: # 气体电阻,单位 Ω name: "BME680 Gas Resistance" filters: - median iaq: # 室内空气质量值 name: "BME680 IAQ" filters: - median iaq_accuracy: # IAQ 准确度,数值为 0、1、2、3 name: "BME680 Numeric IAQ Accuracy" co2_equivalent: # CO2 当量估算值,单位 ppm name: "BME680 CO2 Equivalent" filters: - median breath_voc_equivalent: # 挥发性有机化合物当量估算值,单位 ppm name: "BME680 Breath VOC Equivalent" filters: - median
text_sensor: - platform: bme680_bsec iaq_accuracy: # IAQ 准确度,文本值为 Stabilizing、Uncertain、Calibrating、Calibrated name: "BME680 IAQ Accuracy"以下配置显示了如何设置多个 BME680 设备。它们可以配置为使用相同的 I²C 总线或不同的总线,但请记住 BME680 只能设置为在 I²C 地址 0x76 或 0x77 上运行。可连接的 BME680 设备数量没有限制。
# BME680 设备的 I2C 总线i2c: - id: "i2cbus_bme" sda: GPIO18 scl: GPIO19 scan: true
# 使用 BSEC 库的 BME680 设备bme680_bsec: - id: bme680_internal i2c_id: "i2cbus_bme" address: 0x76 - id: bme680_external i2c_id: "i2cbus_bme" address: 0x77
sensor: # 内部 BME680 设备的传感器 - platform: bme680_bsec bme680_bsec_id: bme680_internal temperature: name: "IN_Temp" pressure: name: "IN_Press" humidity: name: "IN_RH" iaq: name: "IN_IAQ" co2_equivalent: name: "IN_CO2eq" breath_voc_equivalent: name: "IN_VOCeq"
# 外部 BME680 设备的传感器 - platform: bme680_bsec bme680_bsec_id: bme680_external temperature: name: "OUT_Temperatura" pressure: name: "OUT_Pressione" humidity: name: "OUT_RH" iaq: name: "OUT_IAQ" co2_equivalent: name: "OUT_CO2eq" breath_voc_equivalent: name: "OUT_VOCeq"
text_sensor: # 内部 BME680 设备的文本传感器 - platform: bme680_bsec bme680_bsec_id: bme680_internal iaq_accuracy: name: "IN_IAQaccuracy"
# 外部 BME680 设备的文本传感器 - platform: bme680_bsec bme680_bsec_id: bme680_external iaq_accuracy: name: "OUT_IAQaccuracy"空气质量指数 (IAQ) 测量
Section titled “空气质量指数 (IAQ) 测量”测量值以 0 到 500 的指数范围表示。该指数本身是通过使用乙醇气体以及健康人类呼出气息中的重要 VOC 进行测试得出的。VOC 值本身来自多篇关于呼吸分析研究的出版物。BSEC 软件库定义的级别如下:
| IAQ 指数 | 空气质量 |
|---|---|
| 0 - 50 | 优秀 |
| 51 - 100 | 良好 |
| 101 - 150 | 轻度污染 |
| 151 - 200 | 中度污染 |
| 201 - 250 | 重度污染 |
| 251 - 350 | 严重污染 |
| > 351 | 极度污染 |
所选的 b-VOC 气体如下:
| 化合物 | 摩尔分数 |
|---|---|
| 乙烷 | 5 ppm |
| 异戊二烯 | 10 ppm |
| 乙醇 | 10 ppm |
| 丙酮 | 50 ppm |
| 一氧化碳 | 15 ppm |
IAQ 准确度和校准
Section titled “IAQ 准确度和校准”BSEC 软件会在后台自动校准,以提供一致的 IAQ 性能。校准过程会考虑最近的测量历史,以便值 50 对应”典型良好”水平,值 200 对应”典型污染”水平。IAQ 准确度传感器将给出以下值之一:
-
Stabilizing: 设备刚刚启动,传感器正在稳定中(通常持续 5 分钟) -
Uncertain: BSEC 的背景历史不确定。这通常意味着气体传感器数据过于稳定,BSEC 无法明确定义其参考值。 -
Calibrating: BSEC 发现了新的校准数据,正在校准中。 -
Calibrated: BSEC 校准成功。
每隔 state_save_interval,或在达到完全校准后尽快,当前算法状态会保存到 flash,以便在设备重启时不必从零开始。