MojoScale Studio Docs
API Reference

bme280

BME280 temperature, humidity, and pressure module.

Studio Docs Sensors & I/O

import bme280

The bme280 module reads Bosch BME280 environmental sensors over I2C. It is meant for weather stations, room monitors, pressure/altitude checks, and general environment sensing from MojoScale Studio scripts.

Quick example

import bme280

room = bme280.BME280(sda=21, scl=22, address=0x76)
outside = bme280.BME280(sda=21, scl=22, address=0x77)

reading = room.read()
print(reading["c"])
print(reading["humidity"])
print(reading["pressure_hpa"])

outside.configure(osrs_t=1, osrs_p=1, osrs_h=1, mode="forced")

importbme280

BME280 temperature, humidity, and pressure module.

The bme280 module reads Bosch BME280 environmental sensors over I2C. It is meant for weather stations, room monitors, pressure/altitude checks, and general environment sensing from MojoScale Studio scripts.

API 22 available

bme280.BME280(sda: int, scl: int, address: int = None, frequency: int = None, port: int = None) -> bme280_sensor

Create and initialize an independent BME280 environmental sensor.

Use one BME280 object for each physical sensor. Multiple sensors can share one I2C bus when each board has a different address, normally 0x76 or 0x77.

Parameters
Name Type Pass as Required Description
sda int positional or keyword Yes GPIO pin used for I2C SDA.
scl int positional or keyword Yes GPIO pin used for I2C SCL.
address int positional or keyword No Optional I2C address. Use 0x76 or 0x77. Defaults to 0x76.
frequency int positional or keyword No Optional I2C bus speed in hertz. Defaults to 100000.
port int positional or keyword No Optional ESP-IDF I2C port number. Defaults to 0.
Returns

bme280_sensor bme280_sensor object.

bme280.BME280().configure(osrs_t=None, osrs_p=None, osrs_h=None, filter=None, standby_ms=None, mode=None) -> bool

Configure oversampling, IIR filter, standby time, and operating mode for this sensor.

Parameters
Name Type Pass as Required Description
osrs_t int positional or keyword No Optional value. Defaults to None.
osrs_p int positional or keyword No Optional value. Defaults to None.
osrs_h int positional or keyword No Optional value. Defaults to None.
filter int positional or keyword No Optional value. Defaults to None.
standby_ms int positional or keyword No Optional value. Defaults to None.
mode str positional or keyword No Optional value. Defaults to None.

bme280.BME280().read() -> dict

Read temperature, humidity, and pressure from this sensor.

bme280.BME280().temperature() -> float

Read temperature in degrees Celsius.

bme280.BME280().humidity() -> float

Read relative humidity percentage.

bme280.BME280().pressure() -> float

Read barometric pressure in hPa.

bme280.BME280().altitude(sea_level_hpa=None) -> float

Estimate altitude in meters using an optional sea-level pressure.

Parameters
Name Type Pass as Required Description
sea_level_hpa float positional or keyword No Optional value. Defaults to None.

bme280.BME280().reset() -> bool

Soft-reset this sensor and reload calibration.

bme280.BME280().id() -> int

Read this sensor's chip id register.

bme280.BME280().info() -> dict

Return I2C settings, sampling settings, and mode for this sensor.

bme280.BME280().close() -> bool

Release this BME280 handle.

bme280.BME280().Example

sensor = bme280.BME280(sda=21, scl=22, address=0x76) print(sensor.read())

bme280.begin(sda: int, scl: int, address: int = None, frequency: int = None, port: int = None) -> bool

Legacy: initialize the module-level default BME280 sensor.

Prefer ``sensor = bme280.BME280(...)`` for new projects. The legacy wrapper keeps older singleton-style scripts working.

Parameters
Name Type Pass as Required Description
sda int positional or keyword Yes GPIO pin used for I2C SDA.
scl int positional or keyword Yes GPIO pin used for I2C SCL.
address int positional or keyword No Optional I2C address. Use 0x76 or 0x77. Defaults to 0x76.
frequency int positional or keyword No Optional I2C bus speed in hertz. Defaults to 100000.
port int positional or keyword No Optional ESP-IDF I2C port number. Defaults to 0.
Returns

bool True when a BME280 with chip id 0x60 is detected and configured.

bme280.configure(osrs_t: int = None, osrs_p: int = None, osrs_h: int = None, filter: int = None, standby_ms: int = None, mode: str = None) -> bool

Configure BME280 sampling behavior.

Oversampling values are multipliers: 0 disables a channel, then 1, 2, 4, 8, or 16 select x1 through x16 oversampling. The default mode is forced, which makes each read trigger one fresh measurement.

Parameters
Name Type Pass as Required Description
osrs_t int positional or keyword No Optional temperature oversampling multiplier. Defaults to 1.
osrs_p int positional or keyword No Optional pressure oversampling multiplier. Defaults to 1.
osrs_h int positional or keyword No Optional humidity oversampling multiplier. Defaults to 1.
filter int positional or keyword No Optional IIR filter coefficient. Use 0, 2, 4, 8, or 16.
standby_ms int positional or keyword No Optional standby time for normal mode in milliseconds.
mode str positional or keyword No Optional operating mode. Use "forced", "normal", or "sleep".
Returns

bool True when the configuration was written.

bme280.read() -> dict

Read temperature, humidity, and pressure.

In forced mode this starts one measurement, waits for completion, and then returns compensated values.

Returns

dict Dict with ``ok``, ``c``, ``f``, ``temperature``, ``humidity``, ``pressure_pa``, ``pressure_hpa``, raw ADC values, and ``address``.

bme280.temperature() -> float

Read temperature in Celsius.

Returns

float Float temperature in degrees Celsius.

bme280.humidity() -> float

Read relative humidity.

Returns

float Float relative humidity percentage.

bme280.pressure() -> float

Read barometric pressure.

Returns

float Float pressure in hPa.

bme280.altitude(sea_level_hpa: float = None) -> float

Estimate altitude from pressure.

Parameters
Name Type Pass as Required Description
sea_level_hpa float positional or keyword No Optional sea-level pressure in hPa. Defaults to 1013.25.
Returns

float Float estimated altitude in meters.

bme280.reset() -> bool

Soft-reset the BME280 and reload calibration.

Returns

bool True when reset and calibration reload succeed.

bme280.id() -> int

Read the BME280 chip id register.

Returns

int Integer chip id. A BME280 reports 0x60.

bme280.info() -> dict

Return BME280 module state.

Returns

dict Dict with initialization state, I2C pins, address, sampling settings, and mode.