From 8ed40e0dfc8f81cb1b8b30a75419b48b43750f9f Mon Sep 17 00:00:00 2001 From: "Herr.Vorragend" Date: Sun, 29 Oct 2023 09:29:44 +0100 Subject: [PATCH 1/4] Added Zigbee2Mqtt Philips HUE Wall Switch Module (#177) Added Zigbee2Mqtt Philips HUE Wall Switch Module --- ...ee2mqtt-philips-hue-wall-switch-module.png | Bin 0 -> 9849 bytes ...e2mqtt-philips-hue-wall-switch-module.yaml | 41 ++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.png create mode 100644 custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.yaml diff --git a/custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.png b/custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.png new file mode 100644 index 0000000000000000000000000000000000000000..999cc6c29d9aa7cb114a57b9706ac619edb1d346 GIT binary patch literal 9849 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 X?z(qs7Hhcu=P(03V_k;!wOjuMKnhfr literal 0 HcmV?d00001 diff --git a/custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.yaml b/custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.yaml new file mode 100644 index 00000000..03084365 --- /dev/null +++ b/custom_components/switch_manager/blueprints/zigbee2mqtt-philips-hue-wall-switch-module.yaml @@ -0,0 +1,41 @@ +name: Philips Hue Wall Switch Module +service: Zigbee2MQTT +event_type: mqtt +mqtt_topic_format: zigbee2mqtt/+/action +info: Actions HOLD and HOLD (RELEASED) will only work in rocker mode. +buttons: + - x: 112 + y: 140 + width: 88 + height: 88 + actions: + - title: init + conditions: + - key: payload + value: left_press + - title: press + conditions: + - key: payload + value: left_press_release + - title: hold + conditions: + - key: payload + value: left_hold + + - x: 112 + y: 270 + width: 88 + height: 88 + actions: + - title: init + conditions: + - key: payload + value: right_press + - title: press + conditions: + - key: payload + value: right_press_release + - title: hold + conditions: + - key: payload + value: right_hold From 34a610d1c657090247acd26dd258cde3f2119298 Mon Sep 17 00:00:00 2001 From: qp68 <83186243+qp68@users.noreply.github.com> Date: Sun, 19 Nov 2023 02:27:06 +0100 Subject: [PATCH 2/4] Correct E1744 action keys (#179) --- .../blueprints/zigbee2mqtt-ikea-e1744.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/custom_components/switch_manager/blueprints/zigbee2mqtt-ikea-e1744.yaml b/custom_components/switch_manager/blueprints/zigbee2mqtt-ikea-e1744.yaml index 4a023d32..9f171d74 100644 --- a/custom_components/switch_manager/blueprints/zigbee2mqtt-ikea-e1744.yaml +++ b/custom_components/switch_manager/blueprints/zigbee2mqtt-ikea-e1744.yaml @@ -7,24 +7,24 @@ buttons: - title: press conditions: - key: payload - value: play_pause + value: toggle - title: press 2x conditions: - key: payload - value: skip_forward + value: brightness_step_up - title: press 3x conditions: - key: payload - value: skip_backward + value: brightness_step_down - title: rotate left conditions: - key: payload - value: rotate_left + value: brightness_move_down - title: rotate right conditions: - key: payload - value: rotate_right + value: brightness_move_up - title: rotate (stopped) conditions: - key: payload - value: rotate_stop + value: brightness_stop From cfd323eba497ba0949f70e32dbb88216f93c6fc9 Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Sat, 18 Nov 2023 18:28:16 -0700 Subject: [PATCH 3/4] - Inovelli ZHA and Z2M blueprints can be used with VZM35-SN model (#178) --- .../zha-inovelli-vzm31-sn-blue-series-2-1-switch.yaml | 2 +- .../zigbee2mqtt-inovelli-vzm31-sn-blue-series-2-1-switch.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/switch_manager/blueprints/zha-inovelli-vzm31-sn-blue-series-2-1-switch.yaml b/custom_components/switch_manager/blueprints/zha-inovelli-vzm31-sn-blue-series-2-1-switch.yaml index a811b1a7..dbfe9b79 100644 --- a/custom_components/switch_manager/blueprints/zha-inovelli-vzm31-sn-blue-series-2-1-switch.yaml +++ b/custom_components/switch_manager/blueprints/zha-inovelli-vzm31-sn-blue-series-2-1-switch.yaml @@ -1,4 +1,4 @@ -name: Inovelli VZM31-SN Blue Series 2-1 Switch +name: Inovelli VZM31-SN or VZM35-SN Blue Series 2-1 Switch service: ZHA event_type: zha_event identifier_key: device_id diff --git a/custom_components/switch_manager/blueprints/zigbee2mqtt-inovelli-vzm31-sn-blue-series-2-1-switch.yaml b/custom_components/switch_manager/blueprints/zigbee2mqtt-inovelli-vzm31-sn-blue-series-2-1-switch.yaml index 2bca1366..49941422 100644 --- a/custom_components/switch_manager/blueprints/zigbee2mqtt-inovelli-vzm31-sn-blue-series-2-1-switch.yaml +++ b/custom_components/switch_manager/blueprints/zigbee2mqtt-inovelli-vzm31-sn-blue-series-2-1-switch.yaml @@ -1,4 +1,4 @@ -name: Inovelli VZM31-SN Blue Series 2-1 Switch +name: Inovelli VZM31-SN or VZM35-SN Blue Series 2-1 Switch service: Zigbee2MQTT event_type: mqtt mqtt_topic_format: zigbee2mqtt/+/action From eaa062c45d61da2506525c8547724cb9353ec299 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Fri, 1 Dec 2023 08:44:56 +0100 Subject: [PATCH 4/4] Adapt to HA Core PR renaming config._format_config_error (#183) * Adapt to HA Core PR renaming config._format_config_error * Update __init__.py --- custom_components/switch_manager/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/switch_manager/__init__.py b/custom_components/switch_manager/__init__.py index b96536e5..b8e8c3c1 100644 --- a/custom_components/switch_manager/__init__.py +++ b/custom_components/switch_manager/__init__.py @@ -16,7 +16,7 @@ from .schema import BLUEPRINT_MQTT_SCHEMA, BLUEPRINT_EVENT_SCHEMA, SERVICE_SET_VARIABLES_SCHEMA from .connections import async_setup_connections from homeassistant.core import Config, HomeAssistant, callback -from homeassistant.config import _format_config_error +from homeassistant.config import format_schema_error from homeassistant.helpers import issue_registry as ir async def async_setup( hass: HomeAssistant, config: Config ): @@ -90,7 +90,7 @@ async def _init_blueprints( hass: HomeAssistant ): try: c_validated = BLUEPRINT_MQTT_SCHEMA(config.get('data')) if config.get('data').get('event_type') == 'mqtt' else BLUEPRINT_EVENT_SCHEMA(config.get('data')) except vol.Invalid as ex: - LOGGER.error(_format_config_error(ex, f"{DOMAIN} {CONF_BLUEPRINTS}({config.get('id')})", config)) + LOGGER.error(format_schema_error(hass, ex, f"{DOMAIN} {CONF_BLUEPRINTS}({config.get('id')})", config)) continue if len(c_validated.get('buttons')) == 1: button = c_validated.get('buttons')[0]