Justin E. Mann 2025-06-23 03:30:19 +00:00 zatwierdzone przez GitHub
commit 498510080a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
5 zmienionych plików z 52 dodań i 2 usunięć

Wyświetl plik

@ -160,6 +160,8 @@ data class EnvironmentMetrics(
val time: Int = currentTime(), // default to current time in secs (NOT MILLISECONDS!) val time: Int = currentTime(), // default to current time in secs (NOT MILLISECONDS!)
val temperature: Float, val temperature: Float,
val relativeHumidity: Float, val relativeHumidity: Float,
val soilTemperature: Float,
val soilMoisture: Int,
val barometricPressure: Float, val barometricPressure: Float,
val gasResistance: Float, val gasResistance: Float,
val voltage: Float, val voltage: Float,

Wyświetl plik

@ -212,6 +212,8 @@ data class NodeEntity(
time = environmentTelemetry.time, time = environmentTelemetry.time,
temperature = environmentMetrics.temperature, temperature = environmentMetrics.temperature,
relativeHumidity = environmentMetrics.relativeHumidity, relativeHumidity = environmentMetrics.relativeHumidity,
soilTemperature = environmentMetrics.soilTemperature,
soilMoisture = environmentMetrics.soilMoisture,
barometricPressure = environmentMetrics.barometricPressure, barometricPressure = environmentMetrics.barometricPressure,
gasResistance = environmentMetrics.gasResistance, gasResistance = environmentMetrics.gasResistance,
voltage = environmentMetrics.voltage, voltage = environmentMetrics.voltage,

Wyświetl plik

@ -33,6 +33,16 @@ enum class Environment(val color: Color) {
return telemetry.environmentMetrics.relativeHumidity return telemetry.environmentMetrics.relativeHumidity
} }
}, },
SOIL_TEMPERATURE(Color.Red) {
override fun getValue(telemetry: Telemetry): Float {
return telemetry.environmentMetrics.soilTemperature
}
},
SOIL_MOISTURE(InfantryBlue) {
override fun getValue(telemetry: Telemetry): Float {
return telemetry.environmentMetrics.soilMoisture.toFloat()
}
},
IAQ(Color.Green) { IAQ(Color.Green) {
override fun getValue(telemetry: Telemetry): Float { override fun getValue(telemetry: Telemetry): Float {
return telemetry.environmentMetrics.iaq.toFloat() return telemetry.environmentMetrics.iaq.toFloat()
@ -107,6 +117,27 @@ data class EnvironmentMetricsState(
shouldPlot[Environment.HUMIDITY.ordinal] = true shouldPlot[Environment.HUMIDITY.ordinal] = true
} }
val (minSoilTemp, maxSoilTemp) = Pair(
telemetries.minBy { it.environmentMetrics.soilTemperature },
telemetries.maxBy { it.environmentMetrics.soilTemperature }
)
if (minSoilTemp.environmentMetrics.soilTemperature != 0f || maxSoilTemp.environmentMetrics.soilTemperature != 0f) {
minValues.add(minTemp.environmentMetrics.soilTemperature)
maxValues.add(maxTemp.environmentMetrics.soilTemperature)
shouldPlot[Environment.SOIL_TEMPERATURE.ordinal] = true
}
val (minSoilMoisture, maxSoilMoisture) = Pair(
telemetries.minBy { it.environmentMetrics.soilMoisture },
telemetries.maxBy { it.environmentMetrics.soilMoisture }
)
if (minSoilMoisture.environmentMetrics.soilMoisture != 0 ||
maxSoilMoisture.environmentMetrics.soilMoisture != 0) {
minValues.add(minHumidity.environmentMetrics.soilMoisture.toFloat())
maxValues.add(maxHumidity.environmentMetrics.soilMoisture.toFloat())
shouldPlot[Environment.SOIL_MOISTURE.ordinal] = true
}
val (minIAQ, maxIAQ) = Pair( val (minIAQ, maxIAQ) = Pair(
telemetries.minBy { it.environmentMetrics.iaq }, telemetries.minBy { it.environmentMetrics.iaq },
telemetries.maxBy { it.environmentMetrics.iaq } telemetries.maxBy { it.environmentMetrics.iaq }

Wyświetl plik

@ -305,8 +305,10 @@ class MetricsViewModel @Inject constructor(
state.copy( state.copy(
environmentMetrics = telemetry.filter { environmentMetrics = telemetry.filter {
it.hasEnvironmentMetrics() && it.hasEnvironmentMetrics() &&
it.environmentMetrics.relativeHumidity >= 0f && (it.environmentMetrics.relativeHumidity >= 0f &&
!it.environmentMetrics.temperature.isNaN() !it.environmentMetrics.temperature.isNaN()) ||
(it.environmentMetrics.soilMoisture >= 0 &&
!it.environmentMetrics.soilTemperature.isNaN())
}, },
) )
} }

Wyświetl plik

@ -121,6 +121,17 @@ data class Node(
null null
} }
val humidity = if (relativeHumidity != 0f) "%.0f%%".format(relativeHumidity) else null val humidity = if (relativeHumidity != 0f) "%.0f%%".format(relativeHumidity) else null
val soilTemp = if (soilTemperature != 0f) {
if (isFahrenheit) {
val fahrenheit = soilTemperature * 1.8F + 32
"%.1f°F".format(fahrenheit)
} else {
"%.1f°C".format(soilTemperature)
}
} else {
null
}
val soilMoisture = if (soilMoisture != 0) "%.0%%".format(soilMoisture) else null
val voltage = if (this.voltage != 0f) "%.2fV".format(this.voltage) else null val voltage = if (this.voltage != 0f) "%.2fV".format(this.voltage) else null
val current = if (current != 0f) "%.1fmA".format(current) else null val current = if (current != 0f) "%.1fmA".format(current) else null
val iaq = if (iaq != 0) "IAQ: $iaq" else null val iaq = if (iaq != 0) "IAQ: $iaq" else null
@ -128,6 +139,8 @@ data class Node(
return listOfNotNull( return listOfNotNull(
temp, temp,
humidity, humidity,
soilTemp,
soilMoisture,
voltage, voltage,
current, current,
iaq, iaq,