Jump to content

Light Switch Driver

Recommended Posts

I have created a proxy driver to control 4 relays.  5 connections:  Connection 1 for RS232; Connection 2, 3, 4, 5 for Light (V2) devices.

Everything is working well including scenes, etc.  The only thing is the UI updating on the various IOS devices.

According to Proxy and Protocol Guide 2.9.0 Lighting (V2) protocol Notifications the following should be used to notify the light on binding 2 is OFF or ON:        



Neither changes the state of the lights on the UI or in Composer.  I have tried various combinations such as

local tParams = {}
tParams["LEVEL"] = 0
tParams["STATE"] = "off"


C4:SendToProxy(2,"LIGHT_LEVEL", {LEVEL=0}, "NOTIFY")

C4:SendToProxy(2, "LIGHT_LEVEL_CHANGED", 0 , "NOTIFY")



Share this post

Link to post
Share on other sites

for Light v2 proxy, LIGHT_LEVEL must be string, and NOTIFY is not required.

C4:SendToProxy(2,"LIGHT_LEVEL,"0")              For Level 0

C4:SendToProxy(2,"LIGHT_LEVEL,"100")          For Level 100


Share this post

Link to post
Share on other sites

do you know how the RELAY works to update the UI on the devices?  I have tried the following:

C4:SendToProxy(2, "OPEN", {}, "NOTIFY")

C4:SendToProxy(2, "CLOSE", {}, "NOTIFY")

Share this post

Link to post
Share on other sites

I have a similar problem with a driver with a LIGHT proxy binding (5001) and a network connection (6001). Everything works with commands, but I cannot update the user interface with state coming from the network connection... 

The first "strange" thing is that the preview popup in Composer does not hilight buttons neither offers any interaction, differently from other lighting drivers (cfr screenshot). The driver comes from the SDK blind proxy template, modified to use the LIGHT proxy/class instead of BLIND; the original one, of course, works well...

When monitored inside a navigator, the corresponding item does not change aspect...

Essentially the driver must act as a ON/OFF light. This is the list of driver proxies...

<proxies qty="1">
    <proxy proxybindingid="5001" primary="True">light</proxy>

... and connections:




The following code is used to notify the proxy of status change:

function NOTIFY.LIGHT_LEVEL(bindingID, level)
    LogTrace("NOTIFY.LIGHT_LEVEL(bindingID = %s, level = %s", bindingID, level)

    --local tParams = {}
    --tParams["LIGHT_LEVEL"] = level
    --tParams["LEVEL"] = level
    local sLevel = ""
    if(level == 0) then
       sLevel = "0"
       sLevel = "100"
    SendNotify("LIGHT_LEVEL", level, bindingID)
    SendNotify("LEVEL", level, bindingID)

It calls the following function:

function SendNotify(notifyText, tParams, bindingID)
    C4:SendToProxy(bindingID, notifyText, tParams)

Can anyone help me in solving the issue?








Schermata 2017-09-12 alle 23.45.12.png

Schermata 2017-09-12 alle 23.44.55.png

Share this post

Link to post
Share on other sites

As mentioned upthread, you have to send an ONLINE_CHANGED with value of True when you get a GET_CONNECTED_STATE message from the proxy...

function ReceivedFromProxy(idBinding, strCommand, tParams)

  if (strCommand == "GET_CONNECTED_STATE") then
    C4:SendToProxy(idBinding, "ONLINE_CHANGED", "True")

-- The rest of your ReceivedFromProxy code goes here...


It should work if you do that.


Share this post

Link to post
Share on other sites

Thanks for suggestion!

Something changed, now preview window in Composer reacts by hilighting ON/OFF buttons and they work, but still status does not reflect correctly: in preview window of Composer I still do not see anything in "current light level" and, for real (e.g. in touch) the toggle button still returns back to OFF state after a while.

I am implementing a simple ON/OFF driver, without dimming level capability (and corresonding "set_level" capability set to false), is it correct to inform the proxy via "LIGHT_LEVEL" message, or is there another more appropriate message?

In any case, is it correct to use "100" as level for light switched ON, or "1" would be correct?

Thanks in advance!



Schermata 2017-09-13 alle 13.43.45.png

Share this post

Link to post
Share on other sites

Thanks for confirmation about values

Still not updating GUI with level. Is it correct to use "LIGHT_LEVEL" notify to update the interface about ON/OFF state, or do I need other messages?


Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...