From a7bf69d7e02b25bb0ac8e3ce3b36a3889cecf75a Mon Sep 17 00:00:00 2001 From: Ben Tomlin Date: Wed, 10 Apr 2019 20:33:57 +0200 Subject: [PATCH] Support climate domain (#37) * Implement support for climate domain * Fix media_player state showing as NaN % * Use media_player localizations * Use climate localization --- README.md | 1 + slider-entity-row.js | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index caff0ed..bab5a80 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ This works for: - `light` - set brightness - `media_player` - set volume +- `climate` - set temperature - `cover` - set position - `fan` - set speed (assumes first setting is `off`) - `input_number` diff --git a/slider-entity-row.js b/slider-entity-row.js index cc8c4e3..70e3b98 100644 --- a/slider-entity-row.js +++ b/slider-entity-row.js @@ -132,13 +132,34 @@ class SliderEntityRow extends Polymer.Element { }, string: (stateObj, l18n) => { if (stateObj.attributes.is_volume_muted) return '-'; - return `${this.controller.get(stateObj)} %`; + return !!stateObj.attributes.volume_level ? `${this.controller.get(stateObj)} %` : l18n['state.media_player.off']; }, min: () => 0, max: () => 100, step: () => 5, }, + climate: { + set: (stateObj, value) => { + this._hass.callService('climate', 'set_temperature', { + entity_id: stateObj.entity_id, + temperature: value + }); + }, + get: (stateObj) => stateObj.attributes.temperature, + supported: { + slider: () => true, + toggle: () => true, + }, + string: (stateObj, l18n) => { + if (stateObj.attributes.operation_mode === 'off') return l18n['state.climate.off']; + return `${this.controller.get(stateObj)} ${this._hass.config.unit_system.temperature}`; + }, + min: (stateObj) => stateObj.attributes.min_temp, + max: (stateObj) => stateObj.attributes.max_temp, + step: () => 1, + }, + cover: { set: (stateObj, value) => { if (value)