diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 8b70ade9b..bfe5b1267 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -241,284 +241,359 @@ message PowerMetrics { } /* - * Air quality metrics + * Local device mesh statistics */ -message AirQualityMetrics { +message LocalStats { /* - * Concentration Units Standard PM1.0 in ug/m3 + * How long the device has been running since the last reboot (in seconds) */ - optional uint32 pm10_standard = 1; - + uint32 uptime_seconds = 1; /* - * Concentration Units Standard PM2.5 in ug/m3 + * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). */ - optional uint32 pm25_standard = 2; + float channel_utilization = 2; + /* + * Percent of airtime for transmission used within the last hour. + */ + float air_util_tx = 3; /* - * Concentration Units Standard PM10.0 in ug/m3 + * Number of packets sent */ - optional uint32 pm100_standard = 3; + uint32 num_packets_tx = 4; /* - * Concentration Units Environmental PM1.0 in ug/m3 + * Number of packets received (both good and bad) */ - optional uint32 pm10_environmental = 4; + uint32 num_packets_rx = 5; /* - * Concentration Units Environmental PM2.5 in ug/m3 + * Number of packets received that are malformed or violate the protocol */ - optional uint32 pm25_environmental = 5; + uint32 num_packets_rx_bad = 6; /* - * Concentration Units Environmental PM10.0 in ug/m3 + * Number of nodes online (in the past 2 hours) */ - optional uint32 pm100_environmental = 6; + uint32 num_online_nodes = 7; /* - * 0.3um Particle Count in #/0.1l + * Number of nodes total */ - optional uint32 particles_03um = 7; + uint32 num_total_nodes = 8; /* - * 0.5um Particle Count in #/0.1l + * Number of received packets that were duplicates (due to multiple nodes relaying). + * If this number is high, there are nodes in the mesh relaying packets when it's unnecessary, for example due to the ROUTER/REPEATER role. */ - optional uint32 particles_05um = 8; + uint32 num_rx_dupe = 9; /* - * 1.0um Particle Count in #/0.1l + * Number of packets we transmitted that were a relay for others (not originating from ourselves). */ - optional uint32 particles_10um = 9; + uint32 num_tx_relay = 10; /* - * 2.5um Particle Count in #/0.1l + * Number of times we canceled a packet to be relayed, because someone else did it before us. + * This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you. */ - optional uint32 particles_25um = 10; + uint32 num_tx_relay_canceled = 11; /* - * 5.0um Particle Count in #/0.1l + * Number of bytes used in the heap */ - optional uint32 particles_50um = 11; + uint32 heap_total_bytes = 12; /* - * 10.0um Particle Count in #/0.1l + * Number of bytes free in the heap */ - optional uint32 particles_100um = 12; + uint32 heap_free_bytes = 13; + + /* + * Number of packets that were dropped because the transmit queue was full. + */ + uint32 num_tx_dropped = 14; /* - * CO2 concentration in ppm + * Noise floor value measured in dBm */ - optional uint32 co2 = 13; + int32 noise_floor = 15; +} +/* + * Health telemetry metrics + */ +message HealthMetrics { /* - * CO2 sensor temperature in degC + * Heart rate (beats per minute) */ - optional float co2_temperature = 14; + optional uint32 heart_bpm = 1; /* - * CO2 sensor relative humidity in % + * SpO2 (blood oxygen saturation) level */ - optional float co2_humidity = 15; + optional uint32 spO2 = 2; /* - * Formaldehyde sensor formaldehyde concentration in ppb + * Body temperature in degrees Celsius */ - optional float form_formaldehyde = 16; + optional float temperature = 3; +} +/* + * Linux host metrics + */ +message HostMetrics { /* - * Formaldehyde sensor relative humidity in %RH + * Host system uptime */ - optional float form_humidity = 17; + uint32 uptime_seconds = 1; /* - * Formaldehyde sensor temperature in degrees Celsius + * Host system free memory */ - optional float form_temperature = 18; + uint64 freemem_bytes = 2; /* - * Concentration Units Standard PM4.0 in ug/m3 + * Host system disk space free for / */ - optional uint32 pm40_standard = 19; + uint64 diskfree1_bytes = 3; /* - * 4.0um Particle Count in #/0.1l + * Secondary system disk space free */ - optional uint32 particles_40um = 20; + optional uint64 diskfree2_bytes = 4; /* - * PM Sensor Temperature + * Tertiary disk space free */ - optional float pm_temperature = 21; + optional uint64 diskfree3_bytes = 5; /* - * PM Sensor humidity + * Host system one minute load in 1/100ths */ - optional float pm_humidity = 22; + uint32 load1 = 6; /* - * PM Sensor VOC Index + * Host system five minute load in 1/100ths */ - optional float pm_voc_idx = 23; + uint32 load5 = 7; /* - * PM Sensor NOx Index + * Host system fifteen minute load in 1/100ths */ - optional float pm_nox_idx = 24; + uint32 load15 = 8; /* - * Typical Particle Size in um + * Optional User-provided string for arbitrary host system information + * that doesn't make sense as a dedicated entry. */ - optional float particles_tps = 25; + optional string user_string = 9; } /* - * Local device mesh statistics + * Plantower PMSA003I Data */ -message LocalStats { +message PMSA003IData { /* - * How long the device has been running since the last reboot (in seconds) + * Concentration Units Standard PM1.0 in ug/m3 */ - uint32 uptime_seconds = 1; + optional uint32 pm10_standard = 1; + /* - * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). + * Concentration Units Standard PM2.5 in ug/m3 */ - float channel_utilization = 2; + optional uint32 pm25_standard = 2; + /* - * Percent of airtime for transmission used within the last hour. + * Concentration Units Standard PM10.0 in ug/m3 */ - float air_util_tx = 3; + optional uint32 pm100_standard = 3; /* - * Number of packets sent + * Concentration Units Environmental PM1.0 in ug/m3 */ - uint32 num_packets_tx = 4; + optional uint32 pm10_environmental = 4; /* - * Number of packets received (both good and bad) + * Concentration Units Environmental PM2.5 in ug/m3 */ - uint32 num_packets_rx = 5; + optional uint32 pm25_environmental = 5; /* - * Number of packets received that are malformed or violate the protocol + * Concentration Units Environmental PM10.0 in ug/m3 */ - uint32 num_packets_rx_bad = 6; + optional uint32 pm100_environmental = 6; /* - * Number of nodes online (in the past 2 hours) + * 0.3um Particle Count in #/0.1l */ - uint32 num_online_nodes = 7; + optional uint32 particles_03um = 7; /* - * Number of nodes total + * 0.5um Particle Count in #/0.1l */ - uint32 num_total_nodes = 8; + optional uint32 particles_05um = 8; /* - * Number of received packets that were duplicates (due to multiple nodes relaying). - * If this number is high, there are nodes in the mesh relaying packets when it's unnecessary, for example due to the ROUTER/REPEATER role. + * 1.0um Particle Count in #/0.1l */ - uint32 num_rx_dupe = 9; + optional uint32 particles_10um = 9; /* - * Number of packets we transmitted that were a relay for others (not originating from ourselves). + * 2.5um Particle Count in #/0.1l */ - uint32 num_tx_relay = 10; + optional uint32 particles_25um = 10; /* - * Number of times we canceled a packet to be relayed, because someone else did it before us. - * This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you. + * 5.0um Particle Count in #/0.1l */ - uint32 num_tx_relay_canceled = 11; + optional uint32 particles_50um = 11; /* - * Number of bytes used in the heap + * 10.0um Particle Count in #/0.1l */ - uint32 heap_total_bytes = 12; + optional uint32 particles_100um = 12; +} +/* + * Sensirion SEN5X Data + */ +message SEN5XData { /* - * Number of bytes free in the heap + * Concentration Units Standard PM1.0 in ug/m3 */ - uint32 heap_free_bytes = 13; + optional uint32 pm10_standard = 1; - /* - * Number of packets that were dropped because the transmit queue was full. - */ - uint32 num_tx_dropped = 14; + /* + * Concentration Units Standard PM2.5 in ug/m3 + */ + optional uint32 pm25_standard = 2; /* - * Noise floor value measured in dBm + * Concentration Units Standard PM4.0 in ug/m3 */ - int32 noise_floor = 15; -} + optional uint32 pm40_standard = 3; -/* - * Health telemetry metrics - */ -message HealthMetrics { /* - * Heart rate (beats per minute) + * Concentration Units Standard PM10.0 in ug/m3 */ - optional uint32 heart_bpm = 1; + optional uint32 pm100_standard = 4; /* - * SpO2 (blood oxygen saturation) level + * 0.5um Particle Count in #/0.1l */ - optional uint32 spO2 = 2; + optional uint32 particles_05um = 5; /* - * Body temperature in degrees Celsius + * 1.0um Particle Count in #/0.1l */ - optional float temperature = 3; + optional uint32 particles_10um = 6; + + /* + * 2.5um Particle Count in #/0.1l + */ + optional uint32 particles_25um = 7; + + /* + * 4.0um Particle Count in #/0.1l + */ + optional uint32 particles_40um = 8; + + /* + * 10.0um Particle Count in #/0.1l + */ + optional uint32 particles_100um = 9; + + /* + * PM Sensor Temperature + */ + optional float pm_temperature = 10; + + /* + * PM Sensor humidity + */ + optional float pm_humidity = 11; + + /* + * PM Sensor VOC Index + */ + optional float pm_voc_idx = 12; + + /* + * PM Sensor NOx Index + */ + optional float pm_nox_idx = 13; + + /* + * Typical Particle Size in um + */ + optional float particles_tps = 14; } /* - * Linux host metrics + * Sensirion SCD4X Data */ -message HostMetrics { +message SCD4XData { /* - * Host system uptime + * CO2 concentration in ppm */ - uint32 uptime_seconds = 1; + optional uint32 co2 = 1; /* - * Host system free memory + * CO2 sensor temperature in degC */ - uint64 freemem_bytes = 2; + optional float co2_temperature = 2; /* - * Host system disk space free for / + * CO2 sensor relative humidity in % */ - uint64 diskfree1_bytes = 3; + optional float co2_humidity = 3; +} +/* + * Sensirion SFA30 Data + */ +message SFA30Data { /* - * Secondary system disk space free + * Formaldehyde sensor formaldehyde concentration in ppb */ - optional uint64 diskfree2_bytes = 4; + optional float form_formaldehyde = 1; /* - * Tertiary disk space free + * Formaldehyde sensor relative humidity in %RH */ - optional uint64 diskfree3_bytes = 5; + optional float form_humidity = 2; /* - * Host system one minute load in 1/100ths + * Formaldehyde sensor temperature in degrees Celsius */ - uint32 load1 = 6; + optional float form_temperature = 3; +} +/* + * Air Quality Metrics + */ +message AirQualityMetrics { /* - * Host system five minute load in 1/100ths + * Plantower PMSA003I Data */ - uint32 load5 = 7; + optional PMSA003IData pmsa003idata = 1; /* - * Host system fifteen minute load in 1/100ths + * Sensirion SEN5X Data */ - uint32 load15 = 8; + optional SEN5XData sen5xdata = 2; /* - * Optional User-provided string for arbitrary host system information - * that doesn't make sense as a dedicated entry. + * Sensirion SCD4X Data */ - optional string user_string = 9; + optional SCD4XData scd4xdata = 3; + + /* + * Sensirion SFA30 Data + */ + optional SFA30Data sfa30data = 4; } /*