Bme680 (elixir_bme680 v0.2.2) View Source

elixir_bme680 provides a high level abstraction to interface with the BME680 environmental sensor on Linux platforms.

Link to this section Summary

Functions

Returns a specification to start this module under a supervisor.

Callback implementation for GenServer.init/1.

Perform a measurement on the BME680 sensor and synchronously return it

Perform a measurement on the BME680 sensor and asynchronously send the result as a message to the pid in send_to

Starts and links the Bme680 GenServer.

Gracefully stops the Bme680 GenServer.

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Callback implementation for GenServer.init/1.

Specs

measure(GenServer.server()) :: %Bme680.Measurement{
  gas_resistance: integer() | nil,
  humidity: float(),
  pressure: float(),
  temperature: float()
}

Perform a measurement on the BME680 sensor and synchronously return it

Measurements are structs like:

%Bme680.Measurement{
  temperature: 21.74,
  pressure: 1090.52,
  humidity: 45.32,
  gas_resistance: 10235
}
Link to this function

measure_async(pid, send_to)

View Source

Specs

measure_async(GenServer.server(), pid()) :: :ok

Perform a measurement on the BME680 sensor and asynchronously send the result as a message to the pid in send_to

Link to this function

start_link(bme_opts \\ [], opts \\ [])

View Source

Specs

start_link(
  [
    i2c_device_number: integer(),
    i2c_address: 118 | 119,
    temperature_offset: non_neg_integer()
  ],
  [term()]
) :: GenServer.on_start()

Starts and links the Bme680 GenServer.

Options:

  • i2c_device_number is the number of the i2c device, e.g. 1 for /dev/i2c-1
  • i2c_address i2c address of the sensor. It can be only 0x76 or 0x77
  • temperature_offset is an offset, in degrees Celsius, that will be subtracted to temperature measurements in order to compensate for the internal heating of the device. It's typically around 4 or 5 degrees, and also affects relative humidity calculations

Specs

stop(GenServer.server()) :: :ok

Gracefully stops the Bme680 GenServer.