From 8972742244b837c616382326e593b3106dbfef23 Mon Sep 17 00:00:00 2001 From: Daniel Shokouhi Date: Fri, 16 Oct 2020 04:42:29 -0700 Subject: [PATCH] Power Menu button enhancements (#1061) * Power Menu button enhancements * Map more states for status text --- .../android/controls/ClimateControl.kt | 14 +++++++++++- .../android/controls/CoverControl.kt | 22 ++++++++++++++++++- .../android/controls/DefaultSwitchControl.kt | 8 ++++++- .../android/controls/LightControl.kt | 8 +++++-- 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/homeassistant/companion/android/controls/ClimateControl.kt b/app/src/main/java/io/homeassistant/companion/android/controls/ClimateControl.kt index 5e3fc6bad..36e14a282 100644 --- a/app/src/main/java/io/homeassistant/companion/android/controls/ClimateControl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/controls/ClimateControl.kt @@ -34,6 +34,18 @@ class ClimateControl { control.setTitle(entity.attributes["friendly_name"].toString()) control.setDeviceType(DeviceTypes.TYPE_AC_HEATER) control.setStatus(Control.STATUS_OK) + control.setStatusText( + when (entity.state) { + "auto" -> "Auto" + "cool" -> "Cool" + "dry" -> "Dry" + "fan_only" -> "Fan Only" + "heat" -> "Heat" + "heat_cool" -> "Heat Cool" + "off" -> "Off" + else -> entity.state + } + ) control.setControlTemplate( RangeTemplate( entity.entityId, @@ -41,7 +53,7 @@ class ClimateControl { 100f, (entity.attributes["temperature"] as? Number)?.toFloat() ?: 0f, .5f, - "" + "%.0f" ) ) diff --git a/app/src/main/java/io/homeassistant/companion/android/controls/CoverControl.kt b/app/src/main/java/io/homeassistant/companion/android/controls/CoverControl.kt index fc5e51903..0c3de3972 100644 --- a/app/src/main/java/io/homeassistant/companion/android/controls/CoverControl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/controls/CoverControl.kt @@ -31,8 +31,28 @@ class CoverControl { ) ) control.setTitle(entity.attributes["friendly_name"].toString()) - control.setDeviceType(DeviceTypes.TYPE_GARAGE) + control.setDeviceType( + when (entity.attributes["device_class"]) { + "awning" -> DeviceTypes.TYPE_AWNING + "blind" -> DeviceTypes.TYPE_BLINDS + "curtain" -> DeviceTypes.TYPE_CURTAIN + "door" -> DeviceTypes.TYPE_DOOR + "garage" -> DeviceTypes.TYPE_GARAGE + "gate" -> DeviceTypes.TYPE_GATE + "shutter" -> DeviceTypes.TYPE_SHUTTER + "window" -> DeviceTypes.TYPE_WINDOW + else -> DeviceTypes.TYPE_GENERIC_OPEN_CLOSE + } + ) control.setStatus(Control.STATUS_OK) + control.setStatusText( + when (entity.state) { + "closed" -> "Closed" + "closing" -> "Closing" + "open" -> "Open" + "opening" -> "Opening" + else -> entity.state + }) control.setControlTemplate( ToggleTemplate( entity.entityId, diff --git a/app/src/main/java/io/homeassistant/companion/android/controls/DefaultSwitchControl.kt b/app/src/main/java/io/homeassistant/companion/android/controls/DefaultSwitchControl.kt index 2987efb5e..4d2939286 100644 --- a/app/src/main/java/io/homeassistant/companion/android/controls/DefaultSwitchControl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/controls/DefaultSwitchControl.kt @@ -32,8 +32,14 @@ class DefaultSwitchControl { ) ) control.setTitle(entity.attributes["friendly_name"].toString()) - control.setDeviceType(DeviceTypes.TYPE_GENERIC_ON_OFF) + control.setDeviceType( + when (entity.entityId.split(".")[0]) { + "switch" -> DeviceTypes.TYPE_SWITCH + else -> DeviceTypes.TYPE_GENERIC_ON_OFF + } + ) control.setStatus(Control.STATUS_OK) + control.setStatusText(if (entity.state == "off") "Off" else "On") control.setControlTemplate( ToggleTemplate( entity.entityId, diff --git a/app/src/main/java/io/homeassistant/companion/android/controls/LightControl.kt b/app/src/main/java/io/homeassistant/companion/android/controls/LightControl.kt index f6aa3fce9..45bd19c2d 100644 --- a/app/src/main/java/io/homeassistant/companion/android/controls/LightControl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/controls/LightControl.kt @@ -35,6 +35,7 @@ class LightControl { control.setTitle(entity.attributes["friendly_name"].toString()) control.setDeviceType(DeviceTypes.TYPE_LIGHT) control.setStatus(Control.STATUS_OK) + control.setStatusText(if (entity.state == "off") "Off" else "On") control.setControlTemplate( ToggleRangeTemplate( entity.entityId, @@ -44,9 +45,12 @@ class LightControl { entity.entityId, 0f, 255f, - (entity.attributes["brightness"] as? Number)?.toFloat() ?: 0f, + (entity.attributes["brightness"] as? Number) + ?.toFloat() + ?.div(255f) + ?.times(100) ?: 0f, 1f, - "" + "%.0f%%" ) ) )