kopia lustrzana https://github.com/meshtastic/protobufs
				
				
				
			
		
			
				
	
	
		
			726 wiersze
		
	
	
		
			12 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
			
		
		
	
	
			726 wiersze
		
	
	
		
			12 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
 | |
|    */
 | |
|   optional uint32 pm10_standard = 1;
 | |
| 
 | |
|   /*
 | |
|    * Concentration Units Standard PM2.5
 | |
|    */
 | |
|   optional uint32 pm25_standard = 2;
 | |
| 
 | |
|   /*
 | |
|    * Concentration Units Standard PM10.0
 | |
|    */
 | |
|   optional uint32 pm100_standard = 3;
 | |
| 
 | |
|   /*
 | |
|    * Concentration Units Environmental PM1.0
 | |
|    */
 | |
|   optional uint32 pm10_environmental = 4;
 | |
| 
 | |
|   /*
 | |
|    * Concentration Units Environmental PM2.5
 | |
|    */
 | |
|   optional uint32 pm25_environmental = 5;
 | |
| 
 | |
|   /*
 | |
|    * Concentration Units Environmental PM10.0
 | |
|    */
 | |
|   optional uint32 pm100_environmental = 6;
 | |
| 
 | |
|   /*
 | |
|    * 0.3um Particle Count
 | |
|    */
 | |
|   optional uint32 particles_03um = 7;
 | |
| 
 | |
|   /*
 | |
|    * 0.5um Particle Count
 | |
|    */
 | |
|   optional uint32 particles_05um = 8;
 | |
| 
 | |
|   /*
 | |
|    * 1.0um Particle Count
 | |
|    */
 | |
|   optional uint32 particles_10um = 9;
 | |
| 
 | |
|   /*
 | |
|    * 2.5um Particle Count
 | |
|    */
 | |
|   optional uint32 particles_25um = 10;
 | |
| 
 | |
|   /*
 | |
|    * 5.0um Particle Count
 | |
|    */
 | |
|   optional uint32 particles_50um = 11;
 | |
| 
 | |
|   /*
 | |
|    * 10.0um Particle Count
 | |
|    */
 | |
|   optional uint32 particles_100um = 12;
 | |
| 
 | |
|   /*
 | |
|    * CO2 concentration in ppm
 | |
|    */
 | |
|   optional uint32 co2 = 13;
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * 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;
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * 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;
 | |
| }
 |