Correct the trigger mechanism to match how Home Assistant event entities actually work. Event entities trigger on state changes and expose the actual event type as an attribute, not as event_data. Changes: - Replace platform:event trigger with platform:state - Add condition to check event_type attribute for 'config_single' - Remove incorrect event_data and state_changed event_type usage This matches the working pattern used in production automations and ensures the blueprint triggers correctly when the config button is pressed on Inovelli switches.
97 lines
2.9 KiB
YAML
97 lines
2.9 KiB
YAML
# blueprints/automation/inovelli_mode_cycling.yaml
|
|
#
|
|
# Inovelli Config Button Mode Cycling
|
|
#
|
|
# Cycles through lighting modes when the config button is pressed on an
|
|
# Inovelli Blue Dimmer Switch (VZM31-SN) via Zigbee2MQTT.
|
|
#
|
|
# Features:
|
|
# - Cycles through available modes in input_select
|
|
# - Updates LED color to match new mode (ROYGBIV scheme)
|
|
# - Flashes LED to confirm mode change (3-second pulse)
|
|
#
|
|
# Requirements:
|
|
# - Inovelli Blue Dimmer (VZM31-SN) paired with Zigbee2MQTT
|
|
# - input_select helper with available modes
|
|
# - packages/adaptive_lighting_global.yaml for mode colors
|
|
#
|
|
# Reference: ADAPTIVE_LIGHTING_CONTROL_SYSTEM_DESIGN.md lines 144-182
|
|
|
|
blueprint:
|
|
name: Inovelli Config Button Mode Cycling
|
|
description: Press config button to cycle through lighting modes with LED feedback
|
|
domain: automation
|
|
input:
|
|
switch_action_event:
|
|
name: Switch Action Event
|
|
description: The event entity that reports button presses (event.xxx_action)
|
|
selector:
|
|
entity:
|
|
domain: event
|
|
|
|
mode_input_select:
|
|
name: Mode Input Select
|
|
description: The input_select helper that tracks current lighting mode
|
|
selector:
|
|
entity:
|
|
domain: input_select
|
|
|
|
led_color_entity:
|
|
name: LED Color Entity
|
|
description: The number entity for LED color when on (number.xxx_led_color_when_on)
|
|
selector:
|
|
entity:
|
|
domain: number
|
|
|
|
zigbee2mqtt_device_name:
|
|
name: Zigbee2MQTT Device Name
|
|
description: The device name in Zigbee2MQTT (for LED flash effect via MQTT). Example "bedroom_switch"
|
|
selector:
|
|
text:
|
|
|
|
mode: single
|
|
max_exceeded: silent
|
|
|
|
trigger:
|
|
- platform: state
|
|
entity_id: !input switch_action_event
|
|
|
|
condition:
|
|
- condition: state
|
|
entity_id: !input switch_action_event
|
|
attribute: event_type
|
|
state: "config_single"
|
|
|
|
action:
|
|
- variables:
|
|
mode_select: !input mode_input_select
|
|
zigbee2mqtt_device_name: !input zigbee2mqtt_device_name
|
|
current_mode: "{{ states(mode_select) }}"
|
|
available_modes: "{{ state_attr(mode_select, 'options') }}"
|
|
current_index: "{{ available_modes.index(current_mode) }}"
|
|
next_index: "{{ (current_index + 1) % (available_modes | length) }}"
|
|
next_mode: "{{ available_modes[next_index] }}"
|
|
mode_colors: "{{ states('input_text.adaptive_lighting_mode_colors') | from_json }}"
|
|
next_color: "{{ mode_colors.get(next_mode, 170) }}"
|
|
|
|
# Change to next mode
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: !input mode_input_select
|
|
data:
|
|
option: "{{ next_mode }}"
|
|
|
|
# Update LED color
|
|
- service: number.set_value
|
|
target:
|
|
entity_id: !input led_color_entity
|
|
data:
|
|
value: "{{ next_color }}"
|
|
|
|
# Flash LED to confirm mode change (3-second pulse)
|
|
- service: mqtt.publish
|
|
data:
|
|
topic: "zigbee2mqtt/{{ zigbee2mqtt_device_name }}/set"
|
|
payload: >-
|
|
{"led_effect": {"effect": "pulse", "color": {{ next_color }}, "level": 100, "duration": 3}}
|