From 9303d24b691595bb1f1d6b126f11c414f5bcf6ac Mon Sep 17 00:00:00 2001 From: Janez T Date: Wed, 18 Mar 2026 14:37:06 +0100 Subject: [PATCH] fix: Remove duplicate sensor cards for temperature, humidity, pressure Core telemetry fields (temperature, humidity, pressure, voltage) were shown twice: once from the ContactTelemetry top-level fields and again from extraSensorData channel-keyed entries (e.g. temperature_2). Now skips extraSensorData keys that are already represented by core telemetry cards. --- lib/widgets/sensors/sensor_telemetry_card.dart | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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);