NAME Device::Chip::CCS811 - chip driver for CCS811 SYNOPSIS use Device::Chip::CCS811; use Future::AsyncAwait; my $chip = Device::Chip::CCS811->new; await $chip->mount( Device::Chip::Adapter::...->new ); await $chip->init; await $chip->change_config( DRIVE_MODE => 1 ); sleep 60; # wait for chip to warm up my ( $eCO2, $eTVOC ) = await $chip->read_alg_result_data; printf "eCO2=%dppm\n", $eCO2; printf "eTVOC=%dppb\n", $eTVOC; DESCRIPTION This Device::Chip subclass provides specific communication to a ScioSense CCS811 Digital Gas Sensor attached to a computer via an I²C adapter. The reader is presumed to be familiar with the general operation of this chip; the documentation here will not attempt to explain or define chip-specific concepts or features, only the use of this module to access them. METHODS The following methods documented in an await expression return Future instances. read_status $status = await $chip->read_status; Reads the STATUS register and returns a hash reference containing the following fields: FWMODE => "boot" | "app" APP_ERASE => 0 | 1 APP_VERIFY => 0 | 1 APP_VALID => 0 | 1 DATA_READY => 0 | 1 ERROR => 0 | 1 read_config $config = await $chip->read_config; Reads the MEAS_MODE configuration register and reeturns a hash reference containing the following fields: DRIVE_MODE => 0 | 1 | 2 | 3 | 4 INT_DATARDY => 0 | 1 INT_THRESH => 0 | 1 change_config await $chip->change_config( %changes ); Writes updates to the MEAS_MODE configuration register. read_alg_result_data $data = await $chip->read_alg_result_data; Reads the ALG_RESULT_DATA register and returns a hash reference containing the following fields, in addition to the STATUS fields. eCO2 => INT (in units of ppm) eTVOC => INT (in unts of ppb) ERROR_ID => INT read_id $id = await $chip->read_id; Reads the HW_ID register and returns an integer. This should be the value 0x81 for the CCS811 chip. init await $chip->init; Performs the chip startup actions; namely, starting the application if the chip is still in bootloader mode. AUTHOR Paul Evans