Page 1 of 1

LUA and dim Hue light bulbs

Posted: Tuesday 08 August 2017 16:11
by rotero
Hi,

I have a Domoticz/Philips Hue question.
On the second floor I want to use a Philips Hue (white) light bulb with an KlikAanKlikUit motion sensor. No problems so far (I have this already working on the first floor).

The difference between the first floor and the second floor: on the second floor I want to change the dim level (5% or 75%) depending on the time.

I thought to use this solution:
- Create in the Hue app a scene for the Hue light bulb with 5% dim level [SCENE 1]
- Create in the Hue app a scene for the Hue light bulb with 75% dim level [SCENE 2]
- Between 06.00 and 23.00 hrs I switch on [SCENE 1] after a motion is detected
- Between 23.00 and 06.00 hrs I switch on [SCENE 2] after a motion is detected

You cannot turn off a Hue scene, so in stead of that I turn off the Hue light bulb after 5 minutes (after motion is deteced). This solution is not working. I also tried a lot of other options, but nothing works the way I like it to work.

Is it possible to create a solution to dim a Hue light blub in LUA for my problem with a standard Domoticz installation on a Raspberry Pi 2B?
If not, what should I do? Please tell me when it is neccesary to install additional plugins/programs.

This option isn't also working: turn on a scene with "ON FOR 5"

I am using the new Domoticz version v3.8153.
Thanks in advance for your help!

Regards,
Rob


LUA SCRIPT:

commandArray = {}
l_time = os.date("*t")

if (otherdevices['KAKU MOTION SENSOR 2'] == "On" and otherdevices['LIGHT 2'] == "Off") then
if (l_time.hour >= 23 or l_time.hour < 6) then
commandArray['SCENE 2'] = "On"
elseif (l_time.hour >= 6 and l_time.hour < 23) then
commandArray['SCENE 1'] = "On"
end
commandArray['LIGHT 2'] = "Off AFTER 300"
end

return commandArray

Re: LUA and dim Hue light bulbs

Posted: Tuesday 08 August 2017 18:27
by scottydj2
Hi,
I use dzVents scripting to directly control my hue lights and just change dim level depending on the time rather than using scenes. I'll upload my script later when I'm home if no-one else chimes in.
Cheers
Scott

Re: LUA and dim Hue light bulbs

Posted: Tuesday 08 August 2017 18:56
by rotero
Hi Scott,

That would be great.
In the meantime I'm checking out: https://www.domoticz.com/wiki/%27dzVent ... _Hue_Light

Thanks.

Regards,
Rob

Re: LUA and dim Hue light bulbs

Posted: Wednesday 09 August 2017 0:52
by scottydj2
Hi Rob,

Sooooo.... my script is a lot messier than I remember it....

I've taken the section below to show how I check the time and switch dim percentage based on time.

Code: Select all

local normal_percentage = 67
local dim_percentage = 9

local min_dim_hour = 1
local max_dim_hour = 6

-- Device IDs below
local light = 26 

-- Do we need the light on?
	if (domoticz.data.stored_lux < min_lux) and (domoticz.devices(light).state == 'Off') then
		if (domoticz.time.hour >= min_dim_hour) and (domoticz.time.hour <= max_dim_hour) then
			domoticz.log('Light on dim', domoticz.LOG_FORCE)
			domoticz.devices(light).dimTo(dim_percentage)
		else
			domoticz.log('Light on normal', domoticz.LOG_FORCE)
			domoticz.devices(light).dimTo(normal_percentage)
		end      
	end
The full script uses the Hue motion and lux sensors as well as a door contact sensor.

The device(x).dimTo is a dzVents command which you could convert to a raw LUA equivalent, but I'd recommend giving dzVents a go :)

Regards,

Scott

Re: LUA and dim Hue light bulbs

Posted: Wednesday 09 August 2017 13:05
by rotero
Hi Scott,

Thanks for your help, it's working perfect now!
Yesterday I switched to the new version of Domoticz and I hadn't discovered dzVents scripting yet.

It isn't a problem, but I can't use a dim level below 7%?

Thanks again.

Regards,
Rob


This is my code:

Code: Select all

return {
    active = true,
    on = {
        devices = {
            'KAKU MOTION SENSOR 2'
        }
    },
    execute = function(domoticz, device)
        if (device.state == 'On') and (domoticz.devices('LIGHT 2').state == 'Off') then
            if (domoticz.time.hour >= 23) or (domoticz.time.hour <= 6) then
                domoticz.log('LICHT aan BG1 Dim level 7', domoticz.LOG_FORCE)
                domoticz.devices('LIGHT 2').dimTo(7).forMin(2)
            else
                domoticz.log('LICHT aan BG1 Dim level 80', domoticz.LOG_FORCE)
                domoticz.devices('LIGHT 2').dimTo(80).forMin(5)
            end      
        end
    end
}

Re: LUA and dim Hue light bulbs

Posted: Wednesday 09 August 2017 16:59
by scottydj2
Hi Rob,

Glad it's working for you.

In the hue api, brighness levels go between 0 and 255, but 0 and 1 are the same (lowest setting) and 255 and 254 are considered the same (highest setting) and due to rounding conversions, I *think* anything below 7 get translated into a 0, and becomes an off.

The hue code may have a few errors around these points (assuming a range of 255 rather than 254).

Cheers

Scott