mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 22:22:05 +00:00
Send local stats telemetry to phone every 15 minutes (#4475)
* Send local stats telemetry to phone every 10 minutes * Add debug log and bump to 15 minutes * Tronk * Explicit has_ optional
This commit is contained in:
parent
b0c1b7b7b5
commit
e61bd84116
@ -61,11 +61,6 @@ class RadioLibInterface : public RadioInterface, protected concurrency::Notified
|
|||||||
*/
|
*/
|
||||||
static void isrTxLevel0(), isrLevel0Common(PendingISR code);
|
static void isrTxLevel0(), isrLevel0Common(PendingISR code);
|
||||||
|
|
||||||
/**
|
|
||||||
* Debugging counts
|
|
||||||
*/
|
|
||||||
uint32_t rxBad = 0, rxGood = 0, txGood = 0;
|
|
||||||
|
|
||||||
MeshPacketQueue txQueue = MeshPacketQueue(MAX_TX_QUEUE);
|
MeshPacketQueue txQueue = MeshPacketQueue(MAX_TX_QUEUE);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -109,6 +104,11 @@ class RadioLibInterface : public RadioInterface, protected concurrency::Notified
|
|||||||
*/
|
*/
|
||||||
virtual void enableInterrupt(void (*)()) = 0;
|
virtual void enableInterrupt(void (*)()) = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debugging counts
|
||||||
|
*/
|
||||||
|
uint32_t rxBad = 0, rxGood = 0, txGood = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RadioLibInterface(LockingArduinoHal *hal, RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst,
|
RadioLibInterface(LockingArduinoHal *hal, RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst,
|
||||||
RADIOLIB_PIN_TYPE busy, PhysicalLayer *iface = NULL);
|
RADIOLIB_PIN_TYPE busy, PhysicalLayer *iface = NULL);
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include "NodeDB.h"
|
#include "NodeDB.h"
|
||||||
#include "PowerFSM.h"
|
#include "PowerFSM.h"
|
||||||
#include "RTC.h"
|
#include "RTC.h"
|
||||||
|
#include "RadioLibInterface.h"
|
||||||
#include "Router.h"
|
#include "Router.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
@ -31,6 +32,10 @@ int32_t DeviceTelemetryModule::runOnce()
|
|||||||
// 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);
|
||||||
|
if (lastSentStatsToPhone == 0 || (uptimeLastMs - lastSentStatsToPhone) >= sendStatsToPhoneIntervalMs) {
|
||||||
|
sendLocalStatsToPhone();
|
||||||
|
lastSentStatsToPhone = uptimeLastMs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return sendToPhoneIntervalMs;
|
return sendToPhoneIntervalMs;
|
||||||
}
|
}
|
||||||
@ -84,6 +89,13 @@ meshtastic_Telemetry DeviceTelemetryModule::getDeviceTelemetry()
|
|||||||
meshtastic_Telemetry t = meshtastic_Telemetry_init_zero;
|
meshtastic_Telemetry t = meshtastic_Telemetry_init_zero;
|
||||||
t.which_variant = meshtastic_Telemetry_device_metrics_tag;
|
t.which_variant = meshtastic_Telemetry_device_metrics_tag;
|
||||||
t.time = getTime();
|
t.time = getTime();
|
||||||
|
t.variant.device_metrics = meshtastic_DeviceMetrics_init_zero;
|
||||||
|
t.variant.device_metrics.has_air_util_tx = true;
|
||||||
|
t.variant.device_metrics.has_battery_level = true;
|
||||||
|
t.variant.device_metrics.has_channel_utilization = true;
|
||||||
|
t.variant.device_metrics.has_voltage = true;
|
||||||
|
t.variant.device_metrics.has_uptime_seconds = true;
|
||||||
|
|
||||||
t.variant.device_metrics.air_util_tx = airTime->utilizationTXPercent();
|
t.variant.device_metrics.air_util_tx = airTime->utilizationTXPercent();
|
||||||
#if ARCH_PORTDUINO
|
#if ARCH_PORTDUINO
|
||||||
t.variant.device_metrics.battery_level = MAGIC_USB_BATTERY_LEVEL;
|
t.variant.device_metrics.battery_level = MAGIC_USB_BATTERY_LEVEL;
|
||||||
@ -98,6 +110,40 @@ meshtastic_Telemetry DeviceTelemetryModule::getDeviceTelemetry()
|
|||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceTelemetryModule::sendLocalStatsToPhone()
|
||||||
|
{
|
||||||
|
meshtastic_Telemetry telemetry = meshtastic_Telemetry_init_zero;
|
||||||
|
telemetry.which_variant = meshtastic_Telemetry_local_stats_tag;
|
||||||
|
telemetry.variant.local_stats = meshtastic_LocalStats_init_zero;
|
||||||
|
telemetry.time = getTime();
|
||||||
|
telemetry.variant.local_stats.uptime_seconds = getUptimeSeconds();
|
||||||
|
telemetry.variant.local_stats.channel_utilization = airTime->channelUtilizationPercent();
|
||||||
|
telemetry.variant.local_stats.air_util_tx = airTime->utilizationTXPercent();
|
||||||
|
telemetry.variant.local_stats.num_online_nodes = numOnlineNodes;
|
||||||
|
telemetry.variant.local_stats.num_total_nodes = nodeDB->getNumMeshNodes();
|
||||||
|
if (RadioLibInterface::instance) {
|
||||||
|
telemetry.variant.local_stats.num_packets_tx = RadioLibInterface::instance->txGood;
|
||||||
|
telemetry.variant.local_stats.num_packets_rx = RadioLibInterface::instance->rxGood;
|
||||||
|
telemetry.variant.local_stats.num_packets_rx_bad = RadioLibInterface::instance->rxBad;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_INFO(
|
||||||
|
"(Sending local stats): uptime=%i, channel_utilization=%f, air_util_tx=%f, num_online_nodes=%i, num_total_nodes=%i\n",
|
||||||
|
telemetry.variant.local_stats.uptime_seconds, telemetry.variant.local_stats.channel_utilization,
|
||||||
|
telemetry.variant.local_stats.air_util_tx, telemetry.variant.local_stats.num_online_nodes,
|
||||||
|
telemetry.variant.local_stats.num_total_nodes);
|
||||||
|
|
||||||
|
LOG_INFO("num_packets_tx=%i, num_packets_rx=%i, num_packets_rx_bad=%i\n", telemetry.variant.local_stats.num_packets_tx,
|
||||||
|
telemetry.variant.local_stats.num_packets_rx, telemetry.variant.local_stats.num_packets_rx_bad);
|
||||||
|
|
||||||
|
meshtastic_MeshPacket *p = allocDataProtobuf(telemetry);
|
||||||
|
p->to = NODENUM_BROADCAST;
|
||||||
|
p->decoded.want_response = false;
|
||||||
|
p->priority = meshtastic_MeshPacket_Priority_BACKGROUND;
|
||||||
|
|
||||||
|
service->sendToPhone(p);
|
||||||
|
}
|
||||||
|
|
||||||
bool DeviceTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
bool DeviceTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
||||||
{
|
{
|
||||||
meshtastic_Telemetry telemetry = getDeviceTelemetry();
|
meshtastic_Telemetry telemetry = getDeviceTelemetry();
|
||||||
|
@ -42,7 +42,10 @@ class DeviceTelemetryModule : private concurrency::OSThread, public ProtobufModu
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
meshtastic_Telemetry getDeviceTelemetry();
|
meshtastic_Telemetry getDeviceTelemetry();
|
||||||
uint32_t sendToPhoneIntervalMs = SECONDS_IN_MINUTE * 1000; // Send to phone every minute
|
void sendLocalStatsToPhone();
|
||||||
|
uint32_t sendToPhoneIntervalMs = SECONDS_IN_MINUTE * 1000; // Send to phone every minute
|
||||||
|
uint32_t sendStatsToPhoneIntervalMs = 15 * SECONDS_IN_MINUTE * 1000; // Send stats to phone every 15 minutes
|
||||||
|
uint32_t lastSentStatsToPhone = 0;
|
||||||
uint32_t lastSentToMesh = 0;
|
uint32_t lastSentToMesh = 0;
|
||||||
|
|
||||||
void refreshUptime()
|
void refreshUptime()
|
||||||
|
@ -289,6 +289,7 @@ bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m
|
|||||||
bool hasSensor = false;
|
bool hasSensor = false;
|
||||||
m->time = getTime();
|
m->time = getTime();
|
||||||
m->which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
m->which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
||||||
|
m->variant.environment_metrics = meshtastic_EnvironmentMetrics_init_zero;
|
||||||
|
|
||||||
#ifdef T1000X_SENSOR_EN // add by WayenWeng
|
#ifdef T1000X_SENSOR_EN // add by WayenWeng
|
||||||
valid = valid && t1000xSensor.getMetrics(m);
|
valid = valid && t1000xSensor.getMetrics(m);
|
||||||
|
@ -32,6 +32,9 @@ bool AHT10Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
|||||||
sensors_event_t humidity, temp;
|
sensors_event_t humidity, temp;
|
||||||
aht10.getEvent(&humidity, &temp);
|
aht10.getEvent(&humidity, &temp);
|
||||||
|
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
|
||||||
measurement->variant.environment_metrics.temperature = temp.temperature;
|
measurement->variant.environment_metrics.temperature = temp.temperature;
|
||||||
measurement->variant.environment_metrics.relative_humidity = humidity.relative_humidity;
|
measurement->variant.environment_metrics.relative_humidity = humidity.relative_humidity;
|
||||||
|
|
||||||
|
@ -31,6 +31,10 @@ void BME280Sensor::setup() {}
|
|||||||
|
|
||||||
bool BME280Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool BME280Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
|
||||||
LOG_DEBUG("BME280Sensor::getMetrics\n");
|
LOG_DEBUG("BME280Sensor::getMetrics\n");
|
||||||
bme280.takeForcedMeasurement();
|
bme280.takeForcedMeasurement();
|
||||||
measurement->variant.environment_metrics.temperature = bme280.readTemperature();
|
measurement->variant.environment_metrics.temperature = bme280.readTemperature();
|
||||||
|
@ -54,6 +54,13 @@ bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
|||||||
{
|
{
|
||||||
if (bme680.getData(BSEC_OUTPUT_RAW_PRESSURE).signal == 0)
|
if (bme680.getData(BSEC_OUTPUT_RAW_PRESSURE).signal == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
measurement->variant.environment_metrics.has_gas_resistance = true;
|
||||||
|
measurement->variant.environment_metrics.has_iaq = true;
|
||||||
|
|
||||||
measurement->variant.environment_metrics.temperature = bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE).signal;
|
measurement->variant.environment_metrics.temperature = bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE).signal;
|
||||||
measurement->variant.environment_metrics.relative_humidity =
|
measurement->variant.environment_metrics.relative_humidity =
|
||||||
bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY).signal;
|
bme680.getData(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY).signal;
|
||||||
|
@ -26,6 +26,9 @@ void BMP085Sensor::setup() {}
|
|||||||
|
|
||||||
bool BMP085Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool BMP085Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
|
||||||
LOG_DEBUG("BMP085Sensor::getMetrics\n");
|
LOG_DEBUG("BMP085Sensor::getMetrics\n");
|
||||||
measurement->variant.environment_metrics.temperature = bmp085.readTemperature();
|
measurement->variant.environment_metrics.temperature = bmp085.readTemperature();
|
||||||
measurement->variant.environment_metrics.barometric_pressure = bmp085.readPressure() / 100.0F;
|
measurement->variant.environment_metrics.barometric_pressure = bmp085.readPressure() / 100.0F;
|
||||||
|
@ -31,6 +31,9 @@ void BMP280Sensor::setup() {}
|
|||||||
|
|
||||||
bool BMP280Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool BMP280Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
|
||||||
LOG_DEBUG("BMP280Sensor::getMetrics\n");
|
LOG_DEBUG("BMP280Sensor::getMetrics\n");
|
||||||
bmp280.takeForcedMeasurement();
|
bmp280.takeForcedMeasurement();
|
||||||
measurement->variant.environment_metrics.temperature = bmp280.readTemperature();
|
measurement->variant.environment_metrics.temperature = bmp280.readTemperature();
|
||||||
|
@ -35,6 +35,12 @@ void DFRobotLarkSensor::setup() {}
|
|||||||
|
|
||||||
bool DFRobotLarkSensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool DFRobotLarkSensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
measurement->variant.environment_metrics.has_wind_speed = true;
|
||||||
|
measurement->variant.environment_metrics.has_wind_direction = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
|
||||||
measurement->variant.environment_metrics.temperature = lark.getValue("Temp").toFloat();
|
measurement->variant.environment_metrics.temperature = lark.getValue("Temp").toFloat();
|
||||||
measurement->variant.environment_metrics.relative_humidity = lark.getValue("Humi").toFloat();
|
measurement->variant.environment_metrics.relative_humidity = lark.getValue("Humi").toFloat();
|
||||||
measurement->variant.environment_metrics.wind_speed = lark.getValue("Speed").toFloat();
|
measurement->variant.environment_metrics.wind_speed = lark.getValue("Speed").toFloat();
|
||||||
|
@ -32,6 +32,9 @@ void INA219Sensor::setup() {}
|
|||||||
|
|
||||||
bool INA219Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool INA219Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_voltage = true;
|
||||||
|
measurement->variant.environment_metrics.has_current = true;
|
||||||
|
|
||||||
measurement->variant.environment_metrics.voltage = ina219.getBusVoltage_V();
|
measurement->variant.environment_metrics.voltage = ina219.getBusVoltage_V();
|
||||||
measurement->variant.environment_metrics.current = ina219.getCurrent_mA() * INA219_MULTIPLIER;
|
measurement->variant.environment_metrics.current = ina219.getCurrent_mA() * INA219_MULTIPLIER;
|
||||||
return true;
|
return true;
|
||||||
|
@ -26,6 +26,9 @@ void INA260Sensor::setup() {}
|
|||||||
|
|
||||||
bool INA260Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool INA260Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_voltage = true;
|
||||||
|
measurement->variant.environment_metrics.has_current = true;
|
||||||
|
|
||||||
// mV conversion to V
|
// mV conversion to V
|
||||||
measurement->variant.environment_metrics.voltage = ina260.readBusVoltage() / 1000;
|
measurement->variant.environment_metrics.voltage = ina260.readBusVoltage() / 1000;
|
||||||
measurement->variant.environment_metrics.current = ina260.readCurrent();
|
measurement->variant.environment_metrics.current = ina260.readCurrent();
|
||||||
|
@ -67,6 +67,9 @@ bool INA3221Sensor::getEnvironmentMetrics(meshtastic_Telemetry *measurement)
|
|||||||
{
|
{
|
||||||
struct _INA3221Measurement m = getMeasurement(ENV_CH);
|
struct _INA3221Measurement m = getMeasurement(ENV_CH);
|
||||||
|
|
||||||
|
measurement->variant.environment_metrics.has_voltage = true;
|
||||||
|
measurement->variant.environment_metrics.has_current = true;
|
||||||
|
|
||||||
measurement->variant.environment_metrics.voltage = m.voltage;
|
measurement->variant.environment_metrics.voltage = m.voltage;
|
||||||
measurement->variant.environment_metrics.current = m.current;
|
measurement->variant.environment_metrics.current = m.current;
|
||||||
|
|
||||||
@ -77,6 +80,13 @@ bool INA3221Sensor::getPowerMetrics(meshtastic_Telemetry *measurement)
|
|||||||
{
|
{
|
||||||
struct _INA3221Measurements m = getMeasurements();
|
struct _INA3221Measurements m = getMeasurements();
|
||||||
|
|
||||||
|
measurement->variant.power_metrics.has_ch1_voltage = true;
|
||||||
|
measurement->variant.power_metrics.has_ch1_current = true;
|
||||||
|
measurement->variant.power_metrics.has_ch2_voltage = true;
|
||||||
|
measurement->variant.power_metrics.has_ch2_current = true;
|
||||||
|
measurement->variant.power_metrics.has_ch3_voltage = true;
|
||||||
|
measurement->variant.power_metrics.has_ch3_current = true;
|
||||||
|
|
||||||
measurement->variant.power_metrics.ch1_voltage = m.measurements[INA3221_CH1].voltage;
|
measurement->variant.power_metrics.ch1_voltage = m.measurements[INA3221_CH1].voltage;
|
||||||
measurement->variant.power_metrics.ch1_current = m.measurements[INA3221_CH1].current;
|
measurement->variant.power_metrics.ch1_current = m.measurements[INA3221_CH1].current;
|
||||||
measurement->variant.power_metrics.ch2_voltage = m.measurements[INA3221_CH2].voltage;
|
measurement->variant.power_metrics.ch2_voltage = m.measurements[INA3221_CH2].voltage;
|
||||||
|
@ -27,6 +27,9 @@ void LPS22HBSensor::setup()
|
|||||||
|
|
||||||
bool LPS22HBSensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool LPS22HBSensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
|
||||||
sensors_event_t temp;
|
sensors_event_t temp;
|
||||||
sensors_event_t pressure;
|
sensors_event_t pressure;
|
||||||
lps22hb.getEvent(&pressure, &temp);
|
lps22hb.getEvent(&pressure, &temp);
|
||||||
|
@ -26,6 +26,8 @@ void MCP9808Sensor::setup()
|
|||||||
|
|
||||||
bool MCP9808Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool MCP9808Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
|
||||||
LOG_DEBUG("MCP9808Sensor::getMetrics\n");
|
LOG_DEBUG("MCP9808Sensor::getMetrics\n");
|
||||||
measurement->variant.environment_metrics.temperature = mcp9808.readTempC();
|
measurement->variant.environment_metrics.temperature = mcp9808.readTempC();
|
||||||
return true;
|
return true;
|
||||||
|
@ -32,6 +32,7 @@ void MLX90632Sensor::setup() {}
|
|||||||
|
|
||||||
bool MLX90632Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool MLX90632Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
measurement->variant.environment_metrics.temperature = mlx.getObjectTemp(); // Get the object temperature in Fahrenheit
|
measurement->variant.environment_metrics.temperature = mlx.getObjectTemp(); // Get the object temperature in Fahrenheit
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -45,6 +45,7 @@ bool NAU7802Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
measurement->variant.environment_metrics.has_weight = true;
|
||||||
// Check if we have correct calibration values after powerup
|
// Check if we have correct calibration values after powerup
|
||||||
LOG_DEBUG("Offset: %d, Calibration factor: %.2f\n", nau7802.getZeroOffset(), nau7802.getCalibrationFactor());
|
LOG_DEBUG("Offset: %d, Calibration factor: %.2f\n", nau7802.getZeroOffset(), nau7802.getCalibrationFactor());
|
||||||
measurement->variant.environment_metrics.weight = nau7802.getWeight() / 1000; // sample is in kg
|
measurement->variant.environment_metrics.weight = nau7802.getWeight() / 1000; // sample is in kg
|
||||||
|
@ -38,6 +38,7 @@ void OPT3001Sensor::setup()
|
|||||||
|
|
||||||
bool OPT3001Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool OPT3001Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_lux = true;
|
||||||
OPT3001 result = opt3001.readResult();
|
OPT3001 result = opt3001.readResult();
|
||||||
|
|
||||||
measurement->variant.environment_metrics.lux = result.lux;
|
measurement->variant.environment_metrics.lux = result.lux;
|
||||||
|
@ -23,6 +23,7 @@ void RCWL9620Sensor::setup() {}
|
|||||||
|
|
||||||
bool RCWL9620Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool RCWL9620Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_distance = true;
|
||||||
LOG_DEBUG("RCWL9620Sensor::getMetrics\n");
|
LOG_DEBUG("RCWL9620Sensor::getMetrics\n");
|
||||||
measurement->variant.environment_metrics.distance = getDistance();
|
measurement->variant.environment_metrics.distance = getDistance();
|
||||||
return true;
|
return true;
|
||||||
|
@ -27,6 +27,8 @@ void SHT31Sensor::setup()
|
|||||||
|
|
||||||
bool SHT31Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool SHT31Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
measurement->variant.environment_metrics.temperature = sht31.readTemperature();
|
measurement->variant.environment_metrics.temperature = sht31.readTemperature();
|
||||||
measurement->variant.environment_metrics.relative_humidity = sht31.readHumidity();
|
measurement->variant.environment_metrics.relative_humidity = sht31.readHumidity();
|
||||||
|
|
||||||
|
@ -39,6 +39,9 @@ void SHT4XSensor::setup()
|
|||||||
|
|
||||||
bool SHT4XSensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool SHT4XSensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
|
||||||
sensors_event_t humidity, temp;
|
sensors_event_t humidity, temp;
|
||||||
sht4x.getEvent(&humidity, &temp);
|
sht4x.getEvent(&humidity, &temp);
|
||||||
measurement->variant.environment_metrics.temperature = temp.temperature;
|
measurement->variant.environment_metrics.temperature = temp.temperature;
|
||||||
|
@ -26,6 +26,9 @@ void SHTC3Sensor::setup()
|
|||||||
|
|
||||||
bool SHTC3Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool SHTC3Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
|
||||||
sensors_event_t humidity, temp;
|
sensors_event_t humidity, temp;
|
||||||
shtc3.getEvent(&humidity, &temp);
|
shtc3.getEvent(&humidity, &temp);
|
||||||
|
|
||||||
|
@ -108,6 +108,9 @@ float T1000xSensor::getTemp()
|
|||||||
|
|
||||||
bool T1000xSensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool T1000xSensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_lux = true;
|
||||||
|
|
||||||
measurement->variant.environment_metrics.temperature = getTemp();
|
measurement->variant.environment_metrics.temperature = getTemp();
|
||||||
measurement->variant.environment_metrics.lux = getLux();
|
measurement->variant.environment_metrics.lux = getLux();
|
||||||
return true;
|
return true;
|
||||||
|
@ -29,6 +29,7 @@ void TSL2591Sensor::setup()
|
|||||||
|
|
||||||
bool TSL2591Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool TSL2591Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_lux = true;
|
||||||
uint32_t lum = tsl.getFullLuminosity();
|
uint32_t lum = tsl.getFullLuminosity();
|
||||||
uint16_t ir, full;
|
uint16_t ir, full;
|
||||||
ir = lum >> 16;
|
ir = lum >> 16;
|
||||||
|
@ -53,6 +53,9 @@ float VEML7700Sensor::getResolution(void)
|
|||||||
|
|
||||||
bool VEML7700Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool VEML7700Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
measurement->variant.environment_metrics.has_lux = true;
|
||||||
|
measurement->variant.environment_metrics.has_white_lux = true;
|
||||||
|
|
||||||
int16_t white;
|
int16_t white;
|
||||||
measurement->variant.environment_metrics.lux = veml7700.readLux(VEML_LUX_AUTO);
|
measurement->variant.environment_metrics.lux = veml7700.readLux(VEML_LUX_AUTO);
|
||||||
white = veml7700.readWhite(true);
|
white = veml7700.readWhite(true);
|
||||||
|
Loading…
Reference in New Issue
Block a user