diff --git a/INOVELLI_BLUE_DIMMER_SWITCHES.md b/INOVELLI_BLUE_DIMMER_SWITCHES.md new file mode 100644 index 0000000..7320d0d --- /dev/null +++ b/INOVELLI_BLUE_DIMMER_SWITCHES.md @@ -0,0 +1,121 @@ +# Inovelli Blue Series Dimmer Switch - Zigbee2MQTT Reference + +This directory contains technical specifications for Inovelli Blue Series Dimmer Switch (VZM31-SN) when used with Zigbee2MQTT, organized by theme for selective context loading. + +## Parameter Categories + +### [Dimming & Ramp Control](inovelli/dimming-and-ramp.md) +Properties controlling dimming speeds and ramp rates for both local (physical paddle) and remote (hub/automation) control. +- **Properties**: dimmingSpeed*, rampRate* +- **Use cases**: Fine-tuning dimming behavior, creating smooth lighting transitions + +### [Brightness Levels](inovelli/brightness-levels.md) +Properties defining brightness limits, default levels, and multi-tap brightness targets. +- **Properties**: minimumLevel, maximumLevel, defaultLevel*, invertSwitch, brightnessLevelForDoubleTap* +- **Use cases**: Setting brightness constraints, configuring default on levels, switch inversion + +### [Power & Energy Monitoring](inovelli/power-monitoring.md) +Properties for power measurement, reporting thresholds, and energy monitoring. +- **Properties**: power, energy, activePowerReports, activeEnergyReports, periodicPowerAndEnergyReports +- **Use cases**: Power consumption tracking, energy usage analytics, reporting intervals + +### [LED Configuration](inovelli/led-configuration.md) +Properties controlling LED strip colors and intensity for individual LEDs and global defaults, plus LED effects. +- **Properties**: led_effect, individual_led_effect, ledColorWhen*, ledIntensityWhen*, defaultLed* +- **Use cases**: LED notifications, status indicators, custom color schemes, animated effects + +### [Switch Configuration](inovelli/switch-config.md) +Properties defining switch type, operational modes, and hardware configuration. +- **Properties**: switchType, buttonDelay, smartBulbMode, outputMode, powerType, ledBarScaling +- **Use cases**: 3-way setup, smart bulb mode, non-neutral wiring, on/off mode + +### [Protection & Safety](inovelli/protection-safety.md) +Properties for device protection, temperature monitoring, and access control. +- **Properties**: internalTemperature, overheat, localProtection, remoteProtection +- **Use cases**: Child locks, overheat protection, disabling physical/remote control + +### [Timers & Automation](inovelli/timers-automation.md) +Properties for time-based automation features. +- **Properties**: autoTimerOff, loadLevelIndicatorTimeout, doubleTapUpToParam55, doubleTapDownToParam56 +- **Use cases**: Auto-off timers, LED timeout, double-tap shortcuts + +### [Advanced Features](inovelli/advanced-features.md) +Properties for advanced configuration, bindings, and special modes. +- **Properties**: fanControlMode, singleTapBehavior, auxSwitchUniqueScenes, bindingOffToOnSyncLevel +- **Use cases**: Fan control, scene control, firmware updates, custom behaviors + +## Quick Property Lookup + +| Property | Category | +|----------|----------| +| dimmingSpeedUpRemote, dimmingSpeedUpLocal | Dimming & Ramp | +| dimmingSpeedDownRemote, dimmingSpeedDownLocal | Dimming & Ramp | +| rampRateOffToOnRemote, rampRateOffToOnLocal | Dimming & Ramp | +| rampRateOnToOffRemote, rampRateOnToOffLocal | Dimming & Ramp | +| minimumLevel, maximumLevel | Brightness Levels | +| defaultLevelLocal, defaultLevelRemote | Brightness Levels | +| invertSwitch, stateAfterPowerRestored | Brightness Levels | +| brightnessLevelForDoubleTapUp, brightnessLevelForDoubleTapDown | Brightness Levels | +| autoTimerOff | Timers & Automation | +| loadLevelIndicatorTimeout | Timers & Automation | +| doubleTapUpToParam55, doubleTapDownToParam56 | Timers & Automation | +| power, energy | Power Monitoring | +| activePowerReports, activeEnergyReports | Power Monitoring | +| periodicPowerAndEnergyReports | Power Monitoring | +| quickStartTime, quickStartLevel | Power Monitoring | +| led_effect, individual_led_effect | LED Configuration | +| ledColorWhenOn, ledColorWhenOff | LED Configuration | +| ledIntensityWhenOn, ledIntensityWhenOff | LED Configuration | +| defaultLed1-7ColorWhenOn/Off | LED Configuration | +| defaultLed1-7IntensityWhenOn/Off | LED Configuration | +| ledBarScaling, onOffLedMode | LED Configuration | +| switchType, buttonDelay | Switch Configuration | +| smartBulbMode, outputMode | Switch Configuration | +| powerType, dimmingMode, relayClick | Switch Configuration | +| higherOutputInNonNeutral | Switch Configuration | +| internalTemperature, overheat | Protection & Safety | +| localProtection, remoteProtection | Protection & Safety | +| fanControlMode, singleTapBehavior | Advanced Features | +| auxSwitchUniqueScenes, bindingOffToOnSyncLevel | Advanced Features | +| deviceBindNumber, firmwareUpdateInProgressIndicator | Advanced Features | +| doubleTapClearNotifications, fanLedLevelType | Advanced Features | + +## Zigbee2MQTT Integration + +These properties are exposed by Zigbee2MQTT and can be accessed in Home Assistant as: +- **Entities**: `light.switch_name` (state, brightness) +- **Sensors**: `sensor.switch_name_power`, `sensor.switch_name_energy` +- **Numbers**: `number.switch_name_dimming_speed_up_remote`, etc. +- **Selects**: `select.switch_name_switch_type`, etc. +- **Actions**: `mqtt.publish` to set LED effects via `led_effect` and `individual_led_effect` + +## Setting Properties + +Properties can be set via: +1. **Home Assistant UI**: Using the exposed number/select entities +2. **Services**: Using `number.set_value` or `select.select_option` +3. **MQTT**: Publishing directly to `zigbee2mqtt/[device_name]/set` + +Example MQTT publish for LED effect: +```yaml +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"led_effect": {"effect": "pulse", "color": 170, "level": 100, "duration": 255}}' +``` + +## Source + +- Official Inovelli documentation: https://help.inovelli.com/en/articles/8189241-blue-series-dimmer-switch-parameters +- Zigbee2MQTT device definition: Model VZM31-SN + +## Usage for LLM Agents + +Each category file contains detailed property specifications including: +- Property name as exposed by Zigbee2MQTT +- Value range and units +- Default value +- Detailed description +- Usage notes and Home Assistant examples + +Load only the category files relevant to your current task to minimize context usage. diff --git a/inovelli/advanced-features.md b/inovelli/advanced-features.md new file mode 100644 index 0000000..fba3798 --- /dev/null +++ b/inovelli/advanced-features.md @@ -0,0 +1,322 @@ +# Advanced Features Properties + +Properties for fan control modes, special operational modes, firmware updates, and advanced configuration via Zigbee2MQTT. + +## Fan Control Mode + +The switch can be configured to control ceiling fans with multi-tap or cycle modes. + +### fanControlMode + +- **Type**: Select +- **Values**: "Disabled", "Multi Tap", "Cycle" +- **Default**: "Disabled" +- **Description**: Which mode to use when binding EP3 (config button) to another device (like a fan module). Controls how the switch sends fan speed commands. +- **Home Assistant Entity**: `select.[device_name]_fan_control_mode` +- **Use cases**: + - Control ceiling fan from dimmer switch + - Multi-speed fan control + - Coordinate light + fan control +- **Modes**: + - "Disabled": No fan control + - "Multi Tap": Different tap counts = different speeds + - "Cycle": Each tap cycles through speeds + +### lowLevelForFanControlMode + +- **Type**: Number +- **Range**: 2-254 +- **Default**: 33 +- **Description**: Level to send to device bound to EP3 when set to low. +- **Home Assistant Entity**: `number.[device_name]_low_level_for_fan_control_mode` +- **Requires**: fanControlMode != "Disabled" + +### mediumLevelForFanControlMode + +- **Type**: Number +- **Range**: 2-254 +- **Default**: 66 +- **Description**: Level to send to device bound to EP3 when set to medium. +- **Home Assistant Entity**: `number.[device_name]_medium_level_for_fan_control_mode` +- **Requires**: fanControlMode != "Disabled" + +### highLevelForFanControlMode + +- **Type**: Number +- **Range**: 2-254 +- **Default**: 100 +- **Description**: Level to send to device bound to EP3 when set to high. +- **Home Assistant Entity**: `number.[device_name]_high_level_for_fan_control_mode` +- **Requires**: fanControlMode != "Disabled" + +### ledColorForFanControlMode + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 170 (Blue) +- **Description**: LED color used to display fan control mode. +- **Home Assistant Entity**: `number.[device_name]_led_color_for_fan_control_mode` +- **Preset colors**: + - `0` = Red + - `21` = Orange + - `42` = Yellow + - `85` = Green + - `127` = Cyan + - `170` = Blue + - `212` = Violet + - `234` = Pink + - `255` = White + +### fanLedLevelType + +- **Type**: Number +- **Range**: 0-10 +- **Default**: 0 +- **Description**: Level display of the LED Strip for fan control. +- **Home Assistant Entity**: `number.[device_name]_fan_led_level_type` +- **Presets**: + - `0` = Limitless (like VZM31) + - `10` = Adaptive LED + +## Single Tap Behavior + +### singleTapBehavior + +- **Type**: Select +- **Values**: "Old Behavior", "New Behavior", "Down Always Off" +- **Default**: "Old Behavior" +- **Description**: Behavior of single tapping the on or off button. +- **Home Assistant Entity**: `select.[device_name]_single_tap_behavior` +- **Modes**: + - "Old Behavior": Traditional on/off operation + - "New Behavior": Cycles through brightness levels + - "Down Always Off": Up cycles levels, down always turns off +- **Use cases**: + - Customize paddle tap behavior + - Multi-level control without holding + - Quick access to preset levels + +## Advanced Configuration + +### auxSwitchUniqueScenes + +- **Type**: Select +- **Values**: "Disabled", "Enabled" +- **Default**: "Disabled" +- **Description**: Have unique scene numbers for scenes activated with the aux switch. +- **Home Assistant Entity**: `select.[device_name]_aux_switch_unique_scenes` +- **Use cases**: + - Different automations per switch location in 3-way setup + - Location-aware scene triggers + - Advanced multi-point control systems +- **Requires**: switchType = "3-Way Aux Switch" + +### bindingOffToOnSyncLevel + +- **Type**: Select +- **Values**: "Disabled", "Enabled" +- **Default**: "Disabled" +- **Description**: Send Move_To_Level using Default Level with Off/On to bound devices. +- **Home Assistant Entity**: `select.[device_name]_binding_off_to_on_sync_level` +- **Use cases**: + - Synchronized dimming across Zigbee-bound devices + - Match brightness on associated lights + - Group control coordination +- **Note**: Applies when switch binds to other Zigbee devices + +### deviceBindNumber + +- **Type**: Sensor (read-only) +- **Description**: The number of devices currently bound (excluding gateways) and counts one group as two devices. +- **Home Assistant Entity**: `sensor.[device_name]_device_bind_number` +- **Read-only**: Cannot be changed, reflects current binding status +- **Use cases**: + - Diagnostic information + - Verify Zigbee binding configuration + - Troubleshoot multi-device coordination + +### firmwareUpdateInProgressIndicator + +- **Type**: Select +- **Values**: "Disabled", "Enabled" +- **Default**: "Enabled" +- **Description**: Display progress on LED bar during firmware update. +- **Home Assistant Entity**: `select.[device_name]_firmware_update_in_progress_indicator` +- **Use cases**: + - Visual feedback during OTA firmware update + - Indicate update in progress + - Disable for discrete updates +- **Behavior when "Enabled"**: + - LED bar shows update progress + - Progress indication during OTA update + - Provides visual confirmation + +### doubleTapClearNotifications + +- **Type**: Select +- **Values**: "Enabled (Default)", "Disabled" +- **Default**: "Enabled (Default)" +- **Description**: Double-Tap the Config button to clear notifications. +- **Home Assistant Entity**: `select.[device_name]_double_tap_clear_notifications` +- **Use cases**: + - Quick notification dismissal + - Manual control over persistent LED effects + - User convenience for notification management + +## Configuration Patterns + +### Fan Control Setup (Multi Tap) + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_fan_control_mode +data: + option: "Multi Tap" + +# Set fan speed levels +service: number.set_value +target: + entity_id: number.bedroom_switch_low_level_for_fan_control_mode +data: + value: 33 # Low speed + +service: number.set_value +target: + entity_id: number.bedroom_switch_medium_level_for_fan_control_mode +data: + value: 66 # Medium speed + +service: number.set_value +target: + entity_id: number.bedroom_switch_high_level_for_fan_control_mode +data: + value: 100 # High speed + +# Set LED color for fan mode +service: number.set_value +target: + entity_id: number.bedroom_switch_led_color_for_fan_control_mode +data: + value: 85 # Green +``` + +### Cycling Single Tap Behavior + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_single_tap_behavior +data: + option: "New Behavior" # Cycles through levels +``` + +### Location-Aware 3-Way Scenes + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_aux_switch_unique_scenes +data: + option: "Enabled" + +# Now bedroom and hallway switches send different scene IDs +# Create separate automations for each location +``` + +### Synchronized Binding + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_binding_off_to_on_sync_level +data: + option: "Enabled" # Bound devices match this switch's level +``` + +### Visual Firmware Updates + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_firmware_update_in_progress_indicator +data: + option: "Enabled" # Show progress on LED bar +``` + +### Config Button Notification Clear + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_double_tap_clear_notifications +data: + option: "Enabled (Default)" # Double-tap config to clear +``` + +## Fan Control Workflow + +### Multi-Tap Mode +With fanControlMode = "Multi Tap": +- Single tap config: Off +- Double tap config: Low speed +- Triple tap config: Medium speed +- Quadruple tap config: High speed + +### Cycle Mode +With fanControlMode = "Cycle": +- Each config button tap cycles: Off → Low → Medium → High → Off + +### Automation Integration + +```yaml +automation: + - alias: "Fan Control via Config Button" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_action + action: + - choose: + - conditions: + - condition: state + entity_id: sensor.bedroom_switch_action + state: "config_double" + sequence: + - service: fan.set_percentage + target: + entity_id: fan.bedroom_fan + data: + percentage: 33 # Low + - conditions: + - condition: state + entity_id: sensor.bedroom_switch_action + state: "config_triple" + sequence: + - service: fan.set_percentage + target: + entity_id: fan.bedroom_fan + data: + percentage: 66 # Medium + - conditions: + - condition: state + entity_id: sensor.bedroom_switch_action + state: "config_quadruple" + sequence: + - service: fan.set_percentage + target: + entity_id: fan.bedroom_fan + data: + percentage: 100 # High +``` + +## Important Notes + +- Fan control modes are designed for Zigbee binding to fan controllers +- Single tap behavior affects all paddle taps (up and down) +- auxSwitchUniqueScenes requires 3-way aux switch configuration +- deviceBindNumber is informational only (read-only) +- firmwareUpdateInProgressIndicator only affects visual feedback, not update function +- LED effects set via led_effect/individual_led_effect can be cleared with config button double-tap +- Fan control LED color helps distinguish between light and fan control modes +- Bindings are managed at the Zigbee level, not via these properties +- Properties exposed via Zigbee2MQTT; Z-Wave-specific features are not applicable diff --git a/inovelli/brightness-levels.md b/inovelli/brightness-levels.md new file mode 100644 index 0000000..f67256b --- /dev/null +++ b/inovelli/brightness-levels.md @@ -0,0 +1,236 @@ +# Brightness Levels Properties + +Properties controlling brightness limits, default levels when turning on, power restore behavior, and multi-tap brightness shortcuts. + +## minimumLevel + +- **Type**: Number +- **Range**: 1-254 +- **Default**: 1 (lowest possible) +- **Description**: The minimum brightness level the switch can dim to. Prevents dimming below a threshold where lights flicker or turn off. +- **Home Assistant Entity**: `number.[device_name]_minimum_level` +- **Use cases**: + - Prevent LED bulb flickering at low levels + - Set nightlight minimum brightness + - Ensure lights never go completely dark when dimming +- **Common values**: + - LED bulbs: 10-20 (prevents flickering) + - Incandescent: 1-5 (can dim lower) + - Smart bulbs: 1 (handle dimming internally) + +## maximumLevel + +- **Type**: Number +- **Range**: 2-255 +- **Default**: 255 (full brightness) +- **Description**: The maximum brightness level the switch can reach. Limits top-end brightness. +- **Home Assistant Entity**: `number.[device_name]_maximum_level` +- **Use cases**: + - Limit max brightness to extend bulb life + - Reduce energy consumption + - Create softer ambient lighting maximum + - Protect sensitive loads +- **Common values**: + - Full brightness: 255 + - Energy saving: 200-230 + - Ambient lighting: 150-180 + +## invertSwitch + +- **Type**: Select +- **Values**: "Yes", "No" +- **Default**: "No" (normal orientation) +- **Description**: Inverts paddle operation (up becomes down, down becomes up). +- **Home Assistant Entity**: `select.[device_name]_invert_switch` +- **Use cases**: + - Match 3-way switch orientation + - Accommodate non-standard wiring + - User preference for reversed operation + +## defaultLevelLocal + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 255 (last level or max) +- **Description**: Brightness level when turned on via physical paddle. +- **Home Assistant Entity**: `number.[device_name]_default_level_local` +- **Special values**: + - `0-254` = Specific brightness level + - `255` = Return to the level that it was on before it was turned off (smart resume) +- **Use cases**: + - Always turn on to comfortable level (e.g., 128 for 50%) + - Predictable brightness for specific room uses + - Override smart resume for consistent behavior + +## defaultLevelRemote + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 255 (last level or max) +- **Description**: Brightness level when turned on via hub commands (automations/app). +- **Home Assistant Entity**: `number.[device_name]_default_level_remote` +- **Special values**: + - `0-254` = Specific brightness level + - `255` = Return to the level that it was on before it was turned off (smart resume) +- **Use cases**: + - Automations that need predictable brightness + - Different default for voice/app control vs physical + - Scene activation with specific levels + +## stateAfterPowerRestored + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 255 (previous state) +- **Description**: The state the switch should return to when power is restored after power failure. +- **Home Assistant Entity**: `number.[device_name]_state_after_power_restored` +- **Special values**: + - `0` = off + - `1-254` = Specific brightness level (and turn on) + - `255` = Return to previous state before power loss +- **Use cases**: + - Always off after power restore (set to 0) + - Emergency lighting (set to specific brightness) + - Smart restore to previous state (set to 255) + +## brightnessLevelForDoubleTapUp + +- **Type**: Number +- **Range**: 2-255 +- **Default**: 254 (near maximum) +- **Description**: Set this level on double-tap UP (if enabled by doubleTapUpToParam55). +- **Home Assistant Entity**: `number.[device_name]_brightness_level_for_double_tap_up` +- **Special values**: + - `2-254` = Specific brightness level + - `255` = Send ON command +- **Use cases**: + - Quick full-bright shortcut + - Task lighting preset + - Scene activation brightness +- **Prerequisites**: Requires doubleTapUpToParam55 = "Enabled" + +## brightnessLevelForDoubleTapDown + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 0 +- **Description**: Set this level on double-tap DOWN (if enabled by doubleTapDownToParam56). +- **Home Assistant Entity**: `number.[device_name]_brightness_level_for_double_tap_down` +- **Special values**: + - `0` = Send OFF command + - `1-254` = Specific brightness level + - `255` = Send OFF command +- **Use cases**: + - Quick nightlight mode + - Turn off shortcut + - Low-light scene activation +- **Prerequisites**: Requires doubleTapDownToParam56 = "Enabled" + +## Configuration Patterns + +### Smart Resume (Memory) +All settings return to previous state/level: + +```yaml +service: number.set_value +target: + entity_id: + - number.bedroom_switch_default_level_local + - number.bedroom_switch_default_level_remote + - number.bedroom_switch_state_after_power_restored +data: + value: 255 # Remember previous level +``` + +### Predictable Lighting +Always turn on to 50% brightness: + +```yaml +service: number.set_value +target: + entity_id: + - number.bedroom_switch_default_level_local + - number.bedroom_switch_default_level_remote + - number.bedroom_switch_state_after_power_restored +data: + value: 128 # 50% brightness +``` + +### LED Bulb Optimization +Prevent low-level flicker with memory: + +```yaml +# Prevent flicker +service: number.set_value +target: + entity_id: number.bedroom_switch_minimum_level +data: + value: 15 + +# Full range at top +service: number.set_value +target: + entity_id: number.bedroom_switch_maximum_level +data: + value: 255 + +# Smart resume +service: number.set_value +target: + entity_id: + - number.bedroom_switch_default_level_local + - number.bedroom_switch_default_level_remote +data: + value: 255 +``` + +### Task + Ambient Presets +Three brightness presets via paddle control: + +```yaml +# Comfortable ambient for single press +service: number.set_value +target: + entity_id: number.bedroom_switch_default_level_local +data: + value: 180 + +# Full bright for tasks (double-tap up) +service: number.set_value +target: + entity_id: number.bedroom_switch_brightness_level_for_double_tap_up +data: + value: 254 + +# Enable double-tap up +service: select.select_option +target: + entity_id: select.bedroom_switch_double_tap_up_to_param55 +data: + option: "Enabled" + +# Nightlight mode (double-tap down) +service: number.set_value +target: + entity_id: number.bedroom_switch_brightness_level_for_double_tap_down +data: + value: 30 + +# Enable double-tap down +service: select.select_option +target: + entity_id: select.bedroom_switch_double_tap_down_to_param56 +data: + option: "Enabled" +``` + +### Inverted Switch +For upside-down installation: + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_invert_switch +data: + option: "Yes" +``` diff --git a/inovelli/dimming-and-ramp.md b/inovelli/dimming-and-ramp.md new file mode 100644 index 0000000..c34d615 --- /dev/null +++ b/inovelli/dimming-and-ramp.md @@ -0,0 +1,219 @@ +# Dimming & Ramp Control Properties + +Properties controlling how the switch dims lights and transitions between brightness levels. Each property has separate settings for "Remote" (commands from Home Assistant hub/automations) and "Local" (physical paddle presses). + +## dimmingSpeedUpRemote + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 25 +- **Unit**: 100ms increments (e.g., 25 = 2.5 seconds) +- **Description**: Changes the speed that the light dims up when controlled from the hub. A setting of 0 turns the light immediately to the target level. Increasing the value slows down the transition speed. +- **Home Assistant Entity**: `number.[device_name]_dimming_speed_up_remote` +- **Special values**: + - `0` = Instant dimming (no transition) + - `1-127` = Duration in 100ms increments +- **Use cases**: Smooth transitions for automations, gradual wake-up lighting + +## dimmingSpeedUpLocal + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with dimmingSpeedUpRemote) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light dims up when controlled at the switch. A setting of 0 turns the light immediately to the target level. Setting to 127 keeps it in sync with dimmingSpeedUpRemote. +- **Home Assistant Entity**: `number.[device_name]_dimming_speed_up_local` +- **Special values**: + - `0` = Instant dimming + - `1-126` = Duration in 100ms increments + - `127` = Sync with dimmingSpeedUpRemote +- **Use cases**: Customize local dimming to be faster or slower than remote control + +## rampRateOffToOnRemote + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with dimmingSpeedUpRemote) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light turns on when controlled from the hub. A setting of 0 turns the light immediately on. +- **Home Assistant Entity**: `number.[device_name]_ramp_rate_off_to_on_remote` +- **Special values**: + - `0` = Instant on + - `1-126` = Duration in 100ms increments + - `127` = Sync with dimmingSpeedUpRemote +- **Use cases**: Gentle wake-up lighting, dramatic scene transitions + +## rampRateOffToOnLocal + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with dimmingSpeedUpRemote) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light turns on when controlled at the switch. A setting of 0 turns the light immediately on. +- **Home Assistant Entity**: `number.[device_name]_ramp_rate_off_to_on_local` +- **Special values**: + - `0` = Instant on + - `1-126` = Duration in 100ms increments + - `127` = Sync with dimmingSpeedUpRemote +- **Use cases**: Different on-ramp behavior for manual vs automated control + +## dimmingSpeedDownRemote + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with dimmingSpeedUpRemote) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light dims down when controlled from the hub. A setting of 0 turns the light immediately to the target level. +- **Home Assistant Entity**: `number.[device_name]_dimming_speed_down_remote` +- **Special values**: + - `0` = Instant dimming + - `1-126` = Duration in 100ms increments + - `127` = Sync with dimmingSpeedUpRemote +- **Use cases**: Asymmetric dimming (e.g., fast up, slow down for sunset effect) + +## dimmingSpeedDownLocal + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with dimmingSpeedUpLocal) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light dims down when controlled at the switch. A setting of 0 turns the light immediately to the target level. +- **Home Assistant Entity**: `number.[device_name]_dimming_speed_down_local` +- **Special values**: + - `0` = Instant dimming + - `1-126` = Duration in 100ms increments + - `127` = Sync with dimmingSpeedUpLocal +- **Use cases**: Match or differentiate from remote down-dimming behavior + +## rampRateOnToOffRemote + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with rampRateOffToOnRemote) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light turns off when controlled from the hub. A setting of 0 (instant) turns the light immediately off. +- **Home Assistant Entity**: `number.[device_name]_ramp_rate_on_to_off_remote` +- **Special values**: + - `0` = Instant off + - `1-126` = Duration in 100ms increments + - `127` = Sync with rampRateOffToOnRemote +- **Use cases**: Gradual fade to black, bedtime dimming routines + +## rampRateOnToOffLocal + +- **Type**: Number +- **Range**: 0-127 +- **Default**: 127 (sync with rampRateOffToOnLocal) +- **Unit**: 100ms increments +- **Description**: Changes the speed that the light turns off when controlled at the switch. A setting of 0 (instant) turns the light immediately off. +- **Home Assistant Entity**: `number.[device_name]_ramp_rate_on_to_off_local` +- **Special values**: + - `0` = Instant off + - `1-126` = Duration in 100ms increments + - `127` = Sync with rampRateOffToOnLocal +- **Use cases**: Theater-style fade out, energy-saving gradual shutoff + +## Configuration Patterns + +### Synchronized Dimming +Set all local parameters to `127` to use the remote parameters as the master speed control for all dimming operations. + +```yaml +# All in sync with dimmingSpeedUpRemote +service: number.set_value +target: + entity_id: number.bedroom_switch_dimming_speed_up_remote +data: + value: 25 # 2.5 seconds + +# Set all local to sync +service: number.set_value +target: + entity_id: + - number.bedroom_switch_dimming_speed_up_local + - number.bedroom_switch_ramp_rate_off_to_on_local + - number.bedroom_switch_dimming_speed_down_local + - number.bedroom_switch_ramp_rate_on_to_off_local +data: + value: 127 # Sync with remote +``` + +### Instant Local, Smooth Remote +- Local: `0` (instant control) +- Remote: `50` (5-second smooth transitions) + +```yaml +# Set remote for smooth transitions +service: number.set_value +target: + entity_id: + - number.bedroom_switch_dimming_speed_up_remote + - number.bedroom_switch_ramp_rate_off_to_on_remote + - number.bedroom_switch_dimming_speed_down_remote + - number.bedroom_switch_ramp_rate_on_to_off_remote +data: + value: 50 + +# Set local for instant response +service: number.set_value +target: + entity_id: + - number.bedroom_switch_dimming_speed_up_local + - number.bedroom_switch_ramp_rate_off_to_on_local + - number.bedroom_switch_dimming_speed_down_local + - number.bedroom_switch_ramp_rate_on_to_off_local +data: + value: 0 +``` + +### Asymmetric Dimming +- Dim up quickly: `10` (1 second) +- Dim down slowly: `100` (10 seconds) +- Creates dynamic lighting feel + +```yaml +# Quick dim up +service: number.set_value +target: + entity_id: + - number.bedroom_switch_dimming_speed_up_remote + - number.bedroom_switch_dimming_speed_up_local +data: + value: 10 + +# Slow dim down +service: number.set_value +target: + entity_id: + - number.bedroom_switch_dimming_speed_down_remote + - number.bedroom_switch_dimming_speed_down_local +data: + value: 100 +``` + +### Scene-Based Transitions +- Off→On ramp: `30` (3 seconds - gentle fade in) +- On→Off ramp: `100` (10 seconds - slow fade out) +- Dimming speed: `20` (2 seconds - responsive) + +```yaml +service: number.set_value +target: + entity_id: number.bedroom_switch_ramp_rate_off_to_on_remote +data: + value: 30 + +service: number.set_value +target: + entity_id: number.bedroom_switch_ramp_rate_on_to_off_remote +data: + value: 100 + +service: number.set_value +target: + entity_id: + - number.bedroom_switch_dimming_speed_up_remote + - number.bedroom_switch_dimming_speed_down_remote +data: + value: 20 +``` diff --git a/inovelli/led-configuration.md b/inovelli/led-configuration.md new file mode 100644 index 0000000..9893b7e --- /dev/null +++ b/inovelli/led-configuration.md @@ -0,0 +1,428 @@ +# LED Configuration Properties + +Properties controlling the LED strip on the switch, including colors, intensity levels, animated effects, and display modes. The switch has 7 individual LEDs plus global defaults. + +## LED Effects + +### led_effect + +Composite property to control LED effects for the entire LED bar. + +- **Type**: Composite (requires MQTT publish) +- **Description**: Controls animation effects for all LEDs on the bar +- **Access**: Set via MQTT publish to `zigbee2mqtt/[device_name]/set` +- **Properties**: + - `effect`: Animation effect type + - `color`: Color value (0-255, hue-based) + - `level`: Brightness (0-100%) + - `duration`: How long the effect lasts +- **Effect values**: + - `off` - Turn off LED effect + - `solid` - Solid color + - `fast_blink` - Fast blinking + - `slow_blink` - Slow blinking + - `pulse` - Pulsing effect + - `chase` - Chase/running pattern + - `open_close` - Open/close animation + - `small_to_big` - Small to big animation + - `aurora` - Aurora effect + - `slow_falling` - Slow falling effect + - `medium_falling` - Medium falling effect + - `fast_falling` - Fast falling effect + - `slow_rising` - Slow rising effect + - `medium_rising` - Medium rising effect + - `fast_rising` - Fast rising effect + - `medium_blink` - Medium blink + - `slow_chase` - Slow chase + - `fast_chase` - Fast chase + - `fast_siren` - Fast siren + - `slow_siren` - Slow siren + - `clear_effect` - Clear/stop current effect +- **Duration encoding**: + - `1-60` = Seconds + - `61-120` = Minutes (value - 60) + - `121-254` = Hours (value - 120) + - `255` = Indefinitely + +**Example usage:** +```yaml +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"led_effect": {"effect": "pulse", "color": 170, "level": 100, "duration": 255}}' +``` + +### individual_led_effect + +Composite property to control effects for a single LED. + +- **Type**: Composite (requires MQTT publish) +- **Description**: Controls animation effects for one specific LED +- **Access**: Set via MQTT publish to `zigbee2mqtt/[device_name]/set` +- **Properties**: + - `led`: LED number (1-7, 1=bottom, 7=top) + - `effect`: Animation effect type + - `color`: Color value (0-255) + - `level`: Brightness (0-100%) + - `duration`: How long the effect lasts +- **LED numbering**: 1 (bottom) through 7 (top) +- **Effect values**: + - `off` - Turn off LED effect + - `solid` - Solid color + - `fast_blink` - Fast blinking + - `slow_blink` - Slow blinking + - `pulse` - Pulsing effect + - `chase` - Chase pattern + - `falling` - Falling effect + - `rising` - Rising effect + - `aurora` - Aurora effect + - `clear_effect` - Clear/stop effect +- **Duration encoding**: Same as led_effect + +**Example usage:** +```yaml +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"individual_led_effect": {"led": "4", "effect": "fast_blink", "color": 0, "level": 100, "duration": 30}}' +``` + +## Global LED Properties + +### ledColorWhenOn + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 170 (Blue) +- **Description**: Default LED strip color when switch is on. Applies to all LEDs unless individually configured. +- **Home Assistant Entity**: `number.[device_name]_led_color_when_on` +- **Color wheel mapping**: 0-255 representing hue (0-360° mapped to 0-255) +- **Preset colors**: + - `0` = Red + - `21` = Orange + - `42` = Yellow + - `85` = Green + - `127` = Cyan + - `170` = Blue + - `212` = Violet + - `234` = Pink + - `255` = White + +### ledColorWhenOff + +- **Type**: Number +- **Range**: 0-255 +- **Default**: 170 (Blue) +- **Description**: Default LED strip color when switch is off. +- **Home Assistant Entity**: `number.[device_name]_led_color_when_off` +- **Preset colors**: Same as ledColorWhenOn + +### ledIntensityWhenOn + +- **Type**: Number +- **Range**: 0-100 +- **Default**: 33 (33%) +- **Description**: Default LED strip brightness when switch is on. +- **Home Assistant Entity**: `number.[device_name]_led_intensity_when_on` +- **Special values**: + - `0` = LEDs off (no indicator when on) + - `1-100` = Brightness percentage +- **Common values**: + - Night mode: `5-10` + - Default: `33` + - Maximum visibility: `100` + +### ledIntensityWhenOff + +- **Type**: Number +- **Range**: 0-100 +- **Default**: 1 (1%) +- **Description**: Default LED strip brightness when switch is off. +- **Home Assistant Entity**: `number.[device_name]_led_intensity_when_off` +- **Common values**: + - Nightlight: `1-5` + - Locator: `10-20` + - Off (stealth): `0` + +## Individual LED Properties + +Each of the 7 LEDs can be individually configured with color and intensity for both on and off states. LED #1 is the bottom, LED #7 is the top. + +### LED #1 (Bottom) + +- **Color When On**: `number.[device_name]_default_led1_color_when_on` (0-255, 255=sync with global) +- **Color When Off**: `number.[device_name]_default_led1_color_when_off` (0-255, 255=sync with global) +- **Intensity When On**: `number.[device_name]_default_led1_intensity_when_on` (0-101, 101=sync) +- **Intensity When Off**: `number.[device_name]_default_led1_intensity_when_off` (0-101, 101=sync) + +### LED #2 + +- **Color When On**: `number.[device_name]_default_led2_color_when_on` +- **Color When Off**: `number.[device_name]_default_led2_color_when_off` +- **Intensity When On**: `number.[device_name]_default_led2_intensity_when_on` +- **Intensity When Off**: `number.[device_name]_default_led2_intensity_when_off` + +### LED #3 + +- **Color When On**: `number.[device_name]_default_led3_color_when_on` +- **Color When Off**: `number.[device_name]_default_led3_color_when_off` +- **Intensity When On**: `number.[device_name]_default_led3_intensity_when_on` +- **Intensity When Off**: `number.[device_name]_default_led3_intensity_when_off` + +### LED #4 (Middle) + +- **Color When On**: `number.[device_name]_default_led4_color_when_on` +- **Color When Off**: `number.[device_name]_default_led4_color_when_off` +- **Intensity When On**: `number.[device_name]_default_led4_intensity_when_on` +- **Intensity When Off**: `number.[device_name]_default_led4_intensity_when_off` + +### LED #5 + +- **Color When On**: `number.[device_name]_default_led5_color_when_on` +- **Color When Off**: `number.[device_name]_default_led5_color_when_off` +- **Intensity When On**: `number.[device_name]_default_led5_intensity_when_on` +- **Intensity When Off**: `number.[device_name]_default_led5_intensity_when_off` + +### LED #6 + +- **Color When On**: `number.[device_name]_default_led6_color_when_on` +- **Color When Off**: `number.[device_name]_default_led6_color_when_off` +- **Intensity When On**: `number.[device_name]_default_led6_intensity_when_on` +- **Intensity When Off**: `number.[device_name]_default_led6_intensity_when_off` + +### LED #7 (Top) + +- **Color When On**: `number.[device_name]_default_led7_color_when_on` +- **Color When Off**: `number.[device_name]_default_led7_color_when_off` +- **Intensity When On**: `number.[device_name]_default_led7_intensity_when_on` +- **Intensity When Off**: `number.[device_name]_default_led7_intensity_when_off` + +**Note**: Individual LED color set to `255` or intensity set to `101` means "follow global default" + +## LED Display Modes + +### ledBarScaling + +- **Type**: Select +- **Values**: "Gen3 method (VZM-style)", "Gen2 method (LZW-style)" +- **Default**: "Gen3 method (VZM-style)" +- **Description**: Controls how LED bar represents dimmer level. +- **Home Assistant Entity**: `select.[device_name]_led_bar_scaling` +- **Use cases**: Match behavior of older Inovelli switches for consistency + +### onOffLedMode + +- **Type**: Select +- **Values**: "All", "One" +- **Default**: "All" +- **Description**: When in On/Off mode, use full LED bar or just one LED. +- **Home Assistant Entity**: `select.[device_name]_on_off_led_mode` +- **Use cases**: + - Match Gen 2 Red/Black series appearance + - Preference for single LED indicator + - Reduce LED brightness/distraction + +## Configuration Patterns + +### Standard Blue Indicator + +```yaml +service: number.set_value +target: + entity_id: number.bedroom_switch_led_color_when_on +data: + value: 170 # Blue + +service: number.set_value +target: + entity_id: number.bedroom_switch_led_color_when_off +data: + value: 170 # Blue + +service: number.set_value +target: + entity_id: number.bedroom_switch_led_intensity_when_on +data: + value: 33 + +service: number.set_value +target: + entity_id: number.bedroom_switch_led_intensity_when_off +data: + value: 1 +``` + +### Green On / Red Off + +```yaml +service: number.set_value +target: + entity_id: number.bedroom_switch_led_color_when_on +data: + value: 85 # Green + +service: number.set_value +target: + entity_id: number.bedroom_switch_led_color_when_off +data: + value: 0 # Red + +service: number.set_value +target: + entity_id: + - number.bedroom_switch_led_intensity_when_on + - number.bedroom_switch_led_intensity_when_off +data: + value: 40 +``` + +### Stealth Mode + +```yaml +service: number.set_value +target: + entity_id: + - number.bedroom_switch_led_intensity_when_on + - number.bedroom_switch_led_intensity_when_off +data: + value: 0 +``` + +### Nightlight Mode + +```yaml +# Soft pink when off, dark when on +service: number.set_value +target: + entity_id: number.bedroom_switch_led_color_when_off +data: + value: 234 # Pink + +service: number.set_value +target: + entity_id: number.bedroom_switch_led_intensity_when_off +data: + value: 5 + +service: number.set_value +target: + entity_id: number.bedroom_switch_led_intensity_when_on +data: + value: 0 +``` + +### Rainbow Bar (Individual LEDs) + +```yaml +# Set each LED to a different color +service: number.set_value +target: + entity_id: + - number.bedroom_switch_default_led1_color_when_on +data: + value: 0 # Red + +service: number.set_value +target: + entity_id: number.bedroom_switch_default_led2_color_when_on +data: + value: 42 # Yellow + +service: number.set_value +target: + entity_id: number.bedroom_switch_default_led3_color_when_on +data: + value: 85 # Green + +service: number.set_value +target: + entity_id: number.bedroom_switch_default_led4_color_when_on +data: + value: 127 # Cyan + +service: number.set_value +target: + entity_id: number.bedroom_switch_default_led5_color_when_on +data: + value: 170 # Blue + +service: number.set_value +target: + entity_id: number.bedroom_switch_default_led6_color_when_on +data: + value: 212 # Violet + +service: number.set_value +target: + entity_id: number.bedroom_switch_default_led7_color_when_on +data: + value: 234 # Pink +``` + +### Notification Alert (Pulse Red) + +```yaml +# 30 second red pulse on all LEDs +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"led_effect": {"effect": "pulse", "color": 0, "level": 100, "duration": 30}}' +``` + +### Status Indicator (Middle LED Blink) + +```yaml +# Blink middle LED (LED 4) blue for 1 minute +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"individual_led_effect": {"led": "4", "effect": "fast_blink", "color": 170, "level": 100, "duration": 60}}' +``` + +### Doorbell Notification (Fast Chase) + +```yaml +# Fast chase effect in cyan for 10 seconds +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"led_effect": {"effect": "fast_chase", "color": 127, "level": 100, "duration": 10}}' +``` + +### Clear All Effects + +```yaml +service: mqtt.publish +data: + topic: zigbee2mqtt/bedroom_switch/set + payload: '{"led_effect": {"effect": "clear_effect"}}' +``` + +## LED Color Palette + +Quick reference for common colors (hue-based, 0-255): +- `0` - Red +- `21` - Orange +- `42` - Yellow +- `64` - Yellow-Green +- `85` - Green +- `106` - Cyan-Green +- `127` - Cyan +- `148` - Blue-Cyan +- `170` - Blue (default) +- `191` - Blue-Violet +- `212` - Violet +- `223` - Magenta +- `234` - Pink +- `244` - Pink-Red +- `255` - White + +## Notes + +- Individual LED properties override global defaults +- Setting individual LED color to `255` makes it follow global color +- Setting individual LED intensity to `101` makes it follow global intensity +- LED effects from `led_effect` and `individual_led_effect` are temporary +- Effects automatically clear after duration expires or when `clear_effect` is sent +- Property changes take effect immediately without requiring switch reboot +- Use MQTT publish for LED effects; they cannot be set via Home Assistant number/select entities diff --git a/inovelli/power-monitoring.md b/inovelli/power-monitoring.md new file mode 100644 index 0000000..f123606 --- /dev/null +++ b/inovelli/power-monitoring.md @@ -0,0 +1,364 @@ +# Power & Energy Monitoring Properties + +Properties for power consumption measurement, energy usage tracking, and reporting thresholds via Zigbee2MQTT. + +## Sensor Properties (Read-Only) + +### power + +- **Type**: Sensor (read-only) +- **Unit**: Watts (W) +- **Description**: Instantaneous measured power consumption of the connected load. +- **Home Assistant Entity**: `sensor.[device_name]_power` +- **Updates**: Based on activePowerReports threshold or periodicPowerAndEnergyReports interval +- **Use cases**: + - Real-time power monitoring + - Detect when lights turn on/off + - Track power consumption changes + - Trigger automations based on power usage + +### energy + +- **Type**: Sensor (read-only) +- **Unit**: Kilowatt-hours (kWh) +- **Description**: Cumulative energy consumption over time. +- **Home Assistant Entity**: `sensor.[device_name]_energy` +- **Updates**: Based on activeEnergyReports threshold or periodicPowerAndEnergyReports interval +- **Use cases**: + - Long-term energy tracking + - Billing/cost calculations + - Energy usage analytics + - Historical consumption trends + +## Reporting Configuration + +### activePowerReports + +- **Type**: Number +- **Range**: 0-100 +- **Default**: 10 (10% change) +- **Description**: Percent power level change that will result in a new power report being sent. 0 = Disabled. +- **Home Assistant Entity**: `number.[device_name]_active_power_reports` +- **Special values**: + - `0` = Disabled (no automatic power reports based on change) + - `1-100` = Percentage change threshold +- **Use cases**: + - Real-time power monitoring + - Detect significant power changes + - Trigger automations based on power delta +- **Common values**: + - Sensitive monitoring: `5` (5% change) + - Default: `10` (10% change) + - Reduce network traffic: `20` (20% change) +- **Network impact**: Lower values generate more Zigbee traffic + +### periodicPowerAndEnergyReports + +- **Type**: Number +- **Range**: 0-32767 +- **Default**: 3600 seconds (1 hour) +- **Description**: Time period between consecutive power & energy reports being sent (in seconds). The timer is reset after each report is sent. +- **Home Assistant Entity**: `number.[device_name]_periodic_power_and_energy_reports` +- **Units**: Seconds +- **Special values**: + - `0` = Disabled (no periodic reports) + - `1-32767` = Report interval in seconds +- **Use cases**: + - Regular energy usage logging + - Dashboard updates + - Long-term consumption tracking + - Backup reporting if active reports miss changes +- **Common values**: + - Frequent updates: `300` (5 minutes) + - Default: `3600` (1 hour) + - Reduce traffic: `7200` (2 hours) + - Daily: `86400` (24 hours) +- **Note**: Works alongside activePowerReports and activeEnergyReports (not instead of) + +### activeEnergyReports + +- **Type**: Number +- **Range**: 0-32767 +- **Default**: 10 (0.10 kWh) +- **Description**: Energy level change which will result in sending a new energy report. 0 = disabled, 1-32767 = 0.01kWh-327.67kWh. +- **Home Assistant Entity**: `number.[device_name]_active_energy_reports` +- **Units**: 0.01 kWh (value of 10 = 0.10 kWh = 100 Wh) +- **Special values**: + - `0` = Disabled (no automatic energy reports based on accumulation) + - `1-32767` = Threshold in 0.01 kWh increments +- **Use cases**: + - Track cumulative energy consumption + - Billing/cost calculations + - Energy usage analytics + - Trigger automations at energy milestones +- **Common values**: + - Sensitive: `1` (0.01 kWh = 10 Wh) + - Default: `10` (0.10 kWh = 100 Wh) + - Reduce traffic: `100` (1.0 kWh) +- **Example**: Default of 10 means report every 100 Wh (0.1 kWh) consumed + +## Performance Tuning + +### quickStartTime + +- **Type**: Number +- **Range**: 0-60 +- **Default**: 0 (disabled) +- **Description**: Duration of full power output while lamp transitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s. +- **Home Assistant Entity**: `number.[device_name]_quick_start_time` +- **Units**: 1/60th of a second +- **Use cases**: + - Help LED bulbs start reliably + - Overcome LED driver inrush requirements + - Prevent flickering on startup +- **Common values**: + - Disabled: `0` + - Short boost: `10` (0.17 seconds) + - Default boost: `20` (0.33 seconds) + - Long boost: `60` (1 second) + +### quickStartLevel + +- **Type**: Number +- **Range**: 1-254 +- **Default**: 254 (near full power) +- **Description**: Level of power output during Quick Start Light time (quickStartTime). +- **Home Assistant Entity**: `number.[device_name]_quick_start_level` +- **Use cases**: + - Ensure LED bulbs receive enough initial power to start + - Match bulb requirements for startup +- **Requires**: quickStartTime > 0 + +### higherOutputInNonNeutral + +- **Type**: Select +- **Values**: "Disabled (default)", "Enabled" +- **Default**: "Disabled (default)" +- **Description**: Increase output level in non-neutral mode to help bulbs start and operate properly. +- **Home Assistant Entity**: `select.[device_name]_higher_output_in_non_neutral` +- **Use cases**: + - Non-neutral installations with LED bulbs + - Improve dimming range in non-neutral mode + - Help bulbs work better without neutral wire +- **Note**: Only applies to non-neutral wiring configurations + +## Power Type Detection + +### powerType + +- **Type**: Sensor (read-only) +- **Values**: "Non Neutral", "Neutral" +- **Description**: Detected power wiring type. +- **Home Assistant Entity**: `sensor.[device_name]_power_type` +- **Read-only**: Cannot be changed by user, automatically detected +- **Use cases**: + - Diagnostic information + - Verify wiring configuration + - Troubleshooting installation issues +- **Note**: Automatically detected by switch hardware + +## Configuration Patterns + +### Real-Time Power Monitoring + +```yaml +# Sensitive power change detection +service: number.set_value +target: + entity_id: number.bedroom_switch_active_power_reports +data: + value: 5 # Report on 5% power change + +# Frequent periodic backup +service: number.set_value +target: + entity_id: number.bedroom_switch_periodic_power_and_energy_reports +data: + value: 300 # Every 5 minutes + +# Disable energy threshold reports (focus on power) +service: number.set_value +target: + entity_id: number.bedroom_switch_active_energy_reports +data: + value: 0 # Disabled +``` + +### Energy Usage Tracking + +```yaml +# Less sensitive power reports +service: number.set_value +target: + entity_id: number.bedroom_switch_active_power_reports +data: + value: 20 # Report on 20% change + +# Hourly periodic reports +service: number.set_value +target: + entity_id: number.bedroom_switch_periodic_power_and_energy_reports +data: + value: 3600 # Every hour + +# Energy threshold reporting +service: number.set_value +target: + entity_id: number.bedroom_switch_active_energy_reports +data: + value: 10 # Report every 0.1 kWh +``` + +### Low Network Traffic + +```yaml +# High power change threshold +service: number.set_value +target: + entity_id: number.bedroom_switch_active_power_reports +data: + value: 25 # 25% change + +# 2-hour periodic reports +service: number.set_value +target: + entity_id: number.bedroom_switch_periodic_power_and_energy_reports +data: + value: 7200 + +# High energy threshold +service: number.set_value +target: + entity_id: number.bedroom_switch_active_energy_reports +data: + value: 100 # Every 1 kWh +``` + +### LED Bulb Quick Start + +```yaml +# Enable quick start with 1/3 second boost +service: number.set_value +target: + entity_id: number.bedroom_switch_quick_start_time +data: + value: 20 # 20/60 = 0.33 seconds + +# Full power during quick start +service: number.set_value +target: + entity_id: number.bedroom_switch_quick_start_level +data: + value: 254 # Near maximum +``` + +### Non-Neutral Optimization + +```yaml +# Enable higher output for non-neutral +service: select.select_option +target: + entity_id: select.bedroom_switch_higher_output_in_non_neutral +data: + option: "Enabled" + +# May also need quick start +service: number.set_value +target: + entity_id: number.bedroom_switch_quick_start_time +data: + value: 30 # 0.5 seconds +``` + +### Disable All Monitoring + +```yaml +# Turn off all automatic reporting +service: number.set_value +target: + entity_id: + - number.bedroom_switch_active_power_reports + - number.bedroom_switch_periodic_power_and_energy_reports + - number.bedroom_switch_active_energy_reports +data: + value: 0 +``` + +## Reporting Behavior + +The switch can send reports via three independent mechanisms: +1. **Active Power Reports**: Sent when power changes by threshold percentage +2. **Active Energy Reports**: Sent when accumulated energy reaches threshold +3. **Periodic Reports**: Sent at regular time intervals + +All three work independently and can be used together for comprehensive monitoring. + +## Home Assistant Integration Example + +### Power-Based Automation + +```yaml +automation: + - alias: "Detect Light On" + trigger: + - platform: numeric_state + entity_id: sensor.bedroom_switch_power + above: 5 # 5W threshold + action: + - service: notify.mobile_app + data: + message: "Bedroom light turned on ({{ states('sensor.bedroom_switch_power') }}W)" + + - alias: "Detect Light Off" + trigger: + - platform: numeric_state + entity_id: sensor.bedroom_switch_power + below: 1 # Less than 1W + for: + seconds: 5 + action: + - service: notify.mobile_app + data: + message: "Bedroom light turned off" +``` + +### Energy Cost Tracking + +```yaml +automation: + - alias: "Daily Energy Report" + trigger: + - platform: time + at: "23:59:00" + action: + - service: notify.mobile_app + data: + message: > + Bedroom light energy today: {{ states('sensor.bedroom_switch_energy') }} kWh + Estimated cost: ${{ (states('sensor.bedroom_switch_energy') | float * 0.12) | round(2) }} +``` + +## Example Calculations + +### Power Threshold +activePowerReports = `20` → Report when power changes by 20% +- Load at 40W, dims to 35W: Change is 12.5%, no report +- Load at 40W, dims to 30W: Change is 25%, report sent + +### Energy Threshold +activeEnergyReports = `50` → Report every 0.5 kWh (500 Wh) +- 100W bulb for 5 hours: 500 Wh consumed → Report sent + +### Periodic Reporting +periodicPowerAndEnergyReports = `1800` → Report every 30 minutes +- Regardless of power/energy changes, status sent every 30min + +## Important Notes + +- All reporting properties work independently +- Power and energy sensors update based on configured thresholds +- quickStartTime/Level only applies to the transition from off to on +- higherOutputInNonNeutral only helps in non-neutral wiring setups +- Sensors are read-only; only configuration properties can be set +- Lower reporting thresholds increase Zigbee network traffic +- Power readings may have ~1W accuracy tolerance diff --git a/inovelli/protection-safety.md b/inovelli/protection-safety.md new file mode 100644 index 0000000..7126d9f --- /dev/null +++ b/inovelli/protection-safety.md @@ -0,0 +1,213 @@ +# Protection & Safety Properties + +Properties for device protection, temperature monitoring, access control, and overheat safety features via Zigbee2MQTT. + +## Temperature Monitoring (Read-Only) + +### internalTemperature + +- **Type**: Sensor (read-only) +- **Range**: 0-127°C +- **Unit**: Degrees Celsius (°C) +- **Description**: The temperature measured by the temperature sensor inside the chip, in degrees Celsius. +- **Home Assistant Entity**: `sensor.[device_name]_internal_temperature` +- **Read-only**: Cannot be changed by user, reports actual temperature +- **Use cases**: + - Monitor switch health + - Detect overheating conditions + - Trigger cooling automations + - Diagnostic information +- **Normal range**: Typically 30-50°C during operation +- **Warning signs**: + - Above 60°C: High temperature, check ventilation + - Above 70°C: Overheat protection may activate + +### overheat + +- **Type**: Sensor (read-only) +- **Values**: "No Alert", "Overheated" +- **Description**: Indicates if the internal chipset is currently in an overheated state. +- **Home Assistant Entity**: `sensor.[device_name]_overheat` +- **Read-only**: Cannot be changed by user, reports protection status +- **Use cases**: + - Safety monitoring + - Alert when switch is overheating + - Diagnostic for load issues + - Automation triggers for problems +- **Behavior when "Overheated"**: + - Switch may reduce output or shut off load + - LED may indicate error state + - Switch protects itself from damage +- **Recovery**: Automatically resets when temperature drops to safe level +- **Causes**: + - Excessive load (too many bulbs/watts) + - Poor ventilation (box too small, insulation) + - High ambient temperature + - Short circuit or wiring issues + +## Access Control + +### localProtection + +- **Type**: Select +- **Values**: "Disabled", "Enabled" +- **Default**: "Disabled" +- **Description**: Ability to control switch from the wall. When enabled, disables physical paddle control. +- **Home Assistant Entity**: `select.[device_name]_local_protection` +- **Use cases**: + - Child safety locks + - Prevent accidental changes + - Commercial applications + - Force automation-only control +- **Behavior when "Enabled"**: + - Paddle presses do nothing + - Zigbee commands still work + - Switch can only be controlled via hub/automations + - LED effects still respond to paddle (visual feedback) +- **Override**: Can be disabled via Zigbee command from hub +- **Note**: Does not affect config button or air-gap switch + +### remoteProtection + +- **Type**: Sensor (read-only via Zigbee2MQTT) +- **Values**: "Disabled", "Enabled" +- **Default**: "Disabled" +- **Description**: Ability to control switch from the hub. +- **Home Assistant Entity**: `sensor.[device_name]_remote_protection` +- **Read-only via Zigbee2MQTT**: Status can be read but not changed remotely +- **Use cases**: + - Prevent automation interference + - Local control only mode + - Troubleshooting automation issues +- **Behavior when "Enabled"**: + - Paddle works normally + - Zigbee on/off/dim commands ignored + - Configuration commands may still be accepted + - Switch operates as manual-only dimmer + +## Configuration Patterns + +### Standard Operation (No Protection) + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_local_protection +data: + option: "Disabled" +``` + +### Child Lock (Paddle Disabled) + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_local_protection +data: + option: "Enabled" +``` + +### Temperature Monitoring Automation + +```yaml +automation: + - alias: "Inovelli Overheat Alert" + trigger: + - platform: numeric_state + entity_id: sensor.bedroom_switch_internal_temperature + above: 60 + action: + - service: notify.mobile_app + data: + message: "Bedroom switch overheating: {{ states('sensor.bedroom_switch_internal_temperature') }}°C" + + - alias: "Inovelli Overheat Protection Triggered" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_overheat + to: "Overheated" + action: + - service: notify.mobile_app + data: + message: "ALERT: Bedroom switch overheat protection activated!" + title: "Switch Overheat" + - service: light.turn_off + entity_id: light.bedroom_switch +``` + +## Safety Considerations + +### Overheat Protection +The switch has built-in thermal protection that cannot be disabled: +- Monitors internal temperature continuously +- Automatically reduces output if too hot +- Protects switch from permanent damage +- Resets automatically when cooled + +### Common Causes of Overheating +1. **Overloaded circuit**: Too many bulbs/high wattage +2. **Poor ventilation**: Tight gang box, spray foam insulation +3. **Non-neutral wiring**: Generates more heat +4. **Ambient temperature**: Hot attic/outdoor locations +5. **Electrical issues**: Poor connections, high resistance + +### Prevention +- Don't exceed rated wattage (typically 150W LED, 300W incandescent) +- Ensure adequate box size and ventilation +- Use fan/cooling for hot environments +- Regular temperature monitoring via automations +- Quality bulbs that don't overdraw current + +### Emergency Procedures +If overheat protection triggers: +1. Check overheat sensor status +2. Read internalTemperature value +3. Turn off load via Zigbee if possible +4. Allow switch to cool (15-30 minutes) +5. Investigate cause before restoring power +6. Reduce load or improve ventilation + +## Protection Use Cases + +### Vacation Mode Child Lock +```yaml +# Before leaving, disable paddle +service: select.select_option +target: + entity_id: select.bedroom_switch_local_protection +data: + option: "Enabled" + +# Configure automations for lighting schedule +``` + +### Critical Lighting Protection +```yaml +# For always-on circuits (security, safety) +service: select.select_option +target: + entity_id: select.bedroom_switch_local_protection +data: + option: "Enabled" +``` + +### Commercial Installation +```yaml +# Public spaces - prevent tampering +service: select.select_option +target: + entity_id: select.bedroom_switch_local_protection +data: + option: "Enabled" +``` + +## Important Notes + +- localProtection can be changed remotely via Zigbee2MQTT +- remoteProtection is read-only via Zigbee2MQTT +- Physical config button can reset protections if needed +- Air-gap switch always works regardless of protection settings +- Overheat protection is hardware-based and cannot be disabled +- Temperature monitoring via internalTemperature sensor +- Local + Remote protection together creates fully locked state (not recommended) +- Temperature readings update based on reporting configuration diff --git a/inovelli/switch-config.md b/inovelli/switch-config.md new file mode 100644 index 0000000..caefad7 --- /dev/null +++ b/inovelli/switch-config.md @@ -0,0 +1,296 @@ +# Switch Configuration Properties + +Properties defining switch type, operational modes, hardware configuration, and timing behavior for Zigbee2MQTT integration. + +## Switch Type & Wiring + +### switchType + +- **Type**: Select +- **Values**: "Single Pole", "3-Way Dumb Switch", "3-Way Aux Switch", "Single-Pole Full Sine Wave" +- **Default**: "Single Pole" +- **Description**: Configures the physical switch wiring type and companion switch behavior. +- **Home Assistant Entity**: `select.[device_name]_switch_type` +- **Use cases**: + - Single location: "Single Pole" + - Multi-location with dumb 3-way: "3-Way Dumb Switch" + - Multi-location with Aux switch: "3-Way Aux Switch" + - Ceiling fan control: "Single-Pole Full Sine Wave" +- **Important**: Must match actual wiring configuration + +### powerType + +- **Type**: Sensor (read-only) +- **Values**: "Non Neutral", "Neutral" +- **Description**: Detected power wiring type. +- **Home Assistant Entity**: `sensor.[device_name]_power_type` +- **Read-only**: Automatically detected by switch hardware +- **Use cases**: + - Diagnostic information + - Verify wiring configuration + - Troubleshooting installation issues + +### dimmingMode + +- **Type**: Sensor (read-only) +- **Values**: "Leading edge", "Trailing edge" +- **Default**: "Trailing edge" +- **Description**: Dimming method used for load control. Can only be changed at the switch. +- **Home Assistant Entity**: `sensor.[device_name]_dimming_mode` +- **Read-only via Zigbee2MQTT**: Must be configured at the physical switch +- **Use cases**: + - LED bulbs: "Trailing edge" + - Incandescent: "Leading edge" + - Troubleshooting flicker/buzz issues +- **Note**: Trailing edge only available on neutral single-pole and neutral multi-way with aux switch + +## Operational Modes + +### outputMode + +- **Type**: Select +- **Values**: "Dimmer", "On/Off" +- **Default**: "Dimmer" +- **Description**: Switches between dimmer and on/off only operation. +- **Home Assistant Entity**: `select.[device_name]_output_mode` +- **Use cases**: + - Dimming incompatible loads: "On/Off" + - Standard operation: "Dimmer" + - User preference for simple on/off: "On/Off" +- **Behavior in On/Off mode**: + - Paddle only turns on/off (no dimming) + - Commands still accept brightness levels + - No ramp rates (instant on/off) + - Simpler operation for non-dimmable loads + +### smartBulbMode + +- **Type**: Select +- **Values**: "Disabled", "Smart Bulb Mode" +- **Default**: "Disabled" +- **Description**: Keeps power always on to load, disables dimming. For smart bulbs that need constant power. +- **Home Assistant Entity**: `select.[device_name]_smart_bulb_mode` +- **Use cases**: + - Regular dumb bulbs: "Disabled" + - Philips Hue, LIFX, other smart bulbs: "Smart Bulb Mode" + - Smart switches in parallel with dimmer: "Smart Bulb Mode" +- **Behavior when enabled**: + - Load receives constant full power + - Switch still sends Zigbee commands + - Paddle controls scenes/automations, not load directly + - LED bar still shows "virtual" dimming level +- **Important**: Required for smart bulbs to maintain Wi-Fi/Zigbee/Z-Wave control + +### relayClick + +- **Type**: Select +- **Values**: "Disabled (Click Sound On)", "Enabled (Click Sound Off)" +- **Default**: "Disabled (Click Sound On)" +- **Description**: Controls audible relay click sound. In neutral on/off setups, you may disable the click sound by creating a "simulated" on/off where the switch only turns on to 100 or off to 0. +- **Home Assistant Entity**: `select.[device_name]_relay_click` +- **Use cases**: + - Silent operation (bedrooms): "Enabled" (removes click) + - Normal operation: "Disabled" (click present) +- **Note**: Only applies to neutral on/off mode configurations + +## Timing & Button Behavior + +### buttonDelay + +- **Type**: Select +- **Values**: "0ms", "100ms", "200ms", "300ms", "400ms", "500ms", "600ms", "700ms", "800ms", "900ms" +- **Default**: "500ms" +- **Description**: Delay before switch responds to paddle press. Allows multi-tap detection. +- **Home Assistant Entity**: `select.[device_name]_button_delay` +- **Special values**: + - "0ms" = Instant response (disables multi-tap features and button press events) + - "500ms" = Default, balanced + - "700ms"-"900ms" = More forgiving multi-tap timing +- **Use cases**: + - Instant control: "0ms" (no multi-tap) + - Default multi-tap: "500ms" (good balance) + - Reliable multi-tap: "700ms" or higher +- **Trade-off**: Higher values enable easier multi-tap but slower single-press response + +## LED Display Modes + +### ledBarScaling + +- **Type**: Select +- **Values**: "Gen3 method (VZM-style)", "Gen2 method (LZW-style)" +- **Default**: "Gen3 method (VZM-style)" +- **Description**: Controls how LED bar represents dimmer level. +- **Home Assistant Entity**: `select.[device_name]_led_bar_scaling` +- **Use cases**: Match behavior of older Inovelli switches for consistency + +### onOffLedMode + +- **Type**: Select +- **Values**: "All", "One" +- **Default**: "All" +- **Description**: When in On/Off mode, use full LED bar or just one LED. +- **Home Assistant Entity**: `select.[device_name]_on_off_led_mode` +- **Use cases**: + - Match Gen 2 Red/Black series appearance: "One" + - Standard bar graph: "All" + - Reduce LED brightness/distraction: "One" + +## Configuration Patterns + +### Standard Single-Pole Installation + +```yaml +service: select.select_option +target: + entity_id: + - select.bedroom_switch_switch_type + - select.bedroom_switch_output_mode + - select.bedroom_switch_smart_bulb_mode +data: + option: "Single Pole" + +service: select.select_option +target: + entity_id: select.bedroom_switch_output_mode +data: + option: "Dimmer" + +service: select.select_option +target: + entity_id: select.bedroom_switch_smart_bulb_mode +data: + option: "Disabled" +``` + +### 3-Way with Aux Switch + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_switch_type +data: + option: "3-Way Aux Switch" + +service: select.select_option +target: + entity_id: select.bedroom_switch_button_delay +data: + option: "500ms" # Allow multi-tap +``` + +### Smart Bulb Control + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_switch_type +data: + option: "Single Pole" + +service: select.select_option +target: + entity_id: select.bedroom_switch_smart_bulb_mode +data: + option: "Smart Bulb Mode" + +service: select.select_option +target: + entity_id: select.bedroom_switch_output_mode +data: + option: "Dimmer" # Virtual dimming for scenes +``` + +### Non-Dimmable Load + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_output_mode +data: + option: "On/Off" +``` + +### Silent Operation (No Relay Click) + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_relay_click +data: + option: "Enabled" # Removes click sound +``` + +### Multi-Tap Optimization + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_button_delay +data: + option: "700ms" # Reliable double-tap detection + +# Also enable double-tap shortcuts +service: select.select_option +target: + entity_id: + - select.bedroom_switch_double_tap_up_to_param55 + - select.bedroom_switch_double_tap_down_to_param56 +data: + option: "Enabled" +``` + +### Instant Response (No Scenes) + +```yaml +service: select.select_option +target: + entity_id: select.bedroom_switch_button_delay +data: + option: "0ms" # Instant, but disables button events + +# Note: 0ms disables multi-tap and button press events entirely +``` + +## Troubleshooting Guide + +### Bulb Flickers +- Check dimmingMode (can only be changed at switch, not via Zigbee2MQTT) +- Increase minimumLevel property +- Verify bulb is dimmable +- Try smartBulbMode if using smart bulbs + +### Buzzing/Humming +- Try changing dimmingMode at the physical switch +- Reduce load (fewer bulbs) +- Verify bulb compatibility with dimmer + +### Aux Switch Not Working +- Verify switchType = "3-Way Aux Switch" +- Check wiring: Line, Load, Traveler +- Ensure Aux switch is compatible (GE/Inovelli) + +### Smart Bulbs Lose Connection +- Enable smartBulbMode = "Smart Bulb Mode" +- This keeps power constant to bulbs + +### Switch Too Slow/Too Fast +- Adjust buttonDelay +- Lower = faster response, harder multi-tap +- Higher = slower response, easier multi-tap +- "0ms" disables button events entirely + +### Non-Neutral Installation Issues +- Check powerType sensor to verify detection +- Ensure minimum load requirements met +- May need bypass capacitor for LED loads +- Consider higherOutputInNonNeutral option + +## Important Notes + +- dimmingMode can only be changed at the physical switch, not via Zigbee2MQTT +- powerType is automatically detected and read-only +- smartBulbMode is essential for any smart bulb integration +- buttonDelay of "0ms" completely disables button press events and multi-tap +- relayClick only applies to specific neutral on/off configurations +- switchType must match your actual wiring for proper operation +- LED scaling and mode options provide compatibility with older Inovelli switches diff --git a/inovelli/timers-automation.md b/inovelli/timers-automation.md new file mode 100644 index 0000000..a49617c --- /dev/null +++ b/inovelli/timers-automation.md @@ -0,0 +1,341 @@ +# Timers & Automation Properties + +Properties for time-based features including auto-off timers, LED timeouts, multi-tap shortcuts, and button press events via Zigbee2MQTT. + +## Auto-Off Timer + +### autoTimerOff + +- **Type**: Number +- **Range**: 0-32767 +- **Default**: 0 (disabled) +- **Unit**: Seconds +- **Description**: Automatically turns the switch off after this many seconds. When the switch is turned on a timer is started. When the timer expires, the switch is turned off. 0 = Auto off is disabled. +- **Home Assistant Entity**: `number.[device_name]_auto_timer_off` +- **Special values**: + - `0` = Disabled (no auto-off) + - `1-32767` = Time in seconds before auto-off +- **Use cases**: + - Bathroom fan auto-off + - Closet lights safety shutoff + - Energy saving for forgotten lights + - Timed task lighting +- **Common values**: + - 3 minutes: `180` + - 5 minutes: `300` + - 15 minutes: `900` + - 30 minutes: `1800` + - 1 hour: `3600` + - 2 hours: `7200` +- **Behavior**: + - Timer starts when load is turned on + - Resets if manually turned off then on again + - Works for both local (paddle) and remote (hub) activation + - Switch turns off automatically when timer expires +- **Maximum**: ~9 hours (32767 seconds) + +## LED Indicator Timeout + +### loadLevelIndicatorTimeout + +- **Type**: Select +- **Values**: "Stay Off", "1 Second", "2 Seconds", "3 Seconds", "4 Seconds", "5 Seconds", "6 Seconds", "7 Seconds", "8 Seconds", "9 Seconds", "10 Seconds", "Stay On" +- **Default**: "3 Seconds" +- **Description**: Shows the level that the load is at for x number of seconds after the load is adjusted and then returns to the Default LED state. 0 = Stay Off, 1-10 = seconds, 11 = Stay On. +- **Home Assistant Entity**: `select.[device_name]_load_level_indicator_timeout` +- **Use cases**: + - Show brightness level briefly after adjustment + - Return to default LED color/intensity after timeout + - Visual feedback for dimming changes +- **Behavior**: + - When brightness is adjusted + - LED bar shows actual load level + - After timeout, returns to configured LED state (ledColorWhen*, ledIntensityWhen*) + +## Multi-Tap Shortcuts + +### doubleTapUpToParam55 + +- **Type**: Select +- **Values**: "Disabled", "Enabled" +- **Default**: "Disabled" +- **Description**: Enable or Disable setting level to brightnessLevelForDoubleTapUp on double-tap UP. +- **Home Assistant Entity**: `select.[device_name]_double_tap_up_to_param55` +- **Use cases**: + - Quick full-bright shortcut + - Task lighting activation + - Scene trigger for bright preset +- **Prerequisites**: + - Requires buttonDelay > "0ms" for multi-tap detection + - Target level set in brightnessLevelForDoubleTapUp +- **Behavior**: + - Works from any current brightness or off state + - Jumps directly to brightnessLevelForDoubleTapUp level + - Can be used to trigger automations via action events + +### doubleTapDownToParam56 + +- **Type**: Select +- **Values**: "Disabled", "Enabled" +- **Default**: "Disabled" +- **Description**: Enable or Disable setting level to brightnessLevelForDoubleTapDown on double-tap DOWN. +- **Home Assistant Entity**: `select.[device_name]_double_tap_down_to_param56` +- **Use cases**: + - Quick dim/nightlight mode + - Quick off shortcut + - Scene trigger for dim preset +- **Prerequisites**: + - Requires buttonDelay > "0ms" for multi-tap detection + - Target level set in brightnessLevelForDoubleTapDown +- **Behavior**: + - Works from any current brightness + - Jumps directly to brightnessLevelForDoubleTapDown level + - If brightnessLevelForDoubleTapDown = 0, turns off + - Can be used to trigger automations via action events + +## Button Press Events + +### action + +- **Type**: Sensor (read-only, event-based) +- **Description**: Triggered action (e.g. a button click). Events are published to this entity when paddle/config button is pressed. +- **Home Assistant Entity**: `event.[device_name]_action` +- **Event values**: + - `down_single`, `up_single`, `config_single` - Single tap + - `down_release`, `up_release`, `config_release` - Button released + - `down_held`, `up_held`, `config_held` - Button held + - `down_double`, `up_double`, `config_double` - Double tap + - `down_triple`, `up_triple`, `config_triple` - Triple tap + - `down_quadruple`, `up_quadruple`, `config_quadruple` - Quadruple tap + - `down_quintuple`, `up_quintuple`, `config_quintuple` - Quintuple tap +- **Use cases**: + - Trigger Home Assistant automations based on button presses + - Multi-tap scene control + - Advanced automation logic +- **Prerequisites**: buttonDelay > "0ms" (setting to "0ms" disables button events) + +## Configuration Patterns + +### Bathroom Fan Auto-Off (15 minutes) + +```yaml +service: number.set_value +target: + entity_id: number.bathroom_fan_auto_timer_off +data: + value: 900 # 15 minutes +``` + +### Closet Light Safety (5 minutes) + +```yaml +service: number.set_value +target: + entity_id: number.closet_light_auto_timer_off +data: + value: 300 # 5 minutes +``` + +### Quick Brightness Shortcuts + +```yaml +# Enable button delay for multi-tap detection +service: select.select_option +target: + entity_id: select.bedroom_switch_button_delay +data: + option: "500ms" + +# Enable double-tap up +service: select.select_option +target: + entity_id: select.bedroom_switch_double_tap_up_to_param55 +data: + option: "Enabled" + +# Set bright level for double-tap up +service: number.set_value +target: + entity_id: number.bedroom_switch_brightness_level_for_double_tap_up +data: + value: 254 # Nearly full brightness + +# Enable double-tap down +service: select.select_option +target: + entity_id: select.bedroom_switch_double_tap_down_to_param56 +data: + option: "Enabled" + +# Set nightlight level for double-tap down +service: number.set_value +target: + entity_id: number.bedroom_switch_brightness_level_for_double_tap_down +data: + value: 20 # Dim nightlight +``` + +### LED Level Indicator Timing + +```yaml +# Show level for 5 seconds after adjustment +service: select.select_option +target: + entity_id: select.bedroom_switch_load_level_indicator_timeout +data: + option: "5 Seconds" +``` + +## Button Press Automation Examples + +### Double-Tap Scene Trigger + +```yaml +automation: + - alias: "Bedroom Double-Tap Up - Movie Mode" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_action + to: "up_double" + action: + - service: scene.turn_on + target: + entity_id: scene.movie_mode + + - alias: "Bedroom Double-Tap Down - Nighttime" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_action + to: "down_double" + action: + - service: scene.turn_on + target: + entity_id: scene.nighttime +``` + +### Triple-Tap for All Lights + +```yaml +automation: + - alias: "Kitchen Triple-Tap Up - All Lights On" + trigger: + - platform: state + entity_id: sensor.kitchen_switch_action + to: "up_triple" + action: + - service: light.turn_on + target: + entity_id: all + + - alias: "Kitchen Triple-Tap Down - All Lights Off" + trigger: + - platform: state + entity_id: sensor.kitchen_switch_action + to: "down_triple" + action: + - service: light.turn_off + target: + entity_id: all +``` + +### Config Button Custom Action + +```yaml +automation: + - alias: "Config Button - Toggle Guest Mode" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_action + to: "config_double" + action: + - service: input_boolean.toggle + target: + entity_id: input_boolean.guest_mode +``` + +### Held Button for Scenes + +```yaml +automation: + - alias: "Up Held - Gradually Brighten" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_action + to: "up_held" + action: + - service: light.turn_on + target: + entity_id: light.bedroom_switch + data: + brightness_pct: 100 + transition: 10 + + - alias: "Down Held - Gradually Dim" + trigger: + - platform: state + entity_id: sensor.bedroom_switch_action + to: "down_held" + action: + - service: light.turn_on + target: + entity_id: light.bedroom_switch + data: + brightness_pct: 1 + transition: 10 +``` + +## Auto-Off Timer Examples + +### Common Applications + +**Bathroom Exhaust Fan** +```yaml +# 15 minutes +service: number.set_value +target: + entity_id: number.bathroom_fan_auto_timer_off +data: + value: 900 +``` + +**Laundry Room** +```yaml +# 1 hour +service: number.set_value +target: + entity_id: number.laundry_room_auto_timer_off +data: + value: 3600 +``` + +**Garage Workshop** +```yaml +# 2 hours +service: number.set_value +target: + entity_id: number.garage_auto_timer_off +data: + value: 7200 +``` + +**Pantry/Closet** +```yaml +# 3 minutes +service: number.set_value +target: + entity_id: number.pantry_auto_timer_off +data: + value: 180 +``` + +## Important Notes + +- autoTimerOff works independently of other features +- loadLevelIndicatorTimeout only affects load level display, not LED effects +- Multi-tap features require buttonDelay > "0ms" for detection +- Setting buttonDelay to "0ms" disables ALL button events (action sensor) +- Double-tap can both change brightness AND trigger automations via action events +- action sensor events can trigger automations for any tap pattern +- Auto-off timer resets on each manual on/off cycle +- Button events are published to the action sensor for Home Assistant automations +- Use action events for complex scene control and multi-location logic