mirror of
https://github.com/home-assistant/android
synced 2024-10-01 13:53:53 +00:00
Use device class for binary sensor friendly state to match frontend and core (#4395)
* Use device class for binary sensor friendly state to match frontend and core * Update common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt 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
d640b9d974
commit
6e496c9720
|
@ -700,8 +700,36 @@ val <T> Entity<T>.friendlyName: String
|
|||
get() = (attributes as? Map<*, *>)?.get("friendly_name")?.toString() ?: entityId
|
||||
|
||||
fun <T> Entity<T>.friendlyState(context: Context, options: EntityRegistryOptions? = null, appendUnitOfMeasurement: Boolean = false): String {
|
||||
// https://github.com/mikey0000/frontend/blob/c14d801380f04ac63c4cf9ac2479e3b39ef4db32/src/common/entity/get_states.ts#L5
|
||||
var friendlyState = when (state) {
|
||||
val attributes = this.attributes as Map<String, Any?>
|
||||
|
||||
var friendlyState = when (domain) {
|
||||
"binary_sensor" -> {
|
||||
// https://github.com/home-assistant/core/blob/dev/homeassistant/components/binary_sensor/strings.json#L113
|
||||
when (attributes["device_class"]) {
|
||||
"battery" -> if (state == "on") context.getString(commonR.string.state_low) else context.getString(commonR.string.state_normal)
|
||||
"battery_charging" -> if (state == "on") context.getString(commonR.string.state_charging) else context.getString(commonR.string.state_not_charging)
|
||||
"cold" -> if (state == "on") context.getString(commonR.string.state_cold) else context.getString(commonR.string.state_off)
|
||||
"connectivity" -> if (state == "on") context.getString(commonR.string.state_connected) else context.getString(commonR.string.state_disconnected)
|
||||
"door", "window", "garage_door", "opening" -> if (state == "on") context.getString(commonR.string.state_open) else context.getString(commonR.string.state_closed)
|
||||
"gas" -> if (state == "on") context.getString(commonR.string.state_detected) else context.getString(commonR.string.state_clear)
|
||||
"heat" -> if (state == "on") context.getString(commonR.string.state_hot) else context.getString(commonR.string.state_off)
|
||||
"light" -> if (state == "on") context.getString(commonR.string.state_light_detected) else context.getString(commonR.string.state_no_light)
|
||||
"lock" -> if (state == "on") context.getString(commonR.string.state_unlocked) else context.getString(commonR.string.state_locked)
|
||||
"moisture" -> if (state == "on") context.getString(commonR.string.state_wet) else context.getString(commonR.string.state_dry)
|
||||
"moving" -> if (state == "on") context.getString(commonR.string.state_moving) else context.getString(commonR.string.state_not_moving)
|
||||
"plug" -> if (state == "on") context.getString(commonR.string.state_plugged_in) else context.getString(commonR.string.state_unplugged)
|
||||
"presence" -> if (state == "on") context.getString(commonR.string.state_home) else context.getString(commonR.string.state_not_home)
|
||||
"problem" -> if (state == "on") context.getString(commonR.string.state_problem) else context.getString(commonR.string.state_ok)
|
||||
"running" -> if (state == "on") context.getString(commonR.string.state_running) else context.getString(commonR.string.state_not_running)
|
||||
"safety" -> if (state == "on") context.getString(commonR.string.state_unsafe) else context.getString(commonR.string.state_safe)
|
||||
"tamper" -> if (state == "on") context.getString(commonR.string.state_tampering_detected) else context.getString(commonR.string.state_off)
|
||||
"update" -> if (state == "on") context.getString(commonR.string.state_update_available) else context.getString(commonR.string.state_up_to_date)
|
||||
else -> if (state == "on") context.getString(commonR.string.state_on) else context.getString(commonR.string.state_off)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
// https://github.com/home-assistant/frontend/blob/dev/src/common/entity/get_states.ts#L5
|
||||
when (state) {
|
||||
"above_horizon" -> context.getString(commonR.string.state_above_horizon)
|
||||
"active" -> context.getString(commonR.string.state_active)
|
||||
"armed_away" -> context.getString(commonR.string.state_armed_away)
|
||||
|
@ -765,6 +793,8 @@ fun <T> Entity<T>.friendlyState(context: Context, options: EntityRegistryOptions
|
|||
"windy", "windy-variant" -> context.getString(commonR.string.state_windy)
|
||||
else -> state
|
||||
}
|
||||
}
|
||||
}
|
||||
if (friendlyState == state && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
try {
|
||||
val stateInMillis = ZonedDateTime.parse(state, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
|
||||
|
|
|
@ -1236,4 +1236,29 @@
|
|||
<string name="feedback">Feedback</string>
|
||||
<string name="basic_sensor_name_remaining_charge_time">Remaining charge time</string>
|
||||
<string name="sensor_description_remaining_charge_time">Compute an approximation for how much time (in minutes) remains until the battery is fully charged. Returns unavailable if no time can be computed: either there is not enough current data to make a decision or the battery is currently discharging. Returns 0 if calculation is not complete but device is currently charging.</string>
|
||||
<string name="state_low">Low</string>
|
||||
<string name="state_normal">Normal</string>
|
||||
<string name="state_charging">Charging</string>
|
||||
<string name="state_not_charging">Not charging</string>
|
||||
<string name="state_cold">Cold</string>
|
||||
<string name="state_connected">Connected</string>
|
||||
<string name="state_disconnected">Disconnected</string>
|
||||
<string name="state_detected">Detected</string>
|
||||
<string name="state_clear">Clear</string>
|
||||
<string name="state_hot">Hot</string>
|
||||
<string name="state_light_detected">Light detected</string>
|
||||
<string name="state_no_light">No light</string>
|
||||
<string name="state_wet">Wet</string>
|
||||
<string name="state_moving">Moving</string>
|
||||
<string name="state_not_moving">Not moving</string>
|
||||
<string name="state_plugged_in">Plugged in</string>
|
||||
<string name="state_unplugged">Unplugged</string>
|
||||
<string name="state_ok">OK</string>
|
||||
<string name="state_running">Running</string>
|
||||
<string name="state_not_running">Not running</string>
|
||||
<string name="state_unsafe">Unsafe</string>
|
||||
<string name="state_safe">Safe</string>
|
||||
<string name="state_tampering_detected">Tampering detected</string>
|
||||
<string name="state_update_available">Update available</string>
|
||||
<string name="state_up_to_date">Up-to-date</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue