Latest Version: 2.0.1
This library provides a driver class for the Si702x temperature/humidity sensor. This class is compatible with the Si7020 and Si7021 — they differ only in measurement accuracy. Both sensors connect over I²C.
You can view the library’s source code on GitHub. Click here to see information on other versions of this library.
To include this library in your project, add #require "Si702x.device.lib.nut:2.0.1" at the top of your device code
The Si702x should be connected as follows:

| Parameter | Type | Required | Description |
|---|---|---|---|
| impI2Cbus | i2c object | Yes | The configured I²C bus to which the sensor is connected |
| baseAddress | Integer | No | The sensor’s I²C address. Default: 0x80 |
#require "Si702x.device.lib.nut:2.0.1"
// Configure the I2C bus on the imp001
hardware.i2c89.configure(CLOCK_SPEED_400_KHZ);
// Instantiate the sensor driver
tempHumid <- Si702x(hardware.i2c89);
This method takes a sensor reading. It can operate synchronously or asynchronously.
For synchronous operation, pass null or provide no argument.
For asynchronous operation, pass in a callback function. The callback should have one parameter of its own, results, which will receive the table (see Return Value, below) that is returned by the method in synchronous mode.
| Parameter | Type | Required | Description |
|---|---|---|---|
| callback | Function | No | An optional callback function which will receive the reading. Default: null |
Table — the sensor reading results with the keys listed below, or nothing if the method is configured to run asynchronously.
| Results Table Key | Type | Slot Always Present? | Description |
|---|---|---|---|
| err | String | No | If present, an error message |
| temperature | Float | Yes | Temperature in Celsius, or null if an error occurred |
| humidity | Float | Yes | Relative humidity as a percentage, or null if an error occurred |
Note The err key will only be present if an error occurred. You should check for the existence of err before using the results.
function printResult(result) {
if ("err" in result) {
server.log(result.err);
} else {
server.log(format("Temperature: %.01f°C, Relative Humidity: %.01f%%", result.temperature, result.humidity));
}
}
// Take a reading and print the result
tempHumid.read(printResult);
The Electric Imp Dev Center documents the latest version of the library. For past versions, please see the Electric Imp public GitHub repos listed below.
| Version | Source Code | Notes |
|---|---|---|
| 1.0.0 | GitHub | Initial release |
| 2.0.0 | GitHub | Change library name to reflect new naming scheme; fixed write register bug in the init() method |
| 2.0.1 | GitHub | Moved static variables to enum; make sync and async reading/error results the same |
This library is licensed under the MIT License.