Browse Source

Merge d2dc59a508 into c86e63d2f5

pull/2695/merge
NickDunklee 1 day ago
committed by GitHub
parent
commit
7a62cfaa79
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      platformio.ini
  2. 44
      src/helpers/sensors/EnvironmentSensorManager.cpp
  3. 2
      src/helpers/sensors/EnvironmentSensorManager.h
  4. 1
      variants/rak4631/platformio.ini

2
platformio.ini

@ -153,6 +153,8 @@ lib_deps =
stevemarple/MicroNMEA @ ^2.0.6 stevemarple/MicroNMEA @ ^2.0.6
adafruit/Adafruit BME680 Library @ ^2.0.4 adafruit/Adafruit BME680 Library @ ^2.0.4
adafruit/Adafruit BMP085 Library @ ^1.2.4 adafruit/Adafruit BMP085 Library @ ^1.2.4
sensirion/Sensirion I2C SGP40 @ ^0.1.0
sensirion/Sensirion Gas Index Algorithm @ ^3.2.3
; ----------------- TESTING --------------------- ; ----------------- TESTING ---------------------

44
src/helpers/sensors/EnvironmentSensorManager.cpp

@ -160,6 +160,19 @@ static Adafruit_VL53L0X VL53L0X;
static RAK12035_SoilMoisture RAK12035; static RAK12035_SoilMoisture RAK12035;
#endif #endif
#if ENV_INCLUDE_RAK12047
#ifndef TELEM_RAK12047_ADDRESS
#define TELEM_RAK12047_ADDRESS 0x59
#endif
#include <SensirionI2CSgp40.h>
#include <SensirionGasIndexAlgorithm.h>
static SensirionI2CSgp40 sgp40;
static GasIndexAlgorithmParams sgp40_voc_params;
static int32_t sgp40_voc_index = 0;
static bool sgp40_active = false;
static uint32_t sgp40_last_ms = 0;
#endif
#if ENV_INCLUDE_GPS && defined(RAK_BOARD) && !defined(RAK_WISMESH_TAG) #if ENV_INCLUDE_GPS && defined(RAK_BOARD) && !defined(RAK_WISMESH_TAG)
#define RAK_WISBLOCK_GPS #define RAK_WISBLOCK_GPS
#endif #endif
@ -475,6 +488,21 @@ static void query_rak12035(uint8_t ch, uint8_t sub_ch, CayenneLPP& lpp) {
} }
#endif #endif
#if ENV_INCLUDE_RAK12047
static uint8_t init_rak12047(TwoWire* wire, uint8_t addr) {
sgp40.begin(*wire);
uint16_t serial[3];
if (sgp40.getSerialNumber(serial, 3) != 0) return 0;
GasIndexAlgorithm_init(&sgp40_voc_params, GasIndexAlgorithm_ALGORITHM_TYPE_VOC);
sgp40_active = true;
return 1;
}
static void query_rak12047(uint8_t ch, uint8_t, CayenneLPP& lpp) {
if (sgp40_voc_index > 0)
lpp.addGenericSensor(ch, (uint32_t)sgp40_voc_index);
}
#endif
#if ENV_INCLUDE_BME680_BSEC #if ENV_INCLUDE_BME680_BSEC
static void bsec_load_state() { static void bsec_load_state() {
using namespace Adafruit_LittleFS_Namespace; using namespace Adafruit_LittleFS_Namespace;
@ -599,6 +627,9 @@ static const SensorDef SENSOR_TABLE[] = {
#endif #endif
#if ENV_INCLUDE_RAK12035 #if ENV_INCLUDE_RAK12035
{ TELEM_RAK12035_ADDRESS,"RAK12035", init_rak12035, query_rak12035 }, { TELEM_RAK12035_ADDRESS,"RAK12035", init_rak12035, query_rak12035 },
#endif
#if ENV_INCLUDE_RAK12047
{ TELEM_RAK12047_ADDRESS,"RAK12047/SGP40", init_rak12047, query_rak12047 },
#endif #endif
{ 0, nullptr, nullptr, nullptr } // sentinel — keeps the array non-empty { 0, nullptr, nullptr, nullptr } // sentinel — keeps the array non-empty
}; };
@ -892,7 +923,7 @@ void EnvironmentSensorManager::stop_gps() {
} }
#endif // ENV_INCLUDE_GPS #endif // ENV_INCLUDE_GPS
#if ENV_INCLUDE_GPS || defined(ENV_INCLUDE_BME680_BSEC) #if ENV_INCLUDE_GPS || defined(ENV_INCLUDE_BME680_BSEC) || defined(ENV_INCLUDE_RAK12047)
void EnvironmentSensorManager::loop() { void EnvironmentSensorManager::loop() {
#if ENV_INCLUDE_GPS #if ENV_INCLUDE_GPS
@ -946,5 +977,16 @@ void EnvironmentSensorManager::loop() {
} }
} }
#endif // ENV_INCLUDE_BME680_BSEC #endif // ENV_INCLUDE_BME680_BSEC
#if ENV_INCLUDE_RAK12047
if (sgp40_active && (millis() - sgp40_last_ms >= 1000)) {
uint16_t sraw;
if (sgp40.measureRawSignal(0x8000, 0x6666, sraw) == 0) {
GasIndexAlgorithm_process(&sgp40_voc_params, (int32_t)sraw, &sgp40_voc_index);
}
sgp40_last_ms = millis();
}
#endif // ENV_INCLUDE_RAK12047
} }
#endif // ENV_INCLUDE_GPS || ENV_INCLUDE_BME680_BSEC #endif // ENV_INCLUDE_GPS || ENV_INCLUDE_BME680_BSEC

2
src/helpers/sensors/EnvironmentSensorManager.h

@ -43,7 +43,7 @@ public:
#endif #endif
bool begin() override; bool begin() override;
bool querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) override; bool querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) override;
#if ENV_INCLUDE_GPS || defined(ENV_INCLUDE_BME680_BSEC) #if ENV_INCLUDE_GPS || defined(ENV_INCLUDE_BME680_BSEC) || defined(ENV_INCLUDE_RAK12047)
void loop() override; void loop() override;
#endif #endif
int getNumSettings() const override; int getNumSettings() const override;

1
variants/rak4631/platformio.ini

@ -25,6 +25,7 @@ build_flags = ${nrf52_base.build_flags}
-D ENV_INCLUDE_RAK12035=1 -D ENV_INCLUDE_RAK12035=1
-UENV_INCLUDE_BME680 -UENV_INCLUDE_BME680
-D ENV_INCLUDE_BME680_BSEC=1 -D ENV_INCLUDE_BME680_BSEC=1
-D ENV_INCLUDE_RAK12047=1
build_src_filter = ${nrf52_base.build_src_filter} build_src_filter = ${nrf52_base.build_src_filter}
+<../variants/rak4631> +<../variants/rak4631>
+<helpers/sensors> +<helpers/sensors>

Loading…
Cancel
Save