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,70 +700,100 @@ val <T> Entity<T>.friendlyName: String
|
||||||
get() = (attributes as? Map<*, *>)?.get("friendly_name")?.toString() ?: entityId
|
get() = (attributes as? Map<*, *>)?.get("friendly_name")?.toString() ?: entityId
|
||||||
|
|
||||||
fun <T> Entity<T>.friendlyState(context: Context, options: EntityRegistryOptions? = null, appendUnitOfMeasurement: Boolean = false): String {
|
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
|
val attributes = this.attributes as Map<String, Any?>
|
||||||
var friendlyState = when (state) {
|
|
||||||
"above_horizon" -> context.getString(commonR.string.state_above_horizon)
|
var friendlyState = when (domain) {
|
||||||
"active" -> context.getString(commonR.string.state_active)
|
"binary_sensor" -> {
|
||||||
"armed_away" -> context.getString(commonR.string.state_armed_away)
|
// https://github.com/home-assistant/core/blob/dev/homeassistant/components/binary_sensor/strings.json#L113
|
||||||
"armed_custom_bypass" -> context.getString(commonR.string.state_armed_custom_bypass)
|
when (attributes["device_class"]) {
|
||||||
"armed_home" -> context.getString(commonR.string.state_armed_home)
|
"battery" -> if (state == "on") context.getString(commonR.string.state_low) else context.getString(commonR.string.state_normal)
|
||||||
"armed_night" -> context.getString(commonR.string.state_armed_night)
|
"battery_charging" -> if (state == "on") context.getString(commonR.string.state_charging) else context.getString(commonR.string.state_not_charging)
|
||||||
"armed_vacation" -> context.getString(commonR.string.state_armed_vacation)
|
"cold" -> if (state == "on") context.getString(commonR.string.state_cold) else context.getString(commonR.string.state_off)
|
||||||
"arming" -> context.getString(commonR.string.state_arming)
|
"connectivity" -> if (state == "on") context.getString(commonR.string.state_connected) else context.getString(commonR.string.state_disconnected)
|
||||||
"auto" -> context.getString(commonR.string.state_auto)
|
"door", "window", "garage_door", "opening" -> if (state == "on") context.getString(commonR.string.state_open) else context.getString(commonR.string.state_closed)
|
||||||
"below_horizon" -> context.getString(commonR.string.state_below_horizon)
|
"gas" -> if (state == "on") context.getString(commonR.string.state_detected) else context.getString(commonR.string.state_clear)
|
||||||
"buffering" -> context.getString(commonR.string.state_buffering)
|
"heat" -> if (state == "on") context.getString(commonR.string.state_hot) else context.getString(commonR.string.state_off)
|
||||||
"cleaning" -> context.getString(commonR.string.state_cleaning)
|
"light" -> if (state == "on") context.getString(commonR.string.state_light_detected) else context.getString(commonR.string.state_no_light)
|
||||||
"clear-night" -> context.getString(commonR.string.state_clear_night)
|
"lock" -> if (state == "on") context.getString(commonR.string.state_unlocked) else context.getString(commonR.string.state_locked)
|
||||||
"cloudy" -> context.getString(commonR.string.state_cloudy)
|
"moisture" -> if (state == "on") context.getString(commonR.string.state_wet) else context.getString(commonR.string.state_dry)
|
||||||
"closed" -> context.getString(commonR.string.state_closed)
|
"moving" -> if (state == "on") context.getString(commonR.string.state_moving) else context.getString(commonR.string.state_not_moving)
|
||||||
"closing" -> context.getString(commonR.string.state_closing)
|
"plug" -> if (state == "on") context.getString(commonR.string.state_plugged_in) else context.getString(commonR.string.state_unplugged)
|
||||||
"cool" -> context.getString(commonR.string.state_cool)
|
"presence" -> if (state == "on") context.getString(commonR.string.state_home) else context.getString(commonR.string.state_not_home)
|
||||||
"disarmed" -> context.getString(commonR.string.state_disarmed)
|
"problem" -> if (state == "on") context.getString(commonR.string.state_problem) else context.getString(commonR.string.state_ok)
|
||||||
"disarming" -> context.getString(commonR.string.state_disarming)
|
"running" -> if (state == "on") context.getString(commonR.string.state_running) else context.getString(commonR.string.state_not_running)
|
||||||
"docked" -> context.getString(commonR.string.state_docked)
|
"safety" -> if (state == "on") context.getString(commonR.string.state_unsafe) else context.getString(commonR.string.state_safe)
|
||||||
"dry" -> context.getString(commonR.string.state_dry)
|
"tamper" -> if (state == "on") context.getString(commonR.string.state_tampering_detected) else context.getString(commonR.string.state_off)
|
||||||
"error" -> context.getString(commonR.string.state_error)
|
"update" -> if (state == "on") context.getString(commonR.string.state_update_available) else context.getString(commonR.string.state_up_to_date)
|
||||||
"exceptional" -> context.getString(commonR.string.state_exceptional)
|
else -> if (state == "on") context.getString(commonR.string.state_on) else context.getString(commonR.string.state_off)
|
||||||
"fan_only" -> context.getString(commonR.string.state_fan_only)
|
}
|
||||||
"fog" -> context.getString(commonR.string.state_fog)
|
}
|
||||||
"hail" -> context.getString(commonR.string.state_hail)
|
else -> {
|
||||||
"heat" -> context.getString(commonR.string.state_heat)
|
// https://github.com/home-assistant/frontend/blob/dev/src/common/entity/get_states.ts#L5
|
||||||
"heat_cool" -> context.getString(commonR.string.state_heat_cool)
|
when (state) {
|
||||||
"home" -> context.getString(commonR.string.state_home)
|
"above_horizon" -> context.getString(commonR.string.state_above_horizon)
|
||||||
"idle" -> context.getString(commonR.string.state_idle)
|
"active" -> context.getString(commonR.string.state_active)
|
||||||
"jammed" -> context.getString(commonR.string.state_jammed)
|
"armed_away" -> context.getString(commonR.string.state_armed_away)
|
||||||
"lightning-raining" -> context.getString(commonR.string.state_lightning_raining)
|
"armed_custom_bypass" -> context.getString(commonR.string.state_armed_custom_bypass)
|
||||||
"lightning" -> context.getString(commonR.string.state_lightning)
|
"armed_home" -> context.getString(commonR.string.state_armed_home)
|
||||||
"locked" -> context.getString(commonR.string.state_locked)
|
"armed_night" -> context.getString(commonR.string.state_armed_night)
|
||||||
"locking" -> context.getString(commonR.string.state_locking)
|
"armed_vacation" -> context.getString(commonR.string.state_armed_vacation)
|
||||||
"mowing" -> context.getString(commonR.string.state_mowing)
|
"arming" -> context.getString(commonR.string.state_arming)
|
||||||
"not_home" -> context.getString(commonR.string.state_not_home)
|
"auto" -> context.getString(commonR.string.state_auto)
|
||||||
"off" -> context.getString(commonR.string.state_off)
|
"below_horizon" -> context.getString(commonR.string.state_below_horizon)
|
||||||
"on" -> context.getString(commonR.string.state_on)
|
"buffering" -> context.getString(commonR.string.state_buffering)
|
||||||
"open" -> context.getString(commonR.string.state_open)
|
"cleaning" -> context.getString(commonR.string.state_cleaning)
|
||||||
"opening" -> context.getString(commonR.string.state_opening)
|
"clear-night" -> context.getString(commonR.string.state_clear_night)
|
||||||
"partlycloudy" -> context.getString(commonR.string.state_partlycloudy)
|
"cloudy" -> context.getString(commonR.string.state_cloudy)
|
||||||
"paused" -> context.getString(commonR.string.state_paused)
|
"closed" -> context.getString(commonR.string.state_closed)
|
||||||
"pending" -> context.getString(commonR.string.state_pending)
|
"closing" -> context.getString(commonR.string.state_closing)
|
||||||
"playing" -> context.getString(commonR.string.state_playing)
|
"cool" -> context.getString(commonR.string.state_cool)
|
||||||
"problem" -> context.getString(commonR.string.state_problem)
|
"disarmed" -> context.getString(commonR.string.state_disarmed)
|
||||||
"pouring" -> context.getString(commonR.string.state_pouring)
|
"disarming" -> context.getString(commonR.string.state_disarming)
|
||||||
"rainy" -> context.getString(commonR.string.state_rainy)
|
"docked" -> context.getString(commonR.string.state_docked)
|
||||||
"recording" -> context.getString(commonR.string.state_recording)
|
"dry" -> context.getString(commonR.string.state_dry)
|
||||||
"returning" -> context.getString(commonR.string.state_returning)
|
"error" -> context.getString(commonR.string.state_error)
|
||||||
"snowy-rainy" -> context.getString(commonR.string.state_snowy_rainy)
|
"exceptional" -> context.getString(commonR.string.state_exceptional)
|
||||||
"snowy" -> context.getString(commonR.string.state_snowy)
|
"fan_only" -> context.getString(commonR.string.state_fan_only)
|
||||||
"standby" -> context.getString(commonR.string.state_standby)
|
"fog" -> context.getString(commonR.string.state_fog)
|
||||||
"streaming" -> context.getString(commonR.string.state_streaming)
|
"hail" -> context.getString(commonR.string.state_hail)
|
||||||
"sunny" -> context.getString(commonR.string.state_sunny)
|
"heat" -> context.getString(commonR.string.state_heat)
|
||||||
"triggered" -> context.getString(commonR.string.state_triggered)
|
"heat_cool" -> context.getString(commonR.string.state_heat_cool)
|
||||||
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
"home" -> context.getString(commonR.string.state_home)
|
||||||
"unlocked" -> context.getString(commonR.string.state_unlocked)
|
"idle" -> context.getString(commonR.string.state_idle)
|
||||||
"unlocking" -> context.getString(commonR.string.state_unlocking)
|
"jammed" -> context.getString(commonR.string.state_jammed)
|
||||||
"unknown" -> context.getString(commonR.string.state_unknown)
|
"lightning-raining" -> context.getString(commonR.string.state_lightning_raining)
|
||||||
"windy", "windy-variant" -> context.getString(commonR.string.state_windy)
|
"lightning" -> context.getString(commonR.string.state_lightning)
|
||||||
else -> state
|
"locked" -> context.getString(commonR.string.state_locked)
|
||||||
|
"locking" -> context.getString(commonR.string.state_locking)
|
||||||
|
"mowing" -> context.getString(commonR.string.state_mowing)
|
||||||
|
"not_home" -> context.getString(commonR.string.state_not_home)
|
||||||
|
"off" -> context.getString(commonR.string.state_off)
|
||||||
|
"on" -> context.getString(commonR.string.state_on)
|
||||||
|
"open" -> context.getString(commonR.string.state_open)
|
||||||
|
"opening" -> context.getString(commonR.string.state_opening)
|
||||||
|
"partlycloudy" -> context.getString(commonR.string.state_partlycloudy)
|
||||||
|
"paused" -> context.getString(commonR.string.state_paused)
|
||||||
|
"pending" -> context.getString(commonR.string.state_pending)
|
||||||
|
"playing" -> context.getString(commonR.string.state_playing)
|
||||||
|
"problem" -> context.getString(commonR.string.state_problem)
|
||||||
|
"pouring" -> context.getString(commonR.string.state_pouring)
|
||||||
|
"rainy" -> context.getString(commonR.string.state_rainy)
|
||||||
|
"recording" -> context.getString(commonR.string.state_recording)
|
||||||
|
"returning" -> context.getString(commonR.string.state_returning)
|
||||||
|
"snowy-rainy" -> context.getString(commonR.string.state_snowy_rainy)
|
||||||
|
"snowy" -> context.getString(commonR.string.state_snowy)
|
||||||
|
"standby" -> context.getString(commonR.string.state_standby)
|
||||||
|
"streaming" -> context.getString(commonR.string.state_streaming)
|
||||||
|
"sunny" -> context.getString(commonR.string.state_sunny)
|
||||||
|
"triggered" -> context.getString(commonR.string.state_triggered)
|
||||||
|
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
||||||
|
"unlocked" -> context.getString(commonR.string.state_unlocked)
|
||||||
|
"unlocking" -> context.getString(commonR.string.state_unlocking)
|
||||||
|
"unknown" -> context.getString(commonR.string.state_unknown)
|
||||||
|
"windy", "windy-variant" -> context.getString(commonR.string.state_windy)
|
||||||
|
else -> state
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (friendlyState == state && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (friendlyState == state && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -1236,4 +1236,29 @@
|
||||||
<string name="feedback">Feedback</string>
|
<string name="feedback">Feedback</string>
|
||||||
<string name="basic_sensor_name_remaining_charge_time">Remaining charge time</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="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>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue