feat(environment): add 1-Wire multi-thermometer (DS18B20) display support

Add charting, detail card display, and CSV export for up to 8 1-Wire
temperature sensor channels from the environment_metrics.one_wire_temperature
repeated field.

- EnvironmentMetricsState: ONE_WIRE_TEMP_1..8 enum entries with getOrNull()
  access (safely returns null when firmware does not populate the field)
- EnvironmentCharts: LEGEND_DATA_4 with per-channel labels and distinct colours
- CommonCharts: LegendData.labelOverride for per-instance legend labels
- EnvironmentMetrics: OneWireTemperatureDisplay composable in the detail card
- EnvironmentMetrics component: inline 1-Wire chip display with temp formatting
- MetricsViewModel: Fahrenheit conversion for one_wire_temperature in CSV export

No version gating needed — the proto field defaults to an empty list on older
firmware, so the UI elements are naturally hidden when no data is reported.
This commit is contained in:
James Rich 2026-04-14 12:35:23 -05:00
parent 099aea2d81
commit e3a78f1afe
8 changed files with 160 additions and 7 deletions

View file

@ -60,6 +60,10 @@ object GraphColors {
val Lime = Color(0xFFCDDC39)
val Indigo = Color(0xFF3F51B5)
val DeepOrange = Color(0xFFFF5722)
val Magenta = Color(0xFFE040FB)
val SkyBlue = Color(0xFF03A9F4)
val Chartreuse = Color(0xFF76FF03)
val Coral = Color(0xFFFF6E40)
}
object StatusColors {