mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 22:22:05 +00:00
Trunk
This commit is contained in:
parent
3689b86ab3
commit
a9c0654b44
@ -192,8 +192,7 @@ IndicatorSensor indicatorSensor;
|
|||||||
|
|
||||||
int32_t EnvironmentTelemetryModule::runOnce()
|
int32_t EnvironmentTelemetryModule::runOnce()
|
||||||
{
|
{
|
||||||
if (sleepOnNextExecution == true)
|
if (sleepOnNextExecution == true) {
|
||||||
{
|
|
||||||
sleepOnNextExecution = false;
|
sleepOnNextExecution = false;
|
||||||
uint32_t nightyNightMs = Default::getConfiguredOrDefaultMs(moduleConfig.telemetry.environment_update_interval,
|
uint32_t nightyNightMs = Default::getConfiguredOrDefaultMs(moduleConfig.telemetry.environment_update_interval,
|
||||||
default_telemetry_broadcast_interval_secs);
|
default_telemetry_broadcast_interval_secs);
|
||||||
@ -212,19 +211,16 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
// moduleConfig.telemetry.environment_update_interval = 15;
|
// moduleConfig.telemetry.environment_update_interval = 15;
|
||||||
|
|
||||||
if (!(moduleConfig.telemetry.environment_measurement_enabled || moduleConfig.telemetry.environment_screen_enabled ||
|
if (!(moduleConfig.telemetry.environment_measurement_enabled || moduleConfig.telemetry.environment_screen_enabled ||
|
||||||
ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE))
|
ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE)) {
|
||||||
{
|
|
||||||
// If this module is not enabled, and the user doesn't want the display screen don't waste any OSThread time on it
|
// If this module is not enabled, and the user doesn't want the display screen don't waste any OSThread time on it
|
||||||
return disable();
|
return disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firstTime)
|
if (firstTime) {
|
||||||
{
|
|
||||||
// This is the first time the OSThread library has called this function, so do some setup
|
// This is the first time the OSThread library has called this function, so do some setup
|
||||||
firstTime = 0;
|
firstTime = 0;
|
||||||
|
|
||||||
if (moduleConfig.telemetry.environment_measurement_enabled || ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE)
|
if (moduleConfig.telemetry.environment_measurement_enabled || ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE) {
|
||||||
{
|
|
||||||
LOG_INFO("Environment Telemetry: init");
|
LOG_INFO("Environment Telemetry: init");
|
||||||
#ifdef SENSECAP_INDICATOR
|
#ifdef SENSECAP_INDICATOR
|
||||||
result = indicatorSensor.runOnce();
|
result = indicatorSensor.runOnce();
|
||||||
@ -286,15 +282,14 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
result = cgRadSens.runOnce();
|
result = cgRadSens.runOnce();
|
||||||
if (pct2075Sensor.hasSensor())
|
if (pct2075Sensor.hasSensor())
|
||||||
result = pct2075Sensor.runOnce();
|
result = pct2075Sensor.runOnce();
|
||||||
// this only works on the wismesh hub with the solar option. This is not an I2C sensor, so we don't need the
|
// this only works on the wismesh hub with the solar option. This is not an I2C sensor, so we don't need the
|
||||||
// sensormap here.
|
// sensormap here.
|
||||||
#ifdef HAS_RAKPROT
|
#ifdef HAS_RAKPROT
|
||||||
|
|
||||||
result = rak9154Sensor.runOnce();
|
result = rak9154Sensor.runOnce();
|
||||||
#endif
|
#endif
|
||||||
#if __has_include("RAK12035_SoilMoisture.h") && defined(RAK_4631) && RAK_4631 == 1
|
#if __has_include("RAK12035_SoilMoisture.h") && defined(RAK_4631) && RAK_4631 == 1
|
||||||
if (rak12035Sensor.hasSensor())
|
if (rak12035Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = rak12035Sensor.runOnce();
|
result = rak12035Sensor.runOnce();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -303,16 +298,11 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
// it's possible to have this module enabled, only for displaying values on the screen.
|
// it's possible to have this module enabled, only for displaying values on the screen.
|
||||||
// therefore, we should only enable the sensor loop if measurement is also enabled
|
// therefore, we should only enable the sensor loop if measurement is also enabled
|
||||||
return result == UINT32_MAX ? disable() : setStartDelay();
|
return result == UINT32_MAX ? disable() : setStartDelay();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
// if we somehow got to a second run of this module with measurement disabled, then just wait forever
|
// if we somehow got to a second run of this module with measurement disabled, then just wait forever
|
||||||
if (!moduleConfig.telemetry.environment_measurement_enabled && !ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE)
|
if (!moduleConfig.telemetry.environment_measurement_enabled && !ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE) {
|
||||||
{
|
|
||||||
return disable();
|
return disable();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR_EXTERNAL
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR_EXTERNAL
|
||||||
if (bme680Sensor.hasSensor())
|
if (bme680Sensor.hasSensor())
|
||||||
result = bme680Sensor.runTrigger();
|
result = bme680Sensor.runTrigger();
|
||||||
@ -324,14 +314,11 @@ int32_t EnvironmentTelemetryModule::runOnce()
|
|||||||
moduleConfig.telemetry.environment_update_interval,
|
moduleConfig.telemetry.environment_update_interval,
|
||||||
default_telemetry_broadcast_interval_secs, numOnlineNodes))) &&
|
default_telemetry_broadcast_interval_secs, numOnlineNodes))) &&
|
||||||
airTime->isTxAllowedChannelUtil(config.device.role != meshtastic_Config_DeviceConfig_Role_SENSOR) &&
|
airTime->isTxAllowedChannelUtil(config.device.role != meshtastic_Config_DeviceConfig_Role_SENSOR) &&
|
||||||
airTime->isTxAllowedAirUtil())
|
airTime->isTxAllowedAirUtil()) {
|
||||||
{
|
|
||||||
sendTelemetry();
|
sendTelemetry();
|
||||||
lastSentToMesh = millis();
|
lastSentToMesh = millis();
|
||||||
}
|
} else if (((lastSentToPhone == 0) || !Throttle::isWithinTimespanMs(lastSentToPhone, sendToPhoneIntervalMs)) &&
|
||||||
else if (((lastSentToPhone == 0) || !Throttle::isWithinTimespanMs(lastSentToPhone, sendToPhoneIntervalMs)) &&
|
(service->isToPhoneQueueEmpty())) {
|
||||||
(service->isToPhoneQueueEmpty()))
|
|
||||||
{
|
|
||||||
// Just send to phone when it's not our time to send to mesh yet
|
// Just send to phone when it's not our time to send to mesh yet
|
||||||
// Only send while queue is empty (phone assumed connected)
|
// Only send while queue is empty (phone assumed connected)
|
||||||
sendTelemetry(NODENUM_BROADCAST, true);
|
sendTelemetry(NODENUM_BROADCAST, true);
|
||||||
@ -351,8 +338,7 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
display->setFont(FONT_SMALL);
|
display->setFont(FONT_SMALL);
|
||||||
|
|
||||||
if (lastMeasurementPacket == nullptr)
|
if (lastMeasurementPacket == nullptr) {
|
||||||
{
|
|
||||||
// If there's no valid packet, display "Environment"
|
// If there's no valid packet, display "Environment"
|
||||||
display->drawString(x, y, "Environment");
|
display->drawString(x, y, "Environment");
|
||||||
display->drawString(x, y += _fontHeight(FONT_SMALL), "No measurement");
|
display->drawString(x, y += _fontHeight(FONT_SMALL), "No measurement");
|
||||||
@ -365,8 +351,7 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
const char *lastSender = getSenderShortName(*lastMeasurementPacket);
|
const char *lastSender = getSenderShortName(*lastMeasurementPacket);
|
||||||
|
|
||||||
const meshtastic_Data &p = lastMeasurementPacket->decoded;
|
const meshtastic_Data &p = lastMeasurementPacket->decoded;
|
||||||
if (!pb_decode_from_bytes(p.payload.bytes, p.payload.size, &meshtastic_Telemetry_msg, &lastMeasurement))
|
if (!pb_decode_from_bytes(p.payload.bytes, p.payload.size, &meshtastic_Telemetry_msg, &lastMeasurement)) {
|
||||||
{
|
|
||||||
display->drawString(x, y, "Measurement Error");
|
display->drawString(x, y, "Measurement Error");
|
||||||
LOG_ERROR("Unable to decode last packet");
|
LOG_ERROR("Unable to decode last packet");
|
||||||
return;
|
return;
|
||||||
@ -380,11 +365,9 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
int sensorCount = 0;
|
int sensorCount = 0;
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.has_temperature ||
|
if (lastMeasurement.variant.environment_metrics.has_temperature ||
|
||||||
lastMeasurement.variant.environment_metrics.has_relative_humidity)
|
lastMeasurement.variant.environment_metrics.has_relative_humidity) {
|
||||||
{
|
|
||||||
String last_temp = String(lastMeasurement.variant.environment_metrics.temperature, 0) + "°C";
|
String last_temp = String(lastMeasurement.variant.environment_metrics.temperature, 0) + "°C";
|
||||||
if (moduleConfig.telemetry.environment_display_fahrenheit)
|
if (moduleConfig.telemetry.environment_display_fahrenheit) {
|
||||||
{
|
|
||||||
last_temp =
|
last_temp =
|
||||||
String(UnitConversions::CelsiusToFahrenheit(lastMeasurement.variant.environment_metrics.temperature), 0) + "°F";
|
String(UnitConversions::CelsiusToFahrenheit(lastMeasurement.variant.environment_metrics.temperature), 0) + "°F";
|
||||||
}
|
}
|
||||||
@ -393,45 +376,37 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
"Temp/Hum: " + last_temp + " / " + String(lastMeasurement.variant.environment_metrics.relative_humidity, 0) + "%";
|
"Temp/Hum: " + last_temp + " / " + String(lastMeasurement.variant.environment_metrics.relative_humidity, 0) + "%";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.barometric_pressure != 0)
|
if (lastMeasurement.variant.environment_metrics.barometric_pressure != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] =
|
sensorData[sensorCount++] =
|
||||||
"Press: " + String(lastMeasurement.variant.environment_metrics.barometric_pressure, 0) + "hPA";
|
"Press: " + String(lastMeasurement.variant.environment_metrics.barometric_pressure, 0) + "hPA";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.voltage != 0)
|
if (lastMeasurement.variant.environment_metrics.voltage != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "Volt/Cur: " + String(lastMeasurement.variant.environment_metrics.voltage, 0) + "V / " +
|
sensorData[sensorCount++] = "Volt/Cur: " + String(lastMeasurement.variant.environment_metrics.voltage, 0) + "V / " +
|
||||||
String(lastMeasurement.variant.environment_metrics.current, 0) + "mA";
|
String(lastMeasurement.variant.environment_metrics.current, 0) + "mA";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.iaq != 0)
|
if (lastMeasurement.variant.environment_metrics.iaq != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "IAQ: " + String(lastMeasurement.variant.environment_metrics.iaq);
|
sensorData[sensorCount++] = "IAQ: " + String(lastMeasurement.variant.environment_metrics.iaq);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.distance != 0)
|
if (lastMeasurement.variant.environment_metrics.distance != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "Water Level: " + String(lastMeasurement.variant.environment_metrics.distance, 0) + "mm";
|
sensorData[sensorCount++] = "Water Level: " + String(lastMeasurement.variant.environment_metrics.distance, 0) + "mm";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.weight != 0)
|
if (lastMeasurement.variant.environment_metrics.weight != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "Weight: " + String(lastMeasurement.variant.environment_metrics.weight, 0) + "kg";
|
sensorData[sensorCount++] = "Weight: " + String(lastMeasurement.variant.environment_metrics.weight, 0) + "kg";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.radiation != 0)
|
if (lastMeasurement.variant.environment_metrics.radiation != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "Rad: " + String(lastMeasurement.variant.environment_metrics.radiation, 2) + "µR/h";
|
sensorData[sensorCount++] = "Rad: " + String(lastMeasurement.variant.environment_metrics.radiation, 2) + "µR/h";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.lux != 0)
|
if (lastMeasurement.variant.environment_metrics.lux != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "Illuminance: " + String(lastMeasurement.variant.environment_metrics.lux, 2) + "lx";
|
sensorData[sensorCount++] = "Illuminance: " + String(lastMeasurement.variant.environment_metrics.lux, 2) + "lx";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastMeasurement.variant.environment_metrics.white_lux != 0)
|
if (lastMeasurement.variant.environment_metrics.white_lux != 0) {
|
||||||
{
|
|
||||||
sensorData[sensorCount++] = "W_Lux: " + String(lastMeasurement.variant.environment_metrics.white_lux, 2) + "lx";
|
sensorData[sensorCount++] = "W_Lux: " + String(lastMeasurement.variant.environment_metrics.white_lux, 2) + "lx";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,8 +417,7 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
// Determine how many lines we can fit on display
|
// Determine how many lines we can fit on display
|
||||||
// Calculated once only: display dimensions don't change during runtime.
|
// Calculated once only: display dimensions don't change during runtime.
|
||||||
static int maxLines = 0;
|
static int maxLines = 0;
|
||||||
if (!maxLines)
|
if (!maxLines) {
|
||||||
{
|
|
||||||
const int16_t paddingTop = _fontHeight(FONT_SMALL); // Heading text
|
const int16_t paddingTop = _fontHeight(FONT_SMALL); // Heading text
|
||||||
const int16_t paddingBottom = 8; // Indicator dots
|
const int16_t paddingBottom = 8; // Indicator dots
|
||||||
maxLines = (display->getHeight() - paddingTop - paddingBottom) / _fontHeight(FONT_SMALL);
|
maxLines = (display->getHeight() - paddingTop - paddingBottom) / _fontHeight(FONT_SMALL);
|
||||||
@ -452,31 +426,23 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
|
|
||||||
// Draw as many lines of data as we can fit
|
// Draw as many lines of data as we can fit
|
||||||
int linesToShow = min(maxLines, sensorCount);
|
int linesToShow = min(maxLines, sensorCount);
|
||||||
for (int i = 0; i < linesToShow; i++)
|
for (int i = 0; i < linesToShow; i++) {
|
||||||
{
|
|
||||||
int index = (scrollOffset + i) % sensorCount;
|
int index = (scrollOffset + i) % sensorCount;
|
||||||
display->drawString(x, y += _fontHeight(FONT_SMALL), sensorData[index]);
|
display->drawString(x, y += _fontHeight(FONT_SMALL), sensorData[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only scroll if there are more than 3 sensor data lines
|
// Only scroll if there are more than 3 sensor data lines
|
||||||
if (sensorCount > 3)
|
if (sensorCount > 3) {
|
||||||
{
|
|
||||||
// Update scroll offset every 5 seconds
|
// Update scroll offset every 5 seconds
|
||||||
if (millis() - lastScrollTime > 5000)
|
if (millis() - lastScrollTime > 5000) {
|
||||||
{
|
if (scrollingDown) {
|
||||||
if (scrollingDown)
|
|
||||||
{
|
|
||||||
scrollOffset++;
|
scrollOffset++;
|
||||||
if (scrollOffset + linesToShow >= sensorCount)
|
if (scrollOffset + linesToShow >= sensorCount) {
|
||||||
{
|
|
||||||
scrollingDown = false;
|
scrollingDown = false;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
scrollOffset--;
|
scrollOffset--;
|
||||||
if (scrollOffset <= 0)
|
if (scrollOffset <= 0) {
|
||||||
{
|
|
||||||
scrollingDown = true;
|
scrollingDown = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -487,8 +453,7 @@ void EnvironmentTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiSt
|
|||||||
|
|
||||||
bool EnvironmentTelemetryModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Telemetry *t)
|
bool EnvironmentTelemetryModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Telemetry *t)
|
||||||
{
|
{
|
||||||
if (t->which_variant == meshtastic_Telemetry_environment_metrics_tag)
|
if (t->which_variant == meshtastic_Telemetry_environment_metrics_tag) {
|
||||||
{
|
|
||||||
#ifdef DEBUG_PORT
|
#ifdef DEBUG_PORT
|
||||||
const char *sender = getSenderShortName(mp);
|
const char *sender = getSenderShortName(mp);
|
||||||
|
|
||||||
@ -535,136 +500,108 @@ bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m
|
|||||||
valid = valid && t1000xSensor.getMetrics(m);
|
valid = valid && t1000xSensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
#else
|
#else
|
||||||
if (dfRobotLarkSensor.hasSensor())
|
if (dfRobotLarkSensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && dfRobotLarkSensor.getMetrics(m);
|
valid = valid && dfRobotLarkSensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (dfRobotGravitySensor.hasSensor())
|
if (dfRobotGravitySensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && dfRobotGravitySensor.getMetrics(m);
|
valid = valid && dfRobotGravitySensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (sht31Sensor.hasSensor())
|
if (sht31Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && sht31Sensor.getMetrics(m);
|
valid = valid && sht31Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (sht4xSensor.hasSensor())
|
if (sht4xSensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && sht4xSensor.getMetrics(m);
|
valid = valid && sht4xSensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (lps22hbSensor.hasSensor())
|
if (lps22hbSensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && lps22hbSensor.getMetrics(m);
|
valid = valid && lps22hbSensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (shtc3Sensor.hasSensor())
|
if (shtc3Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && shtc3Sensor.getMetrics(m);
|
valid = valid && shtc3Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (bmp085Sensor.hasSensor())
|
if (bmp085Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && bmp085Sensor.getMetrics(m);
|
valid = valid && bmp085Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
#if __has_include(<Adafruit_BME280.h>)
|
#if __has_include(<Adafruit_BME280.h>)
|
||||||
if (bmp280Sensor.hasSensor())
|
if (bmp280Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && bmp280Sensor.getMetrics(m);
|
valid = valid && bmp280Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (bme280Sensor.hasSensor())
|
if (bme280Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && bme280Sensor.getMetrics(m);
|
valid = valid && bme280Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (bmp3xxSensor.hasSensor())
|
if (bmp3xxSensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && bmp3xxSensor.getMetrics(m);
|
valid = valid && bmp3xxSensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (bme680Sensor.hasSensor())
|
if (bme680Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && bme680Sensor.getMetrics(m);
|
valid = valid && bme680Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (dps310Sensor.hasSensor())
|
if (dps310Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && dps310Sensor.getMetrics(m);
|
valid = valid && dps310Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (mcp9808Sensor.hasSensor())
|
if (mcp9808Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && mcp9808Sensor.getMetrics(m);
|
valid = valid && mcp9808Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (ina219Sensor.hasSensor())
|
if (ina219Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && ina219Sensor.getMetrics(m);
|
valid = valid && ina219Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (ina260Sensor.hasSensor())
|
if (ina260Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && ina260Sensor.getMetrics(m);
|
valid = valid && ina260Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (ina3221Sensor.hasSensor())
|
if (ina3221Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && ina3221Sensor.getMetrics(m);
|
valid = valid && ina3221Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (veml7700Sensor.hasSensor())
|
if (veml7700Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && veml7700Sensor.getMetrics(m);
|
valid = valid && veml7700Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (tsl2591Sensor.hasSensor())
|
if (tsl2591Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && tsl2591Sensor.getMetrics(m);
|
valid = valid && tsl2591Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (opt3001Sensor.hasSensor())
|
if (opt3001Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && opt3001Sensor.getMetrics(m);
|
valid = valid && opt3001Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (mlx90632Sensor.hasSensor())
|
if (mlx90632Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && mlx90632Sensor.getMetrics(m);
|
valid = valid && mlx90632Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (rcwl9620Sensor.hasSensor())
|
if (rcwl9620Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && rcwl9620Sensor.getMetrics(m);
|
valid = valid && rcwl9620Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (nau7802Sensor.hasSensor())
|
if (nau7802Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && nau7802Sensor.getMetrics(m);
|
valid = valid && nau7802Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (aht10Sensor.hasSensor())
|
if (aht10Sensor.hasSensor()) {
|
||||||
{
|
if (!bmp280Sensor.hasSensor() && !bmp3xxSensor.hasSensor()) {
|
||||||
if (!bmp280Sensor.hasSensor() && !bmp3xxSensor.hasSensor())
|
|
||||||
{
|
|
||||||
valid = valid && aht10Sensor.getMetrics(m);
|
valid = valid && aht10Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
} else if (bmp280Sensor.hasSensor()) {
|
||||||
else if (bmp280Sensor.hasSensor())
|
|
||||||
{
|
|
||||||
// prefer bmp280 temp if both sensors are present, fetch only humidity
|
// prefer bmp280 temp if both sensors are present, fetch only humidity
|
||||||
meshtastic_Telemetry m_ahtx = meshtastic_Telemetry_init_zero;
|
meshtastic_Telemetry m_ahtx = meshtastic_Telemetry_init_zero;
|
||||||
LOG_INFO("AHTX0+BMP280 module detected: using temp from BMP280 and humy from AHTX0");
|
LOG_INFO("AHTX0+BMP280 module detected: using temp from BMP280 and humy from AHTX0");
|
||||||
aht10Sensor.getMetrics(&m_ahtx);
|
aht10Sensor.getMetrics(&m_ahtx);
|
||||||
m->variant.environment_metrics.relative_humidity = m_ahtx.variant.environment_metrics.relative_humidity;
|
m->variant.environment_metrics.relative_humidity = m_ahtx.variant.environment_metrics.relative_humidity;
|
||||||
m->variant.environment_metrics.has_relative_humidity = m_ahtx.variant.environment_metrics.has_relative_humidity;
|
m->variant.environment_metrics.has_relative_humidity = m_ahtx.variant.environment_metrics.has_relative_humidity;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
// prefer bmp3xx temp if both sensors are present, fetch only humidity
|
// prefer bmp3xx temp if both sensors are present, fetch only humidity
|
||||||
meshtastic_Telemetry m_ahtx = meshtastic_Telemetry_init_zero;
|
meshtastic_Telemetry m_ahtx = meshtastic_Telemetry_init_zero;
|
||||||
LOG_INFO("AHTX0+BMP3XX module detected: using temp from BMP3XX and humy from AHTX0");
|
LOG_INFO("AHTX0+BMP3XX module detected: using temp from BMP3XX and humy from AHTX0");
|
||||||
@ -673,13 +610,11 @@ bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m
|
|||||||
m->variant.environment_metrics.has_relative_humidity = m_ahtx.variant.environment_metrics.has_relative_humidity;
|
m->variant.environment_metrics.has_relative_humidity = m_ahtx.variant.environment_metrics.has_relative_humidity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (max17048Sensor.hasSensor())
|
if (max17048Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && max17048Sensor.getMetrics(m);
|
valid = valid && max17048Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (cgRadSens.hasSensor())
|
if (cgRadSens.hasSensor()) {
|
||||||
{
|
|
||||||
valid = valid && cgRadSens.getMetrics(m);
|
valid = valid && cgRadSens.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
@ -691,9 +626,10 @@ bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m
|
|||||||
valid = valid && rak9154Sensor.getMetrics(m);
|
valid = valid && rak9154Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
#endif
|
#endif
|
||||||
#if __has_include("RAK12035_SoilMoisture.h") && defined(RAK_4631) && RAK_4631 == 1 // Not really needed, but may as well just skip at a lower level it if no library or not a RAK_4631
|
#if __has_include("RAK12035_SoilMoisture.h") && defined(RAK_4631) && \
|
||||||
if (rak12035Sensor.hasSensor())
|
RAK_4631 == \
|
||||||
{
|
1 // Not really needed, but may as well just skip at a lower level it if no library or not a RAK_4631
|
||||||
|
if (rak12035Sensor.hasSensor()) {
|
||||||
valid = valid && rak12035Sensor.getMetrics(m);
|
valid = valid && rak12035Sensor.getMetrics(m);
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
@ -704,33 +640,25 @@ bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m
|
|||||||
|
|
||||||
meshtastic_MeshPacket *EnvironmentTelemetryModule::allocReply()
|
meshtastic_MeshPacket *EnvironmentTelemetryModule::allocReply()
|
||||||
{
|
{
|
||||||
if (currentRequest)
|
if (currentRequest) {
|
||||||
{
|
|
||||||
auto req = *currentRequest;
|
auto req = *currentRequest;
|
||||||
const auto &p = req.decoded;
|
const auto &p = req.decoded;
|
||||||
meshtastic_Telemetry scratch;
|
meshtastic_Telemetry scratch;
|
||||||
meshtastic_Telemetry *decoded = NULL;
|
meshtastic_Telemetry *decoded = NULL;
|
||||||
memset(&scratch, 0, sizeof(scratch));
|
memset(&scratch, 0, sizeof(scratch));
|
||||||
if (pb_decode_from_bytes(p.payload.bytes, p.payload.size, &meshtastic_Telemetry_msg, &scratch))
|
if (pb_decode_from_bytes(p.payload.bytes, p.payload.size, &meshtastic_Telemetry_msg, &scratch)) {
|
||||||
{
|
|
||||||
decoded = &scratch;
|
decoded = &scratch;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG_ERROR("Error decoding EnvironmentTelemetry module!");
|
LOG_ERROR("Error decoding EnvironmentTelemetry module!");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// Check for a request for environment metrics
|
// Check for a request for environment metrics
|
||||||
if (decoded->which_variant == meshtastic_Telemetry_environment_metrics_tag)
|
if (decoded->which_variant == meshtastic_Telemetry_environment_metrics_tag) {
|
||||||
{
|
|
||||||
meshtastic_Telemetry m = meshtastic_Telemetry_init_zero;
|
meshtastic_Telemetry m = meshtastic_Telemetry_init_zero;
|
||||||
if (getEnvironmentTelemetry(&m))
|
if (getEnvironmentTelemetry(&m)) {
|
||||||
{
|
|
||||||
LOG_INFO("Environment telemetry reply to request");
|
LOG_INFO("Environment telemetry reply to request");
|
||||||
return allocDataProtobuf(m);
|
return allocDataProtobuf(m);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -744,11 +672,9 @@ bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
|||||||
m.which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
m.which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
||||||
m.time = getTime();
|
m.time = getTime();
|
||||||
#ifdef T1000X_SENSOR_EN
|
#ifdef T1000X_SENSOR_EN
|
||||||
if (t1000xSensor.getMetrics(&m))
|
if (t1000xSensor.getMetrics(&m)) {
|
||||||
{
|
|
||||||
#else
|
#else
|
||||||
if (getEnvironmentTelemetry(&m))
|
if (getEnvironmentTelemetry(&m)) {
|
||||||
{
|
|
||||||
#endif
|
#endif
|
||||||
LOG_INFO("Send: barometric_pressure=%f, current=%f, gas_resistance=%f, relative_humidity=%f, temperature=%f",
|
LOG_INFO("Send: barometric_pressure=%f, current=%f, gas_resistance=%f, relative_humidity=%f, temperature=%f",
|
||||||
m.variant.environment_metrics.barometric_pressure, m.variant.environment_metrics.current,
|
m.variant.environment_metrics.barometric_pressure, m.variant.environment_metrics.current,
|
||||||
@ -779,13 +705,10 @@ bool EnvironmentTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
|||||||
packetPool.release(lastMeasurementPacket);
|
packetPool.release(lastMeasurementPacket);
|
||||||
|
|
||||||
lastMeasurementPacket = packetPool.allocCopy(*p);
|
lastMeasurementPacket = packetPool.allocCopy(*p);
|
||||||
if (phoneOnly)
|
if (phoneOnly) {
|
||||||
{
|
|
||||||
LOG_INFO("Send packet to phone");
|
LOG_INFO("Send packet to phone");
|
||||||
service->sendToPhone(p);
|
service->sendToPhone(p);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG_INFO("Send packet to mesh");
|
LOG_INFO("Send packet to mesh");
|
||||||
service->sendToMesh(p, RX_SRC_LOCAL, true);
|
service->sendToMesh(p, RX_SRC_LOCAL, true);
|
||||||
|
|
||||||
@ -814,153 +737,130 @@ AdminMessageHandleResult EnvironmentTelemetryModule::handleAdminMessageForModule
|
|||||||
{
|
{
|
||||||
AdminMessageHandleResult result = AdminMessageHandleResult::NOT_HANDLED;
|
AdminMessageHandleResult result = AdminMessageHandleResult::NOT_HANDLED;
|
||||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR_EXTERNAL
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR_EXTERNAL
|
||||||
if (dfRobotLarkSensor.hasSensor())
|
if (dfRobotLarkSensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = dfRobotLarkSensor.handleAdminMessage(mp, request, response);
|
result = dfRobotLarkSensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (dfRobotGravitySensor.hasSensor())
|
if (dfRobotGravitySensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = dfRobotGravitySensor.handleAdminMessage(mp, request, response);
|
result = dfRobotGravitySensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (sht31Sensor.hasSensor())
|
if (sht31Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = sht31Sensor.handleAdminMessage(mp, request, response);
|
result = sht31Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (lps22hbSensor.hasSensor())
|
if (lps22hbSensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = lps22hbSensor.handleAdminMessage(mp, request, response);
|
result = lps22hbSensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (shtc3Sensor.hasSensor())
|
if (shtc3Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = shtc3Sensor.handleAdminMessage(mp, request, response);
|
result = shtc3Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (bmp085Sensor.hasSensor())
|
if (bmp085Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = bmp085Sensor.handleAdminMessage(mp, request, response);
|
result = bmp085Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (bmp280Sensor.hasSensor())
|
if (bmp280Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = bmp280Sensor.handleAdminMessage(mp, request, response);
|
result = bmp280Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (bme280Sensor.hasSensor())
|
if (bme280Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = bme280Sensor.handleAdminMessage(mp, request, response);
|
result = bme280Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (bmp3xxSensor.hasSensor())
|
if (bmp3xxSensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = bmp3xxSensor.handleAdminMessage(mp, request, response);
|
result = bmp3xxSensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (bme680Sensor.hasSensor())
|
if (bme680Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = bme680Sensor.handleAdminMessage(mp, request, response);
|
result = bme680Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (dps310Sensor.hasSensor())
|
if (dps310Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = dps310Sensor.handleAdminMessage(mp, request, response);
|
result = dps310Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (mcp9808Sensor.hasSensor())
|
if (mcp9808Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = mcp9808Sensor.handleAdminMessage(mp, request, response);
|
result = mcp9808Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (ina219Sensor.hasSensor())
|
if (ina219Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = ina219Sensor.handleAdminMessage(mp, request, response);
|
result = ina219Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (ina260Sensor.hasSensor())
|
if (ina260Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = ina260Sensor.handleAdminMessage(mp, request, response);
|
result = ina260Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (ina3221Sensor.hasSensor())
|
if (ina3221Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = ina3221Sensor.handleAdminMessage(mp, request, response);
|
result = ina3221Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (veml7700Sensor.hasSensor())
|
if (veml7700Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = veml7700Sensor.handleAdminMessage(mp, request, response);
|
result = veml7700Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (tsl2591Sensor.hasSensor())
|
if (tsl2591Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = tsl2591Sensor.handleAdminMessage(mp, request, response);
|
result = tsl2591Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (opt3001Sensor.hasSensor())
|
if (opt3001Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = opt3001Sensor.handleAdminMessage(mp, request, response);
|
result = opt3001Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (mlx90632Sensor.hasSensor())
|
if (mlx90632Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = mlx90632Sensor.handleAdminMessage(mp, request, response);
|
result = mlx90632Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (rcwl9620Sensor.hasSensor())
|
if (rcwl9620Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = rcwl9620Sensor.handleAdminMessage(mp, request, response);
|
result = rcwl9620Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (nau7802Sensor.hasSensor())
|
if (nau7802Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = nau7802Sensor.handleAdminMessage(mp, request, response);
|
result = nau7802Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (aht10Sensor.hasSensor())
|
if (aht10Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = aht10Sensor.handleAdminMessage(mp, request, response);
|
result = aht10Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (max17048Sensor.hasSensor())
|
if (max17048Sensor.hasSensor()) {
|
||||||
{
|
|
||||||
result = max17048Sensor.handleAdminMessage(mp, request, response);
|
result = max17048Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (cgRadSens.hasSensor())
|
if (cgRadSens.hasSensor()) {
|
||||||
{
|
|
||||||
result = cgRadSens.handleAdminMessage(mp, request, response);
|
result = cgRadSens.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#if __has_include("RAK12035_SoilMoisture.h") && defined(RAK_4631) && RAK_4631 == 1 // Not really needed, but may as well just skip it at a lower level if no library or not a RAK_4631
|
#if __has_include("RAK12035_SoilMoisture.h") && defined(RAK_4631) && \
|
||||||
if (rak12035Sensor.hasSensor())
|
RAK_4631 == \
|
||||||
{
|
1 // Not really needed, but may as well just skip it at a lower level if no library or not a RAK_4631
|
||||||
|
if (rak12035Sensor.hasSensor()) {
|
||||||
result = rak12035Sensor.handleAdminMessage(mp, request, response);
|
result = rak12035Sensor.handleAdminMessage(mp, request, response);
|
||||||
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
if (result != AdminMessageHandleResult::NOT_HANDLED)
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
Reference in New Issue
Block a user