Page 1 of 1

Light Flashing Alternating Colors

Posted: Monday 21 December 2020 19:41
by eleutscher
To make my garden more x-mas I found this script Light Flashing Alternating Colors at the domoticz wiki. I have it running but only for 1 loop. How can I make it loop 'forever'? Hope someone can answer this simple question. Merry x-max, Erik

Code: Select all

return {
    	active = true,
	on = {
		devices = {
			'Ledstrip Tuin Disco'
		}	
},
    logging = {
       level = domoticz.LOG_INFO,
        marker = "Disco"
    },
execute = function(domoticz, device)
   light = domoticz.devices('Ledstrip Tuin')
   --Check to see if the light is Off
        if (light.state == 'Off') then
            --Turn the light on
            light.switchOn()
            
            --Log that the light has turned on
            domoticz.log('Light is turned on')
            
            --Change the color: Blue -> Yellow -> Teal -> Pink -> Green -> 
            --Orange -> Purple -> Light Green -> Red -> Light Blue. Each color 
            --will stay on for 2 seconds, then the next color will come on. The
            --colors will repeat once the last color is reached
            light.setHex(0x00, 0x02, 0xFF)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(2)
            light.setHex(0x67, 0xFF, 0xF8).afterSec(4)
            light.setHex(0xFF, 0x9F, 0xED).afterSec(6)
            light.setHex(0x30, 0xFF, 0x0A).afterSec(8)
            light.setHex(0xFF, 0x91, 0x23).afterSec(10)
            light.setHex(0x9E, 0x06, 0xFF).afterSec(12)
            light.setHex(0x97, 0xFF, 0x93).afterSec(14)
            light.setHex(0xFF, 0x05, 0x0B).afterSec(16)
            light.setHex(0x62, 0xCF, 0xFF).afterSec(18)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(20)
            light.setHex(0x00, 0x02, 0xFF).afterSec(22)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(24)
            light.setHex(0x67, 0xFF, 0xF8).afterSec(26)
            light.setHex(0xFF, 0x9F, 0xED).afterSec(28)
            light.setHex(0x30, 0xFF, 0x0A).afterSec(30)
            light.setHex(0xFF, 0x91, 0x23).afterSec(32)
            light.setHex(0x9E, 0x06, 0xFF).afterSec(34)
            light.setHex(0x97, 0xFF, 0x93).afterSec(36)
            light.setHex(0xFF, 0x05, 0x0B).afterSec(38)
            light.setHex(0x62, 0xCF, 0xFF).afterSec(40)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(42)
            light.setHex(0x30, 0xFF, 0x0A).afterSec(44)
            light.setHex(0xFF, 0x91, 0x23).afterSec(46)
            light.setHex(0x9E, 0x06, 0xFF).afterSec(48)
            light.setHex(0x97, 0xFF, 0x93).afterSec(50)
            light.setHex(0xFF, 0x05, 0x0B).afterSec(52)
            light.setHex(0x62, 0xCF, 0xFF).afterSec(54)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(56)
            
            --Log that the light has gone through one round of color change
            domoticz.log('One round of color chars gone through')
        
        --checks to see if the light is on or set to a color   
        elseif (light.state == 'On' or light.state == 'Set Color') then
            --Change the color: Blue -> Yellow -> Teal -> Pink -> Green -> 
            --Orange -> Purple -> Light Green -> Red -> Light Blue. Each color 
            --will stay on for 2 seconds, then the next color will come on. The
            --colors will repeat once the last color is reached
            light.setHex(0x00, 0x02, 0xFF)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(2)
            light.setHex(0x67, 0xFF, 0xF8).afterSec(4)
            light.setHex(0xFF, 0x9F, 0xED).afterSec(6)
            light.setHex(0x30, 0xFF, 0x0A).afterSec(8)
            light.setHex(0xFF, 0x91, 0x23).afterSec(10)
            light.setHex(0x9E, 0x06, 0xFF).afterSec(12)
            light.setHex(0x97, 0xFF, 0x93).afterSec(14)
            light.setHex(0xFF, 0x05, 0x0B).afterSec(16)
            light.setHex(0x62, 0xCF, 0xFF).afterSec(18)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(20)
            light.setHex(0x00, 0x02, 0xFF).afterSec(22)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(24)
            light.setHex(0x67, 0xFF, 0xF8).afterSec(26)
            light.setHex(0xFF, 0x9F, 0xED).afterSec(28)
            light.setHex(0x30, 0xFF, 0x0A).afterSec(30)
            light.setHex(0xFF, 0x91, 0x23).afterSec(32)
            light.setHex(0x9E, 0x06, 0xFF).afterSec(34)
            light.setHex(0x97, 0xFF, 0x93).afterSec(36)
            light.setHex(0xFF, 0x05, 0x0B).afterSec(38)
            light.setHex(0x62, 0xCF, 0xFF).afterSec(40)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(42)
            light.setHex(0x30, 0xFF, 0x0A).afterSec(44)
            light.setHex(0xFF, 0x91, 0x23).afterSec(46)
            light.setHex(0x9E, 0x06, 0xFF).afterSec(48)
            light.setHex(0x97, 0xFF, 0x93).afterSec(50)
            light.setHex(0xFF, 0x05, 0x0B).afterSec(52)
            light.setHex(0x62, 0xCF, 0xFF).afterSec(54)
            light.setHex(0xFF, 0xD9, 0x0E).afterSec(56)
            
            --Log that color has gone through when light started on or set to color
            domoticz.log('Round of color change complete when light started on or set to color')
        else 
            --Log that light is not in the right state
            domoticz.log('Not in the right state. Current State: '.. light.state)
        end
    end
}

