Files
home-assistant-blueprints/blueprints/automation/inovelli_mode_cycling.yaml
John Ogle 4f344e7b16 Fix inovelli_mode_cycling blueprint trigger for event entities
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.
2025-12-20 15:24:24 -08:00

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}}