Nutty Peanut Marshmallow


    0.1.7 • Public • Published


    bitHound Overall Score

    Welcome to bme280-sensor, a Node.js I2C module for the Bosch BME280 Humidity, Barometric Pressure, Temperature Sensor. Adafruit sells a BME280 breakout board and here is the datasheet.

    If you are not interested in humidity, this module is also compatible with the lower cost BMP280 Barometric Pressure and Temperature Sensor which does not include a humidity sensor.

    This module uses i2c-bus which should provide access with Node.js on Linux boards like the Raspberry Pi Zero, 1, 2, or 3, BeagleBone, BeagleBone Black, or Intel Edison.

    Note: While the BME280/BMP280 device does report temperature, it is measured by the internal temperature sensor. This temperature value depends on the PCB temperature and sensor element self-heating. Therefore ambient temperature is typically reported above actual ambient temperature.

    Since bme280-sensor needs to talk directly to the I2C bus and requires access to /dev/i2c, you will typically need run Node with elevated privileges or add your user account to the i2c group: $ sudo adduser $USER i2c

    Example Code

    const BME280 = require('bme280-sensor');
    // The BME280 constructor options are optional.
    const options = {
      i2cBusNo   : 1, // defaults to 1
      i2cAddress : BME280.BME280_DEFAULT_I2C_ADDRESS() // defaults to 0x77
    const bme280 = new BME280(options);
    // Read BME280 sensor data, repeat
    const readSensorData = () => {
        .then((data) => {
          // temperature_C, pressure_hPa, and humidity are returned by default.
          // I'll also calculate some unit conversions for display purposes.
          data.temperature_F = BME280.convertCelciusToFahrenheit(data.temperature_C);
          data.pressure_inHg = BME280.convertHectopascalToInchesOfMercury(data.pressure_hPa);
          console.log(`data = ${JSON.stringify(data, null, 2)}`);
          setTimeout(readSensorData, 2000);
        .catch((err) => {
          console.log(`BME280 read error: ${err}`);
          setTimeout(readSensorData, 2000);
    // Initialize the BME280 sensor
      .then(() => {
        console.log('BME280 initialization succeeded');
      .catch((err) => console.error(`BME280 initialization failed: ${err} `));

    Example Output

    > sudo node example.js          
    Found BME280 chip id 0x60 on bus i2c-1 address 0x77
    BME280 initialization succeeded
    data = {
      "temperature_C": 32.09,
      "humidity": 34.851083883116694,
      "pressure_hPa": 1010.918480644477,
      "temperature_F": 89.76200000000001,
      "pressure_inHg": 29.852410107059583

    Example Wiring

    For I2C setup on a Raspberry Pi, take a look at my pi-weather-station project.


    npm i bme280-sensor

    DownloadsWeekly Downloads






    Unpacked Size

    17.4 kB

    Total Files


    Last publish


    • skylarstein