diff --git a/mesh.proto b/mesh.proto index 8e6a4ec..30aaffe 100644 --- a/mesh.proto +++ b/mesh.proto @@ -1053,7 +1053,7 @@ message NodeInfo { */ fixed32 last_heard = 5; /* - * The latest telemetry data for the node. + * The latest device telemetry data for the node. */ Telemetry telemetry = 6; } diff --git a/radioconfig.proto b/radioconfig.proto index 8a46c6e..5c13e4e 100644 --- a/radioconfig.proto +++ b/radioconfig.proto @@ -741,42 +741,42 @@ message RadioConfig { reserved 136; /* - * Preferences for the Teletry Module + * Preferences for the Telemetry Module (Environment) * FIXME - Move this out of UserPreferences and into a section for module configuration. * Enable/Disable the telemetry measurement module measurement collection */ - bool telemetry_module_measurement_enabled = 140; + bool telemetry_module_environment_measurement_enabled = 140; /* * Enable/Disable the telemetry measurement module on-device display */ - bool telemetry_module_screen_enabled = 141; + bool telemetry_module_environment_screen_enabled = 141; /* * Sometimes sensor reads can fail. * If this happens, we will retry a configurable number of attempts, * each attempt will be delayed by the minimum required refresh rate for that sensor */ - uint32 telemetry_module_read_error_count_threshold = 142; + uint32 telemetry_module_environment_read_error_count_threshold = 142; /* * Interval in seconds of how often we should try to send our * measurements to the mesh */ - uint32 telemetry_module_update_interval = 143; + uint32 telemetry_module_device_update_interval = 143; /* * Sometimes we can end up with more than read_error_count_threshold failures. * In this case, we will stop trying to read from the sensor for a while. * Wait this long until trying to read from the sensor again */ - uint32 telemetry_module_recovery_interval = 144; + uint32 telemetry_module_environment_recovery_interval = 144; /* * We'll always read the sensor in Celsius, but sometimes we might want to * display the results in Fahrenheit as a "user preference". */ - bool telemetry_module_display_fahrenheit = 145; + bool telemetry_module_environment_display_fahrenheit = 145; /* * TODO: REPLACE @@ -835,12 +835,12 @@ message RadioConfig { /* * Specify the sensor type */ - TelemetrySensorType telemetry_module_sensor_type = 146; + TelemetrySensorType telemetry_module_environment_sensor_type = 146; /* * Specify the peferred GPIO Pin for sensor readings */ - uint32 telemetry_module_sensor_pin = 147; + uint32 telemetry_module_environment_sensor_pin = 147; /* * Bit field of boolean configuration options for POSITION messages @@ -968,6 +968,12 @@ message RadioConfig { * Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation. */ float adc_multiplier_override = 175; + + /* + * Interval in seconds of how often we should try to send our + * environent measurements to the mesh + */ + uint32 telemetry_module_environment_update_interval = 177; } /* diff --git a/telemetry.options b/telemetry.options new file mode 100644 index 0000000..6c80df9 --- /dev/null +++ b/telemetry.options @@ -0,0 +1,4 @@ +# options for nanopb +# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options + + diff --git a/telemetry.proto b/telemetry.proto index 03038a3..1c36be7 100644 --- a/telemetry.proto +++ b/telemetry.proto @@ -1,11 +1,75 @@ syntax = "proto3"; + +option java_package = "com.geeksville.mesh"; +option optimize_for = LITE_RUNTIME; option go_package = "github.com/meshtastic/gomeshproto"; +option java_outer_classname = "TelemetryProtos"; + /* - * TODO: REPLACE + * Key native device metrics such as battery level + */ +message DeviceMetrics { + /* + * 1-100 (0 means powered) + */ + uint32 battery_level = 1; + + /* + * Voltage measured + */ + float voltage = 2; + + /* + * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). + */ + float channel_utilization = 3; + + /* + * Percent of airtime for transmission used within the last hour. + */ + float air_util_tx = 4; +} + +/* + * Weather station or other environmental metrics + */ +message EnvironmentMetrics { + /* + * Temperature measured + */ + float temperature = 1; + + /* + * Relative humidity percent measured + */ + float relative_humidity = 2; + + /* + * Barometric pressure in hPA measured + */ + float barometric_pressure = 3; + + /* + * Gas resistance in mOhm measured + */ + float gas_resistance = 4; + + /* + * Voltage measured + */ + float voltage = 5; + + /* + * Current measured + */ + float current = 6; +} + +/* + * Types of Measurements the telemetry module is equipped to handle */ message Telemetry { - /* * This is usually not sent over the mesh (to save space), but it is sent * from the phone so that the local device can set its RTC If it is sent over @@ -15,54 +79,15 @@ message Telemetry { */ fixed32 time = 1; - /* - * 1-100 (0 means powered) - */ - uint32 battery_level = 2; + oneof variant { + /* + * Key native device metrics such as battery level + */ + DeviceMetrics device_metrics = 2; - /* - * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). - */ - float channel_utilization = 3; - - /* - * Percent of airtime for transmission used within the last hour. - */ - float air_util_tx = 4; - - /* - * This is sent by node only if it a router and if hop_limit is set to 0 - * and is not being sent as a reliable message. - */ - bool router_heartbeat = 5; - - /* - * Temperature measured - */ - float temperature = 6; - - /* - * Relative humidity percent measured - */ - float relative_humidity = 7; - - /* - * Barometric pressure in hPA measured - */ - float barometric_pressure = 8; - - /* - * Gas resistance in mOhm measured - */ - float gas_resistance = 9; - - /* - * Voltage measured - */ - float voltage = 10; - - /* - * Current measured - */ - float current = 11; + /* + * Weather station or other environmental metrics + */ + EnvironmentMetrics environment_metrics = 3; + } }