From bb1f89e3df66bdb77bbc784ab7450199a7171c77 Mon Sep 17 00:00:00 2001 From: g-kiss <70820303+g-kiss@users.noreply.github.com> Date: Sat, 5 Sep 2020 22:13:32 +0200 Subject: [PATCH 1/4] Add files via upload --- custom_components/shelly/device.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/custom_components/shelly/device.py b/custom_components/shelly/device.py index 166d01e..f795c3a 100644 --- a/custom_components/shelly/device.py +++ b/custom_components/shelly/device.py @@ -50,6 +50,16 @@ def __init__(self, dev, instance): def _updated(self, _block): """Receive events when the switch state changed (by mobile, switch etc)""" + + if hasattr(self._dev, 'kg_send_event_click_count'): + if self._dev.kg_send_event_click_count != 0 or self._dev.kg_send_event_events != "": + self.hass.bus.fire('shelly_click', \ + {'entity_id' : self.entity_id, + 'click_count' : self._dev.kg_send_event_click_count, + 'click_events' : self._dev.kg_send_event_events}) + self._dev.kg_send_event_click_count = 0 + self._dev.kg_send_event_events = "" + disabled = self.registry_entry and self.registry_entry.disabled_by if self.entity_id is not None and not self._is_removed and not disabled: self.schedule_update_ha_state(True) From c96cf0bc11f58c898df1a19532a42831a1af7e4b Mon Sep 17 00:00:00 2001 From: g-kiss <70820303+g-kiss@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:41:42 +0200 Subject: [PATCH 2/4] Click handling --- custom_components/shelly/configuration_schema.py | 1 + custom_components/shelly/const.py | 3 ++- custom_components/shelly/device.py | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/custom_components/shelly/configuration_schema.py b/custom_components/shelly/configuration_schema.py index b3d528f..b50eae6 100644 --- a/custom_components/shelly/configuration_schema.py +++ b/custom_components/shelly/configuration_schema.py @@ -36,6 +36,7 @@ DEVICE_SCHEMA = vol.Schema({ vol.Required(CONF_ID): cv.string, + vol.Optional(CONF_MOMENTARY_BUTTON, default=False): cv.boolean, vol.Optional(CONF_NAME): cv.string, vol.Optional(CONF_LIGHT_SWITCH, default=False): cv.boolean, vol.Optional(CONF_SENSORS): diff --git a/custom_components/shelly/const.py b/custom_components/shelly/const.py index a8e4e57..d7c06bb 100644 --- a/custom_components/shelly/const.py +++ b/custom_components/shelly/const.py @@ -24,6 +24,7 @@ CONF_IGMPFIX = 'igmp_fix' CONF_MDNS = 'mdns' CONF_LIGHT_SWITCH = 'light_switch' +CONF_MOMENTARY_BUTTON = "momentary_button" CONF_OBJECT_ID_PREFIX = 'id_prefix' CONF_ENTITY_ID = 'entity_id' CONF_SHOW_ID_IN_NAME = 'show_id_in_name' @@ -64,7 +65,7 @@ 'default' : {}, 'temperature' : {CONF_UNIT:'°C'}, 'device_temp' : {CONF_UNIT:'°C'}, - 'illuminance' : {CONF_UNIT:'lx'}, + 'illuminance' : {CONF_UNIT:'lux'}, 'humidity' : {CONF_UNIT:'%'}, 'total_consumption' : {CONF_DECIMALS:2, CONF_DIV:1000, CONF_UNIT:'kWh'}, 'total_returned' : {CONF_DECIMALS:2, CONF_DIV:1000, CONF_UNIT:'kWh'}, diff --git a/custom_components/shelly/device.py b/custom_components/shelly/device.py index f795c3a..39b856e 100644 --- a/custom_components/shelly/device.py +++ b/custom_components/shelly/device.py @@ -9,7 +9,7 @@ from homeassistant.util import slugify from homeassistant.const import CONF_NAME -from .const import (CONF_OBJECT_ID_PREFIX, CONF_ENTITY_ID, CONF_SHOW_ID_IN_NAME, +from .const import (CONF_OBJECT_ID_PREFIX, CONF_ENTITY_ID, CONF_MOMENTARY_BUTTON, CONF_SHOW_ID_IN_NAME, ALL_SENSORS, SENSOR_TYPES_CFG, DOMAIN) class ShellyDevice(RestoreEntity): @@ -47,6 +47,9 @@ def __init__(self, dev, instance): self._settings = instance.get_settings(dev.id, dev.block.id) + if hasattr(self._dev, 'kg_momentary_button'): + self._dev.kg_momentary_button = instance._get_specific_config(CONF_MOMENTARY_BUTTON, None, dev.id, dev.block.id) + def _updated(self, _block): """Receive events when the switch state changed (by mobile, switch etc)""" From 1edc3e68d08d59d883fade84dc2c73e9c5209954 Mon Sep 17 00:00:00 2001 From: g-kiss <70820303+g-kiss@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:48:39 +0200 Subject: [PATCH 3/4] Click handling --- custom_components/shelly/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/shelly/const.py b/custom_components/shelly/const.py index d7c06bb..51ce414 100644 --- a/custom_components/shelly/const.py +++ b/custom_components/shelly/const.py @@ -65,7 +65,7 @@ 'default' : {}, 'temperature' : {CONF_UNIT:'°C'}, 'device_temp' : {CONF_UNIT:'°C'}, - 'illuminance' : {CONF_UNIT:'lux'}, + 'illuminance' : {CONF_UNIT:'lx'}, 'humidity' : {CONF_UNIT:'%'}, 'total_consumption' : {CONF_DECIMALS:2, CONF_DIV:1000, CONF_UNIT:'kWh'}, 'total_returned' : {CONF_DECIMALS:2, CONF_DIV:1000, CONF_UNIT:'kWh'}, From 87b90d663928820a85bce0f8459cef811a13c8a9 Mon Sep 17 00:00:00 2001 From: g-kiss <70820303+g-kiss@users.noreply.github.com> Date: Mon, 14 Dec 2020 11:32:31 +0100 Subject: [PATCH 4/4] dimmer --- custom_components/shelly/light.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/custom_components/shelly/light.py b/custom_components/shelly/light.py index d8e777e..699ad71 100755 --- a/custom_components/shelly/light.py +++ b/custom_components/shelly/light.py @@ -101,9 +101,10 @@ def __init__(self, dev, instance): self._color_temp_min = None self._color_temp_max = None self._master_unit = True + self._dim_up_down = 1 self.update() - self._features = SUPPORT_BRIGHTNESS + self._features = SUPPORT_BRIGHTNESS | SUPPORT_EFFECT if getattr(dev, "support_color_temp", False): self._color_temp_min = dev._color_temp_min self._color_temp_max = dev._color_temp_max @@ -121,6 +122,22 @@ def is_on(self): def turn_on(self, **kwargs): brightness = None color_temp = None + + if ATTR_EFFECT in kwargs: + dimtype = kwargs[ATTR_EFFECT] + if dimtype in ["dim_up_down", "dim_up", "dim_down", "dim_stop"]: + if dimtype == "dim_up_down": + if self._dim_up_down == 1: + dimtype = "dim_up" + self._dim_up_down = 0 + else: + dimtype = "dim_down" + self._dim_up_down = 1 + + self._dev.dimming(dimtype, self._state) + + return + if ATTR_BRIGHTNESS in kwargs: brightness = int(kwargs[ATTR_BRIGHTNESS] / 2.55) self._brightness = brightness