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?
Thanks
Nathan
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 - https://next.openhab.org/addons/bindings/zwave/thing.html?manufacturer=aeotec&file=zwa002a_0_0.html
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"
when
Item zwave_device_ef2f8db9_node9_scene_number changed
then
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, [ |
Study_Light_RGB.sendCommand("234,100,100")
Thread::sleep(500) // wait 0.5sec between colour change
Study_Light_RGB.sendCommand("352,100,100")
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 ?!?!?
Study_Light.sendCommand(OFF)
end
Thanks
Nathan