kopia lustrzana https://github.com/meshtastic/protobufs
800 wiersze
14 KiB
Protocol Buffer
800 wiersze
14 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package meshtastic;
|
|
|
|
option csharp_namespace = "Meshtastic.Protobufs";
|
|
option go_package = "github.com/meshtastic/go/generated";
|
|
option java_outer_classname = "TelemetryProtos";
|
|
option java_package = "com.geeksville.mesh";
|
|
option swift_prefix = "";
|
|
|
|
/*
|
|
* Key native device metrics such as battery level
|
|
*/
|
|
message DeviceMetrics {
|
|
/*
|
|
* 0-100 (>100 means powered)
|
|
*/
|
|
optional uint32 battery_level = 1;
|
|
|
|
/*
|
|
* Voltage measured
|
|
*/
|
|
optional float voltage = 2;
|
|
|
|
/*
|
|
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
|
*/
|
|
optional float channel_utilization = 3;
|
|
|
|
/*
|
|
* Percent of airtime for transmission used within the last hour.
|
|
*/
|
|
optional float air_util_tx = 4;
|
|
|
|
/*
|
|
* How long the device has been running since the last reboot (in seconds)
|
|
*/
|
|
optional uint32 uptime_seconds = 5;
|
|
}
|
|
|
|
/*
|
|
* Weather station or other environmental metrics
|
|
*/
|
|
message EnvironmentMetrics {
|
|
/*
|
|
* Temperature measured
|
|
*/
|
|
optional float temperature = 1;
|
|
|
|
/*
|
|
* Relative humidity percent measured
|
|
*/
|
|
optional float relative_humidity = 2;
|
|
|
|
/*
|
|
* Barometric pressure in hPA measured
|
|
*/
|
|
optional float barometric_pressure = 3;
|
|
|
|
/*
|
|
* Gas resistance in MOhm measured
|
|
*/
|
|
optional float gas_resistance = 4;
|
|
|
|
/*
|
|
* Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
|
|
*/
|
|
optional float voltage = 5;
|
|
|
|
/*
|
|
* Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
|
|
*/
|
|
optional float current = 6;
|
|
|
|
/*
|
|
* relative scale IAQ value as measured by Bosch BME680 . value 0-500.
|
|
* Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
|
|
*/
|
|
optional uint32 iaq = 7;
|
|
|
|
/*
|
|
* RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
|
|
*/
|
|
optional float distance = 8;
|
|
|
|
/*
|
|
* VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
|
|
*/
|
|
optional float lux = 9;
|
|
|
|
/*
|
|
* VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
|
|
*/
|
|
optional float white_lux = 10;
|
|
|
|
/*
|
|
* Infrared lux
|
|
*/
|
|
optional float ir_lux = 11;
|
|
|
|
/*
|
|
* Ultraviolet lux
|
|
*/
|
|
optional float uv_lux = 12;
|
|
|
|
/*
|
|
* Wind direction in degrees
|
|
* 0 degrees = North, 90 = East, etc...
|
|
*/
|
|
optional uint32 wind_direction = 13;
|
|
|
|
/*
|
|
* Wind speed in m/s
|
|
*/
|
|
optional float wind_speed = 14;
|
|
|
|
/*
|
|
* Weight in KG
|
|
*/
|
|
optional float weight = 15;
|
|
|
|
/*
|
|
* Wind gust in m/s
|
|
*/
|
|
optional float wind_gust = 16;
|
|
|
|
/*
|
|
* Wind lull in m/s
|
|
*/
|
|
optional float wind_lull = 17;
|
|
|
|
/*
|
|
* Radiation in µR/h
|
|
*/
|
|
optional float radiation = 18;
|
|
|
|
/*
|
|
* Rainfall in the last hour in mm
|
|
*/
|
|
optional float rainfall_1h = 19;
|
|
|
|
/*
|
|
* Rainfall in the last 24 hours in mm
|
|
*/
|
|
optional float rainfall_24h = 20;
|
|
|
|
/*
|
|
* Soil moisture measured (% 1-100)
|
|
*/
|
|
optional uint32 soil_moisture = 21;
|
|
|
|
/*
|
|
* Soil temperature measured (*C)
|
|
*/
|
|
optional float soil_temperature = 22;
|
|
}
|
|
|
|
/*
|
|
* Power Metrics (voltage / current / etc)
|
|
*/
|
|
message PowerMetrics {
|
|
/*
|
|
* Voltage (Ch1)
|
|
*/
|
|
optional float ch1_voltage = 1;
|
|
|
|
/*
|
|
* Current (Ch1)
|
|
*/
|
|
optional float ch1_current = 2;
|
|
|
|
/*
|
|
* Voltage (Ch2)
|
|
*/
|
|
optional float ch2_voltage = 3;
|
|
|
|
/*
|
|
* Current (Ch2)
|
|
*/
|
|
optional float ch2_current = 4;
|
|
|
|
/*
|
|
* Voltage (Ch3)
|
|
*/
|
|
optional float ch3_voltage = 5;
|
|
|
|
/*
|
|
* Current (Ch3)
|
|
*/
|
|
optional float ch3_current = 6;
|
|
|
|
/*
|
|
* Voltage (Ch4)
|
|
*/
|
|
optional float ch4_voltage = 7;
|
|
|
|
/*
|
|
* Current (Ch4)
|
|
*/
|
|
optional float ch4_current = 8;
|
|
|
|
/*
|
|
* Voltage (Ch5)
|
|
*/
|
|
optional float ch5_voltage = 9;
|
|
|
|
/*
|
|
* Current (Ch5)
|
|
*/
|
|
optional float ch5_current = 10;
|
|
|
|
/*
|
|
* Voltage (Ch6)
|
|
*/
|
|
optional float ch6_voltage = 11;
|
|
|
|
/*
|
|
* Current (Ch6)
|
|
*/
|
|
optional float ch6_current = 12;
|
|
|
|
/*
|
|
* Voltage (Ch7)
|
|
*/
|
|
optional float ch7_voltage = 13;
|
|
|
|
/*
|
|
* Current (Ch7)
|
|
*/
|
|
optional float ch7_current = 14;
|
|
|
|
/*
|
|
* Voltage (Ch8)
|
|
*/
|
|
optional float ch8_voltage = 15;
|
|
|
|
/*
|
|
* Current (Ch8)
|
|
*/
|
|
optional float ch8_current = 16;
|
|
}
|
|
|
|
/*
|
|
* Air quality metrics
|
|
*/
|
|
message AirQualityMetrics {
|
|
/*
|
|
* Concentration Units Standard PM1.0 in ug/m3
|
|
*/
|
|
optional uint32 pm10_standard = 1;
|
|
|
|
/*
|
|
* Concentration Units Standard PM2.5 in ug/m3
|
|
*/
|
|
optional uint32 pm25_standard = 2;
|
|
|
|
/*
|
|
* Concentration Units Standard PM10.0 in ug/m3
|
|
*/
|
|
optional uint32 pm100_standard = 3;
|
|
|
|
/*
|
|
* Concentration Units Environmental PM1.0 in ug/m3
|
|
*/
|
|
optional uint32 pm10_environmental = 4;
|
|
|
|
/*
|
|
* Concentration Units Environmental PM2.5 in ug/m3
|
|
*/
|
|
optional uint32 pm25_environmental = 5;
|
|
|
|
/*
|
|
* Concentration Units Environmental PM10.0 in ug/m3
|
|
*/
|
|
optional uint32 pm100_environmental = 6;
|
|
|
|
/*
|
|
* 0.3um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_03um = 7;
|
|
|
|
/*
|
|
* 0.5um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_05um = 8;
|
|
|
|
/*
|
|
* 1.0um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_10um = 9;
|
|
|
|
/*
|
|
* 2.5um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_25um = 10;
|
|
|
|
/*
|
|
* 5.0um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_50um = 11;
|
|
|
|
/*
|
|
* 10.0um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_100um = 12;
|
|
|
|
/*
|
|
* CO2 concentration in ppm
|
|
*/
|
|
optional uint32 co2 = 13;
|
|
|
|
/*
|
|
* CO2 sensor temperature in degC
|
|
*/
|
|
optional float co2_temperature = 14;
|
|
|
|
/*
|
|
* CO2 sensor relative humidity in %
|
|
*/
|
|
optional float co2_humidity = 15;
|
|
|
|
/*
|
|
* Formaldehyde sensor formaldehyde concentration in ppb
|
|
*/
|
|
optional float form_formaldehyde = 16;
|
|
|
|
/*
|
|
* Formaldehyde sensor relative humidity in %RH
|
|
*/
|
|
optional float form_humidity = 17;
|
|
|
|
/*
|
|
* Formaldehyde sensor temperature in degrees Celsius
|
|
*/
|
|
optional float form_temperature = 18;
|
|
|
|
/*
|
|
* Concentration Units Standard PM4.0 in ug/m3
|
|
*/
|
|
optional uint32 pm40_standard = 19;
|
|
|
|
/*
|
|
* 4.0um Particle Count in #/0.1l
|
|
*/
|
|
optional uint32 particles_40um = 20;
|
|
|
|
/*
|
|
* PM Sensor Temperature
|
|
*/
|
|
optional float pm_temperature = 21;
|
|
|
|
/*
|
|
* PM Sensor humidity
|
|
*/
|
|
optional float pm_humidity = 22;
|
|
|
|
/*
|
|
* PM Sensor VOC Index
|
|
*/
|
|
optional float pm_voc_idx = 23;
|
|
|
|
/*
|
|
* PM Sensor NOx Index
|
|
*/
|
|
optional float pm_nox_idx = 24;
|
|
|
|
/*
|
|
* Typical Particle Size in um
|
|
*/
|
|
optional float particles_tps = 25;
|
|
}
|
|
|
|
/*
|
|
* Local device mesh statistics
|
|
*/
|
|
message LocalStats {
|
|
/*
|
|
* How long the device has been running since the last reboot (in seconds)
|
|
*/
|
|
uint32 uptime_seconds = 1;
|
|
/*
|
|
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
|
*/
|
|
float channel_utilization = 2;
|
|
/*
|
|
* Percent of airtime for transmission used within the last hour.
|
|
*/
|
|
float air_util_tx = 3;
|
|
|
|
/*
|
|
* Number of packets sent
|
|
*/
|
|
uint32 num_packets_tx = 4;
|
|
|
|
/*
|
|
* Number of packets received (both good and bad)
|
|
*/
|
|
uint32 num_packets_rx = 5;
|
|
|
|
/*
|
|
* Number of packets received that are malformed or violate the protocol
|
|
*/
|
|
uint32 num_packets_rx_bad = 6;
|
|
|
|
/*
|
|
* Number of nodes online (in the past 2 hours)
|
|
*/
|
|
uint32 num_online_nodes = 7;
|
|
|
|
/*
|
|
* Number of nodes total
|
|
*/
|
|
uint32 num_total_nodes = 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.
|
|
*/
|
|
uint32 num_rx_dupe = 9;
|
|
|
|
/*
|
|
* Number of packets we transmitted that were a relay for others (not originating from ourselves).
|
|
*/
|
|
uint32 num_tx_relay = 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.
|
|
*/
|
|
uint32 num_tx_relay_canceled = 11;
|
|
|
|
/*
|
|
* Number of bytes used in the heap
|
|
*/
|
|
uint32 heap_total_bytes = 12;
|
|
|
|
/*
|
|
* Number of bytes free in the heap
|
|
*/
|
|
uint32 heap_free_bytes = 13;
|
|
}
|
|
|
|
/*
|
|
* Health telemetry metrics
|
|
*/
|
|
message HealthMetrics {
|
|
/*
|
|
* Heart rate (beats per minute)
|
|
*/
|
|
optional uint32 heart_bpm = 1;
|
|
|
|
/*
|
|
* SpO2 (blood oxygen saturation) level
|
|
*/
|
|
optional uint32 spO2 = 2;
|
|
|
|
/*
|
|
* Body temperature in degrees Celsius
|
|
*/
|
|
optional float temperature = 3;
|
|
}
|
|
|
|
/*
|
|
* Linux host metrics
|
|
*/
|
|
message HostMetrics {
|
|
/*
|
|
* Host system uptime
|
|
*/
|
|
uint32 uptime_seconds = 1;
|
|
|
|
/*
|
|
* Host system free memory
|
|
*/
|
|
uint64 freemem_bytes = 2;
|
|
|
|
/*
|
|
* Host system disk space free for /
|
|
*/
|
|
uint64 diskfree1_bytes = 3;
|
|
|
|
/*
|
|
* Secondary system disk space free
|
|
*/
|
|
optional uint64 diskfree2_bytes = 4;
|
|
|
|
/*
|
|
* Tertiary disk space free
|
|
*/
|
|
optional uint64 diskfree3_bytes = 5;
|
|
|
|
/*
|
|
* Host system one minute load in 1/100ths
|
|
*/
|
|
uint32 load1 = 6;
|
|
|
|
/*
|
|
* Host system five minute load in 1/100ths
|
|
*/
|
|
uint32 load5 = 7;
|
|
|
|
/*
|
|
* Host system fifteen minute load in 1/100ths
|
|
*/
|
|
uint32 load15 = 8;
|
|
|
|
/*
|
|
* Optional User-provided string for arbitrary host system information
|
|
* that doesn't make sense as a dedicated entry.
|
|
*/
|
|
optional string user_string = 9;
|
|
}
|
|
|
|
/*
|
|
* Types of Measurements the telemetry module is equipped to handle
|
|
*/
|
|
message Telemetry {
|
|
/*
|
|
* Seconds since 1970 - or 0 for unknown/unset
|
|
*/
|
|
fixed32 time = 1;
|
|
|
|
oneof variant {
|
|
/*
|
|
* Key native device metrics such as battery level
|
|
*/
|
|
DeviceMetrics device_metrics = 2;
|
|
|
|
/*
|
|
* Weather station or other environmental metrics
|
|
*/
|
|
EnvironmentMetrics environment_metrics = 3;
|
|
|
|
/*
|
|
* Air quality metrics
|
|
*/
|
|
AirQualityMetrics air_quality_metrics = 4;
|
|
|
|
/*
|
|
* Power Metrics
|
|
*/
|
|
PowerMetrics power_metrics = 5;
|
|
|
|
/*
|
|
* Local device mesh statistics
|
|
*/
|
|
LocalStats local_stats = 6;
|
|
|
|
/*
|
|
* Health telemetry metrics
|
|
*/
|
|
HealthMetrics health_metrics = 7;
|
|
|
|
/*
|
|
* Linux host metrics
|
|
*/
|
|
HostMetrics host_metrics = 8;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Supported I2C Sensors for telemetry in Meshtastic
|
|
*/
|
|
enum TelemetrySensorType {
|
|
/*
|
|
* No external telemetry sensor explicitly set
|
|
*/
|
|
SENSOR_UNSET = 0;
|
|
|
|
/*
|
|
* High accuracy temperature, pressure, humidity
|
|
*/
|
|
BME280 = 1;
|
|
|
|
/*
|
|
* High accuracy temperature, pressure, humidity, and air resistance
|
|
*/
|
|
BME680 = 2;
|
|
|
|
/*
|
|
* Very high accuracy temperature
|
|
*/
|
|
MCP9808 = 3;
|
|
|
|
/*
|
|
* Moderate accuracy current and voltage
|
|
*/
|
|
INA260 = 4;
|
|
|
|
/*
|
|
* Moderate accuracy current and voltage
|
|
*/
|
|
INA219 = 5;
|
|
|
|
/*
|
|
* High accuracy temperature and pressure
|
|
*/
|
|
BMP280 = 6;
|
|
|
|
/*
|
|
* High accuracy temperature and humidity
|
|
*/
|
|
SHTC3 = 7;
|
|
|
|
/*
|
|
* High accuracy pressure
|
|
*/
|
|
LPS22 = 8;
|
|
|
|
/*
|
|
* 3-Axis magnetic sensor
|
|
*/
|
|
QMC6310 = 9;
|
|
|
|
/*
|
|
* 6-Axis inertial measurement sensor
|
|
*/
|
|
QMI8658 = 10;
|
|
|
|
/*
|
|
* 3-Axis magnetic sensor
|
|
*/
|
|
QMC5883L = 11;
|
|
|
|
/*
|
|
* High accuracy temperature and humidity
|
|
*/
|
|
SHT31 = 12;
|
|
|
|
/*
|
|
* PM2.5 air quality sensor
|
|
*/
|
|
PMSA003I = 13;
|
|
|
|
/*
|
|
* INA3221 3 Channel Voltage / Current Sensor
|
|
*/
|
|
INA3221 = 14;
|
|
|
|
/*
|
|
* BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280)
|
|
*/
|
|
BMP085 = 15;
|
|
|
|
/*
|
|
* RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
|
|
*/
|
|
RCWL9620 = 16;
|
|
|
|
/*
|
|
* Sensirion High accuracy temperature and humidity
|
|
*/
|
|
SHT4X = 17;
|
|
|
|
/*
|
|
* VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
|
|
*/
|
|
VEML7700 = 18;
|
|
|
|
/*
|
|
* MLX90632 non-contact IR temperature sensor.
|
|
*/
|
|
MLX90632 = 19;
|
|
|
|
/*
|
|
* TI OPT3001 Ambient Light Sensor
|
|
*/
|
|
OPT3001 = 20;
|
|
|
|
/*
|
|
* Lite On LTR-390UV-01 UV Light Sensor
|
|
*/
|
|
LTR390UV = 21;
|
|
|
|
/*
|
|
* AMS TSL25911FN RGB Light Sensor
|
|
*/
|
|
TSL25911FN = 22;
|
|
|
|
/*
|
|
* AHT10 Integrated temperature and humidity sensor
|
|
*/
|
|
AHT10 = 23;
|
|
|
|
/*
|
|
* DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction)
|
|
*/
|
|
DFROBOT_LARK = 24;
|
|
|
|
/*
|
|
* NAU7802 Scale Chip or compatible
|
|
*/
|
|
NAU7802 = 25;
|
|
|
|
/*
|
|
* BMP3XX High accuracy temperature and pressure
|
|
*/
|
|
BMP3XX = 26;
|
|
|
|
/*
|
|
* ICM-20948 9-Axis digital motion processor
|
|
*/
|
|
ICM20948 = 27;
|
|
|
|
/*
|
|
* MAX17048 1S lipo battery sensor (voltage, state of charge, time to go)
|
|
*/
|
|
MAX17048 = 28;
|
|
|
|
/*
|
|
* Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor
|
|
*/
|
|
CUSTOM_SENSOR = 29;
|
|
|
|
/*
|
|
* MAX30102 Pulse Oximeter and Heart-Rate Sensor
|
|
*/
|
|
MAX30102 = 30;
|
|
|
|
/*
|
|
* MLX90614 non-contact IR temperature sensor
|
|
*/
|
|
MLX90614 = 31;
|
|
|
|
/*
|
|
* SCD40/SCD41 CO2, humidity, temperature sensor
|
|
*/
|
|
SCD4X = 32;
|
|
|
|
/*
|
|
* ClimateGuard RadSens, radiation, Geiger-Muller Tube
|
|
*/
|
|
RADSENS = 33;
|
|
|
|
/*
|
|
* High accuracy current and voltage
|
|
*/
|
|
INA226 = 34;
|
|
|
|
/*
|
|
* DFRobot Gravity tipping bucket rain gauge
|
|
*/
|
|
DFROBOT_RAIN = 35;
|
|
|
|
/*
|
|
* Infineon DPS310 High accuracy pressure and temperature
|
|
*/
|
|
DPS310 = 36;
|
|
|
|
/*
|
|
* RAKWireless RAK12035 Soil Moisture Sensor Module
|
|
*/
|
|
RAK12035 = 37;
|
|
|
|
/*
|
|
* MAX17261 lipo battery gauge
|
|
*/
|
|
MAX17261 = 38;
|
|
|
|
/*
|
|
* PCT2075 Temperature Sensor
|
|
*/
|
|
PCT2075 = 39;
|
|
|
|
/*
|
|
* ADS1X15 ADC
|
|
*/
|
|
ADS1X15 = 40;
|
|
|
|
/*
|
|
* ADS1X15 ADC_ALT
|
|
*/
|
|
ADS1X15_ALT = 41;
|
|
|
|
/*
|
|
* Sensirion SFA30 Formaldehyde sensor
|
|
*/
|
|
SFA30 = 42;
|
|
|
|
/*
|
|
* SEN5X PM SENSORS
|
|
*/
|
|
SEN5X = 43;
|
|
}
|
|
|
|
/*
|
|
* NAU7802 Telemetry configuration, for saving to flash
|
|
*/
|
|
message Nau7802Config {
|
|
/*
|
|
* The offset setting for the NAU7802
|
|
*/
|
|
int32 zeroOffset = 1;
|
|
|
|
/*
|
|
* The calibration factor for the NAU7802
|
|
*/
|
|
float calibrationFactor = 2;
|
|
}
|