What I’ve used:
BME280 Sensor (buy at this link)
ESP32-S2-MINI (buy at this link)
4 dupont cables
ESPHome Code
esphome:
name: sensore-bme280
friendly_name: Sensore BME280
esp32:
board: lolin_s2_mini
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "YOUR-KEY"
ota:
- platform: esphome
password: "YOUR-PASSWORD"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Sensore-Bme280 Fallback Hotspot"
password: "YOUR-PASSWORD"
captive_portal:
i2c:
sda: 8
scl: 9
scan: true
sensor:
- platform: bme280_i2c
temperature:
name: "Temperatura BME280"
oversampling: 16x
pressure:
name: "Pressione BME280"
humidity:
name: "Umidità BME280"
address: 0x76
update_interval: 10s
If everything is working fine, you can now try the advanced configuration updating the code.
sensor:
- platform: bme280_i2c
temperature:
name: "Temperatura"
oversampling: 16x
id: bme280_temperature
pressure:
name: "Pressione"
id: bme280_pressure
humidity:
name: "Umidità"
id: bme280_humidity
address: 0x76
update_interval: 15s
- platform: template
name: "Altitude"
lambda: |-
const float STANDARD_SEA_LEVEL_PRESSURE = 1014; //in hPa, cerca su windy.com
return ((id(bme280_temperature).state + 273.15) / 0.0065) *
(powf((STANDARD_SEA_LEVEL_PRESSURE / id(bme280_pressure).state), 0.190234) - 1); // in metri
update_interval: 15s
icon: 'mdi:signal'
unit_of_measurement: 'm'
- platform: absolute_humidity
name: "Umidità Assoluta"
temperature: bme280_temperature
humidity: bme280_humidity
- platform: template
name: "Punto di rugiada"
lambda: |-
return (243.5*(log(id(bme280_humidity).state/100)+((17.67*id(bme280_temperature).state)/
(243.5+id(bme280_temperature).state)))/(17.67-log(id(bme280_humidity).state/100)-
((17.67*id(bme280_temperature).state)/(243.5+id(bme280_temperature).state))));
unit_of_measurement: °C
icon: 'mdi:thermometer-alert'