npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@johntalton/boschieu

v8.0.1

Published

Common Unified Sensor API for supported IEU chips.

Readme

Bosch Integrated Environmental Unit

Common Unified Sensor API for supported IEU chips.

Provides full feature access to all supported chips (bmp280 bme280 bme680 bme688 bmp388 bmp390) while still providing rich chip specific features (multiple heater profiles and fifo access).

npm Version GitHub package.json version CI GitHub Downloads Per Month GitHub last commit

Products:

(note: Adafruit no-longer sells the bmp085 or bmp180, donation of legacy chips are welcome to aid in greater product support)

:gear: API

The API is organized around simple sensor class BoschSensor which provides an object interface for manipulating the sensor.

Example using detect method to discover chip type.

import { BoschIEU } from '@johntalton/boschieu'
import { I2CAddressedBus } from '@johntalton/and-other-delights'

const DEFAULT_BOSCH_ADDRESS = 0x77
const i2cBus = /* from I2CBus interface */
const addressedBus = new I2CAddressedBus(i2cBus, DEFAULT_BOSCH_ADDRESS)

// use `detect` method to identify sensor type
const sensor = await BoschIEU.detect(addressedBus)

// load the calibration data in sensor cache
//  only needed once on chip initialization
await sensor.calibration()

// setting profile values
//  different chips have addition profile properties and modes
await sensor.setProfile({ /* ... */ })

// perform a reading of the chips data values
await sensor.measurement()

Alternatively, if you wish to set the chip during initialization that is also possible (replacing the above detect with a call to sensor with the specified chip)

// ...
import { bmp390 } from '@johntalton/boschieu/chip'

// ...
const sensor = BoschIEU.sensor(addressedBus, { chip: bmp390 })

// use bmp390 specific interaction (etc)

:wrench: sensor.chip

The chips identification can be inspected via the sensor.chip property.

// ...

const features = sensor.chip.features
const hasFifo = features.fifo

const name = sensor.chip.name
const kind = sensor.chip.kind


console.log('chip:', kind, name, hasFifo)
// chip: 3xx bmp390 true

:wrench: calibration()

Calibration method fetches required parameters from the chip and caches them in the sensor class. It also returns a copy for inspection.

This is required prior to any measurement call to properly calculate results.

:wrench: profile()

Returns the chips full profile object.

:wrench: setProfile(profile)

Sets the profile for the chip in full.

Using the bmp390 profile as an example, a full profile set would look similar to the following.

// ...

await sensor.setProfile({
   mode: 'NORMAL',

   standby_prescaler: 1,
   oversampling_p: 1,
   oversampling_t: 1,
   filter_coefficient: false,

   watchdog: 'LONG',

   spi: {
      mode: '4-wire',
      page: 0 // no paging for 3xx
   },

   fifo: {
      active: true,
      stopOnFull: false,
      temp: true,
      press: true,
      time: true,
      data: 'unfiltered',
      subSampling: 0,
      highWatermark: 1
   },

   interrupt: {
      mode: 'open-drain',
      level: 'active-low',
      driveStrength: 'low',
      latched: true,
      onFifoWatermark: false,
      onFifoFull: false,
      onReady: true
   }
})

:wrench: setMode(profile)

Setting the Mode is a short form of setting the profile. It allows for updating part of the profile that controls the mode. This is useful for chips that can be used in single-shot measurement modes.

Note, the mode register contains the temperature and pressure oversampling values, thus the must be specified as part of this limited profile setting.