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.
This commit is contained in:
Janez T
2026-03-18 14:37:06 +01:00
parent 140088fe2f
commit 9303d24b69

View File

@@ -207,9 +207,23 @@ List<SensorMetricOption> sensorMetricOptionsFor(
),
];
// Keys that are already shown as core telemetry fields above.
// Skip them from extraSensorData to avoid duplicates.
final coreFieldKeys = <String>{
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);