How to "Strobe" a Aeotec RGBW LED Light (ZW098)?

I have an Aeotec Multi Colour Bulb identified as a ZW098. I’d would like to use it as a Notification Device by making it “Strobe” (or flash different colours) for say 10 sec… though I have no idea how to do that. Any suggestions?

Which part do you need help with?
Is it configured, can you send it commands from UI or rules?
Or writing a rule?

Thanks - I’ll have a look at that link. FYI - I have the ZW098 imported and have worked out how to control it with the following (in my “items”):

Dimmer Study_Light "Dimmer [%d%%]" <slider> { channel="zwave:device:ef2f8db9:node10:switch_dimmer" } 
Color Study_Light_RGB "RGB" <slider> { channel="zwave:device:ef2f8db9:node10:color_color" } 
Dimmer Study_Light_RGBW "RGBW" <slider> { channel="zwave:device:ef2f8db9:node10:color_temperature" }

but what I don’t know how to do is using a “notification” to make it “Strobe” for say 10 secs.

I also found this -

which may be for a different version of my bulb but it has a cmd for Strobe.

I’ve got this working as intended but I’m not sure it the most effective way to:

  • Turn ON the bulb
  • Change colour every 0.5sec for 10sec
  • Turn OFF the bulb (after 15sec)

It is also odd (to me at least) that I need to have a final “Thread::sleep” that is longer than the main timer loop (if I don’t the bulb turns off earlier).

I’m also not sure that using “Thread::sleep” is ideal.

Here is my rules code if anyone has suggestions.

var Timer timer = null

rule "Blink the light"
    Item zwave_device_ef2f8db9_node9_scene_number changed
	Study_Light.sendCommand(ON)  // turn on the light
	Thread::sleep(1000)  // allow the list to power up before blinking for 1 sec
    if(timer !== null) return; // if already blinking ignore this event
    // Create a timer to blink the light
    val timeStarted = now
    timer = createTimer(now, [ | 
		Thread::sleep(500)  // wait 0.5sec between colour change
		if(now.isBefore(timeStarted.plusSeconds(10))) timer.reschedule(now.plusSeconds(1))  //change plusseconds for the length of the loop
		else timer = null
	Thread::sleep(15000)  // This needs to be the same or more than the total length of the loop ?!?!?


1 Like