diff --git a/lib/widgets/sensors/sensor_telemetry_card.dart b/lib/widgets/sensors/sensor_telemetry_card.dart index e51e9cb..0529dcc 100644 --- a/lib/widgets/sensors/sensor_telemetry_card.dart +++ b/lib/widgets/sensors/sensor_telemetry_card.dart @@ -207,9 +207,23 @@ List sensorMetricOptionsFor( ), ]; + // Keys that are already shown as core telemetry fields above. + // Skip them from extraSensorData to avoid duplicates. + final coreFieldKeys = { + if (batteryMilliVolts != null || batteryPercentage != null) + ...extraSensorData?.keys.where((k) => + k.startsWith('voltage_') || k.startsWith('analog_input_')) ?? [], + if (temperature != null) + ...extraSensorData?.keys.where((k) => k.startsWith('temperature_')) ?? [], + if (humidity != null) + ...extraSensorData?.keys.where((k) => k.startsWith('humidity_')) ?? [], + if (pressure != null) + ...extraSensorData?.keys.where((k) => k.startsWith('pressure_')) ?? [], + }; + if (extraSensorData != null) { for (final key in extraSensorData.keys) { - if (_isTelemetryMetadataKey(key)) { + if (_isTelemetryMetadataKey(key) || coreFieldKeys.contains(key)) { continue; } final metricKey = _parseMetricKey(key);