Inovelli LED Strip (LZW45) Pixel Effects Script

Zwave 1.4 & Open Zwave

Script

lzw45_pixel_effect:
  alias: LZW45 Pixel Effect
  description: Sets the pixel effects for the Inovelli LZW45 LED Strip
  mode: restart
  fields:
    service: 
      description:
        (required) The name of the service. 
          OpenZwave (Beta) -> 'ozw.set_config_parameter'
          OpenZwave (1.4) -> 'zwave.set_config_parameter'
      example: ozw.set_config_parameter
    lzw45: 
      description: (required) The entity_id for the lzw45 LED Strip.
      example: light.lzw45_light_strip_level
    effect:
      description: (required) The desired effect - static, blink, breath, color-wipe, color-wipe-reverse-inverse, color-wipe-random, random-color, single-dynamic, multi-dynamic, rainbow, rainbow-cycle, scan, dual-scan, fade, running-lights, twinkle, twinkle-random, twinkle-fade, twinkle-fade-random, sparkle, flash-sparkle, hyper-sparkle, strobe, blink-rainbow, chase-white, chase-color, chase-random, chase-rainbow, chase-flash, chase-flash-random, chase-rainbow-white, chase-blackout, chase-blackout-rainbow, color-sweep-random, running-color, running-red-blue, running-random, larson-scanner, comet, fireworks, fireworks-random, merry-christmas, circus-combustus, halloween, aurora
      example: breath
    brightness_pct:
      description: (optional) The brightness percent, 0 - 99.  Defaults to 99 if omitted.
      example: 99
  variables:
    service: >
      {{ service | default('ozw.set_config_parameter') }}
    node_id: >
      {%- if lzw45 is not defined %}
        0
      {%- else %}
        {%- set node_id = state_attr(lzw45, 'node_id') %}
        {{ node_id if node_id else 0 }}
      {%- endif %}
    byte1: >
      {%- set effect = effect | default('static') | lower | replace(' ', '-') %}
      {%- set effects = [
        'static',
        'blink',
        'breath',
        'color-wipe',
        'color-wipe-reverse-inverse',
        'color-wipe-random',
        'random-color',
        'single-dynamic',
        'multi-dynamic',
        'rainbow',
        'rainbow-cycle',
        'scan',
        'dual-scan',
        'fade',
        'running-lights',
        'twinkle',
        'twinkle-random',
        'twinkle-fade',
        'twinkle-fade-random',
        'sparkle',
        'flash-sparkle',
        'hyper-sparkle',
        'strobe',
        'blink-rainbow',
        'chase-white',
        'chase-color',
        'chase-random',
        'chase-rainbow',
        'chase-flash',
        'chase-flash-random',
        'chase-rainbow-white',
        'chase-blackout',
        'chase-blackout-rainbow',
        'color-sweep-random',
        'running-color',
        'running-red-blue',
        'running-random',
        'larson-scanner',
        'comet',
        'fireworks',
        'fireworks-random',
        'merry-christmas',
        'circus-combustus',
        'halloween',
        'aurora'
      ] %}
      {{ effects.index(effect) + 1 if effect in effects else 1 }}
    byte2: >
      {%- set pct = (brightness_pct | default(99)) | int %}
      {%- if 0 <= pct <= 99 %}
        {{ pct }}
      {%- else %}
        99
      {%- endif %}
    bytes: >
      {{ byte2 * 2**8 + byte1 }}
  sequence:
  - condition: template
    value_template: "{{ node_id != 0 }}"
  - service: "{{ service }}"
    data:
      node_id: "{{ node_id }}"
      parameter: 31
      value: "{{ bytes }}"

Service

service: script.lzw45_pixel_effect
data:
  service: ozw.set_config_parameter
  lzw45: light.light_strip
  effect: aurora
  brightness_pct: 99

Zwave JS

Script

lzw45_pixel_effect:
  alias: LZW45 Pixel Effect
  description: Sets the pixel effects for the Inovelli LZW45 LED Strip
  mode: restart
  fields:
    lzw45: 
      description: (required) The entity_id for the lzw45 LED Strip.
      example: light.light_strip
    effect:
      description: (required) The desired effect - static, blink, breath, color-wipe, color-wipe-reverse-inverse, color-wipe-random, random-color, single-dynamic, multi-dynamic, rainbow, rainbow-cycle, scan, dual-scan, fade, running-lights, twinkle, twinkle-random, twinkle-fade, twinkle-fade-random, sparkle, flash-sparkle, hyper-sparkle, strobe, blink-rainbow, chase-white, chase-color, chase-random, chase-rainbow, chase-flash, chase-flash-random, chase-rainbow-white, chase-blackout, chase-blackout-rainbow, color-sweep-random, running-color, running-red-blue, running-random, larson-scanner, comet, fireworks, fireworks-random, merry-christmas, circus-combustus, halloween, aurora
      example: breath
    brightness_pct:
      description: (optional) The brightness percent, 0 - 99.  Defaults to 99 if omitted.
      example: 99
  variables:
    byte1: >
      {%- set effect = effect | default('static') | lower | replace(' ', '-') %}
      {%- set effects = [
        'static',
        'blink',
        'breath',
        'color-wipe',
        'color-wipe-reverse-inverse',
        'color-wipe-random',
        'random-color',
        'single-dynamic',
        'multi-dynamic',
        'rainbow',
        'rainbow-cycle',
        'scan',
        'dual-scan',
        'fade',
        'running-lights',
        'twinkle',
        'twinkle-random',
        'twinkle-fade',
        'twinkle-fade-random',
        'sparkle',
        'flash-sparkle',
        'hyper-sparkle',
        'strobe',
        'blink-rainbow',
        'chase-white',
        'chase-color',
        'chase-random',
        'chase-rainbow',
        'chase-flash',
        'chase-flash-random',
        'chase-rainbow-white',
        'chase-blackout',
        'chase-blackout-rainbow',
        'color-sweep-random',
        'running-color',
        'running-red-blue',
        'running-random',
        'larson-scanner',
        'comet',
        'fireworks',
        'fireworks-random',
        'merry-christmas',
        'circus-combustus',
        'halloween',
        'aurora'
      ] %}
      {{ effects.index(effect) + 1 if effect in effects else 1 }}
    byte2: >
      {%- set pct = (brightness_pct | default(99)) | int %}
      {%- if 0 <= pct <= 99 %}
        {{ pct }}
      {%- else %}
        99
      {%- endif %}
    bytes: >
      {{ byte2 * 2**8 + byte1 }}
  sequence:
  - condition: template
    value_template: "{{ lzw45 is defined }}"

  - service: zwave_js.bulk_set_partial_config_parameters
    target:
      entity_id: "{{ lzw45 }}"
    data:
      parameter: 31
      value: "{{ bytes }}"

Service

service: script.lzw45_pixel_effect
data:
  lzw45: light.light_strip
  effect: aurora
  brightness_pct: 99
3 Likes

What’s the best way to import this as a blueprint?

it’s not a blueprint, it’s a script. Add it to your script files.

My bad, I use a notification script blueprint for the red series dimmer and I thought this was similar. I have this working now, thanks!

Is there a way to use a pixel effect in a scene? if I run it and add the device to a scene, I only get a single color steady light. Not the ‘merry christmas’ I was hoping for.