diff --git a/platformio.ini b/platformio.ini index 864e5e1ffe..5c906643a8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -125,6 +125,7 @@ build_flags = -D ENV_INCLUDE_BME280=1 -D ENV_INCLUDE_BMP280=1 -D ENV_INCLUDE_SHTC3=1 + -D ENV_INCLUDE_SHT31=1 -D ENV_INCLUDE_SHT4X=1 -D ENV_INCLUDE_LPS22HB=1 -D ENV_INCLUDE_INA3221=1 @@ -144,6 +145,7 @@ lib_deps = adafruit/Adafruit BME280 Library @ ^2.3.0 adafruit/Adafruit BMP280 Library @ ^2.6.8 adafruit/Adafruit SHTC3 Library @ ^1.0.1 + adafruit/Adafruit SHT31 Library @ ^2.2.2 sensirion/Sensirion I2C SHT4x @ ^1.1.2 arduino-libraries/Arduino_LPS22HB @ ^1.0.2 adafruit/Adafruit MLX90614 Library @ ^2.1.5 diff --git a/src/helpers/sensors/EnvironmentSensorManager.cpp b/src/helpers/sensors/EnvironmentSensorManager.cpp index 19472406d8..88e174fb17 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.cpp +++ b/src/helpers/sensors/EnvironmentSensorManager.cpp @@ -50,6 +50,14 @@ static Adafruit_BMP280 BMP280(TELEM_WIRE); static Adafruit_SHTC3 SHTC3; #endif +#if ENV_INCLUDE_SHT31 +#ifndef TELEM_SHT31_ADDRESS +#define TELEM_SHT31_ADDRESS 0x44 // SHT31 environmental sensor I2C address +#endif +#include +static Adafruit_SHT31 SHT31; +#endif + #if ENV_INCLUDE_SHT4X #define TELEM_SHT4X_ADDRESS 0x44 //0x44 - 0x46 #include @@ -240,6 +248,16 @@ bool EnvironmentSensorManager::begin() { } #endif + #if ENV_INCLUDE_SHT31 + if (SHT31.begin(TELEM_SHT31_ADDRESS)) { + MESH_DEBUG_PRINTLN("Found sensor: SHT31"); + SHT31_initialized = true; + } else { + SHT31_initialized = false; + MESH_DEBUG_PRINTLN("SHT31 was not found at I2C address %02X", TELEM_SHT31_ADDRESS); + } + #endif + #if ENV_INCLUDE_SHT4X SHT4X.begin(*TELEM_WIRE, TELEM_SHT4X_ADDRESS); @@ -417,6 +435,16 @@ bool EnvironmentSensorManager::querySensors(uint8_t requester_permissions, Cayen } #endif + #if ENV_INCLUDE_SHT31 + if (SHT31_initialized) { + float temp, humidity; + SHT31.readBoth(&temp, &humidity); + + telemetry.addTemperature(TELEM_CHANNEL_SELF, temp); + telemetry.addRelativeHumidity(TELEM_CHANNEL_SELF, humidity); + } + #endif + #if ENV_INCLUDE_SHT4X if (SHT4X_initialized) { float sht4x_humidity, sht4x_temperature; diff --git a/src/helpers/sensors/EnvironmentSensorManager.h b/src/helpers/sensors/EnvironmentSensorManager.h index 32413ebc03..e2c7088b17 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.h +++ b/src/helpers/sensors/EnvironmentSensorManager.h @@ -16,6 +16,7 @@ class EnvironmentSensorManager : public SensorManager { bool INA260_initialized = false; bool INA226_initialized = false; bool SHTC3_initialized = false; + bool SHT31_initialized = false; bool LPS22HB_initialized = false; bool MLX90614_initialized = false; bool VL53L0X_initialized = false;