
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
bme280-sensor
Advanced tools
A Node.js I2C module for the BME280 Humidity, Barometric Pressure, and Temperature Sensor. Also includes support for the BMP280 Barometric Pressure and Temperature Sensor.
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
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 = () => {
bme280.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
//
bme280.init()
.then(() => {
console.log('BME280 initialization succeeded');
readSensorData();
})
.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.
FAQs
A Node.js I2C module for the BME280 Humidity, Barometric Pressure, and Temperature Sensor. Also includes support for the BMP280 Barometric Pressure and Temperature Sensor.
The npm package bme280-sensor receives a total of 160 weekly downloads. As such, bme280-sensor popularity was classified as not popular.
We found that bme280-sensor demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.