Re: Light Flashing Alternating Colors

Posted: Monday 21 December 2020 20:48
by waaren
eleutscher wrote: Monday 21 December 2020 19:41 To make my garden more x-mas I found this script Light Flashing Alternating Colors at the domoticz wiki. I have it running but only for 1 loop. How can I make it loop 'forever'? Hope someone can answer this simple question.
Can you try this?

Code: Select all

return
{
    on =
    {
        devices =
        {
            'Ledstrip Tuin Disco', --When switched on the fun begins. When switched off the fun stops within max 60 seconds
        },
    },

    logging =
    {
        level = domoticz.LOG_DEBUG, -- set to domoticz.LOG_ERROR when all OK
        marker = "Disco",
    },

    execute = function(dz, item)
        light = dz.devices('Ledstrip Tuin')
        
        item.cancelQueuedCommands()

        local function setHex(r,g,b, ... )
            for _, delay in ipairs({...}) do
                light.setHex(r, g, b).afterSec(delay)
            end
        end

        if item.active then
            setHex(0x00, 0x02, 0xFF, 0, 20, 40)
            setHex(0xFF, 0xD9, 0x0E, 2, 22, 42)
            setHex(0x67, 0xFF, 0xF8, 4, 24, 44)
            setHex(0xFF, 0x9F, 0xED, 6, 26, 46)
            setHex(0x30, 0xFF, 0x0A, 8, 28, 48)
            setHex(0xFF, 0x91, 0x23, 10,30, 50)
            setHex(0x9E, 0x06, 0xFF, 12, 32, 52)
            setHex(0x97, 0xFF, 0x93, 14, 34, 54)
            setHex(0xFF, 0x05, 0x0B, 16, 36, 56)
            setHex(0x62, 0xCF, 0xFF, 18, 38, 58)
            item.switchOn().afterSec(60)
        else
            light.switchOff().silent()
        end
    end
}

Re: Light Flashing Alternating Colors

Posted: Tuesday 22 December 2020 10:21
by EdwinK
For me it works. :)

Re: Light Flashing Alternating Colors

Posted: Tuesday 22 December 2020 17:09
by eleutscher
For me 2. Thx @Waaren