OK
I hope this helps…
esphome:
name: ringlight
platform: ESP8266
board: d1_mini
esp8266_restore_from_flash: true
wifi:
ssid: '---'
password: '---'
i2c:
sda: D2
scl: D1
sensor:
- platform: bme680
temperature:
name: "BME680 Temperature"
id: temp
oversampling: 16x
filters:
- offset: -2.8 // odd, but mine was wrong!!
- multiply: 1.0
pressure:
name: "BME680 Pressure"
id: press
unit_of_measurement: "mbar"
filters:
- offset: 8.5 // odd, but mine was wrong!!
- multiply: 1.0
humidity:
name: "BME680 Humidity"
id: rh
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
update_interval: 15s
heater:
temperature: 200
duration: 0ms
- platform: uptime
name: "ringlight Uptime"
- platform: wifi_signal
name: "ringlight WiFi Signal"
update_interval: 15s
- platform: template
name: "BME680 Absolute Humidity v1"
unit_of_measurement: "g/m^3"
lambda: |-
const float mw = 18.01534; // molar mass of water g/mol from bme280 sample in esphome
const float r = 8.31447215; // Universal gas constant J/mol/K
return (6.112 * powf(2.718281828, (17.67 * id(temp).state) /
(id(temp).state + 243.5)) * id(rh).state * mw) /
((273.15 + id(temp).state) * r); // in grams/m^3
accuracy_decimals: 2
update_interval: 15s
- platform: template
# name: "BME680 Sat Vap Press"
id: satvappress
unit_of_measurement: "mbar"
lambda: |-
return ( (6.112 * powf(2.718281828, (17.62 * id(temp).state) / (id(temp).state + 243.12)) ) * (1.0016 + (3.15 * powf(10, -6) * id(press).state) - (0.074/id(press).state)) );
accuracy_decimals: 2
update_interval: 15s
- platform: template
name: "BME680 Absolute Humidity"
unit_of_measurement: "kg/m^3"
lambda: |-
const float rv = 461.40000; // const for water from plantecalc.com/2167
return ( (id(satvappress).state * 100 * id(rh).state/100 ) / ( (273.15 + id(temp).state) * rv) ); // in kg/m^3
accuracy_decimals: 4
update_interval: 15s
- platform: template
name: "BME680 Dew Point"
unit_of_measurement: "°C"
lambda: |-
const float a = 17.27; // const from https://planetcalc.com/248/
const float b = 237.7; // const from https://planetcalc.com/248/
return ( (b * ( (id(temp).state * a) / ( b + id(temp).state) + logf (id(rh).state/100) ) )/( a - ( (id(temp).state * a) / ( b + id(temp).state) + logf (id(rh).state/100) ) ) );
accuracy_decimals: 4
update_interval: 15s