mirror of
https://github.com/home-assistant/android
synced 2024-10-04 15:19:30 +00:00
Calculate fan speed step count (#2818)
* Calculate fan speed step count * Fix linting issues * Fixed wrong function name in log text Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com> Co-authored-by: Joris Pelgröm <jpelgrom@users.noreply.github.com>
This commit is contained in:
parent
af0371fb7b
commit
0148c65284
|
@ -3,6 +3,7 @@ package io.homeassistant.companion.android.common.data.integration
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
|
import kotlin.math.round
|
||||||
|
|
||||||
data class Entity<T>(
|
data class Entity<T>(
|
||||||
val entityId: String,
|
val entityId: String,
|
||||||
|
@ -80,7 +81,25 @@ fun <T> Entity<T>.getFanSpeed(): EntityPosition? {
|
||||||
max = maxValue
|
max = maxValue
|
||||||
)
|
)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e(EntityExt.TAG, "Unable to get getLightBrightness", e)
|
Log.e(EntityExt.TAG, "Unable to get getFanSpeed", e)
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> Entity<T>.getFanSteps(): Int? {
|
||||||
|
return try {
|
||||||
|
if (!supportsFanSetSpeed()) return null
|
||||||
|
|
||||||
|
fun calculateNumStep(percentageStep: Double): Int {
|
||||||
|
val numSteps = round(100 / percentageStep).toInt()
|
||||||
|
if (numSteps <= 10) return numSteps
|
||||||
|
if (numSteps % 10 == 0) return 10
|
||||||
|
return calculateNumStep(percentageStep * 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
return calculateNumStep(((attributes as Map<*, *>)["percentage_step"] as? Double)?.toDouble() ?: 1.0) - 1
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(EntityExt.TAG, "Unable to get getFanSteps")
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import io.homeassistant.companion.android.common.data.integration.Entity
|
||||||
import io.homeassistant.companion.android.common.data.integration.EntityExt
|
import io.homeassistant.companion.android.common.data.integration.EntityExt
|
||||||
import io.homeassistant.companion.android.common.data.integration.domain
|
import io.homeassistant.companion.android.common.data.integration.domain
|
||||||
import io.homeassistant.companion.android.common.data.integration.getFanSpeed
|
import io.homeassistant.companion.android.common.data.integration.getFanSpeed
|
||||||
|
import io.homeassistant.companion.android.common.data.integration.getFanSteps
|
||||||
import io.homeassistant.companion.android.common.data.integration.getLightBrightness
|
import io.homeassistant.companion.android.common.data.integration.getLightBrightness
|
||||||
import io.homeassistant.companion.android.common.data.integration.supportsFanSetSpeed
|
import io.homeassistant.companion.android.common.data.integration.supportsFanSetSpeed
|
||||||
import io.homeassistant.companion.android.common.data.integration.supportsLightBrightness
|
import io.homeassistant.companion.android.common.data.integration.supportsLightBrightness
|
||||||
|
@ -169,6 +170,7 @@ fun FanSpeedSlider(
|
||||||
val haptic = LocalHapticFeedback.current
|
val haptic = LocalHapticFeedback.current
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val position = entity.getFanSpeed() ?: return
|
val position = entity.getFanSpeed() ?: return
|
||||||
|
val steps = entity.getFanSteps() ?: return
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
Text(
|
Text(
|
||||||
|
@ -190,7 +192,7 @@ fun FanSpeedSlider(
|
||||||
haptic
|
haptic
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
steps = 9,
|
steps = steps,
|
||||||
valueRange = position.min..position.max,
|
valueRange = position.min..position.max,
|
||||||
decreaseIcon = {
|
decreaseIcon = {
|
||||||
Image(
|
Image(
|
||||||
|
|
Loading…
Reference in a new issue