Ccs811

Driver for CCS811 Ultra-Low Power Digital Gas Sensor for Monitoring Indoor Air Quality

Datasheet

Installation

If available in Hex, the package can be installed by adding ccs811 to your list of dependencies in mix.exs:

def deps do
  [
    {:ccs811, "~> <LATEST_VERSION>"}
  ]
end

Usage:

Standalone

iex(1)> Ccs811.initialize
iex(2)> Ccs811.read_alg_result_data
%{
  eco2: 1529,
  error_id: %{
    heater_fault: false,
    heater_supply: false,
    max_resistance: false,
    measmode_invalid: false,
    red_reg_invalid: false,
    write_reg_invalid: false
  },
  status: %{app_valid: true, data_ready: true, error: false, fw_mode: true},
  tvoc: 191
}
iex(23)> Ccs811.read_status
%{app_valid: true, data_ready: true, error: false, fw_mode: true}

With Telemetry:

Add to your application initialization

  Ccs811.start_polling()

Which will set the driver to periodically execute a telemetry event named [:ccs811, :read] with a new data map containing values for eCO2 :eco2 and TVOC tvoc

Missing features:

  • Configuring humidity and temperature
  • Interrupt based data reading instead of polling
  • Configuration for Bus-name and polling period (currently it uses the first available I2C bus)