Full control of your Limitless LED/Milight bulbs from Amazon Echo

Limitless LED Limitless LED offers full color RGBW light bulbs that you can control over Wi-Fi/4G from your computer, phone or smartwatch. They’re an inexpensive alternative to Philips Hue and they look really cool.
But I, being lazy ass that I am, was wondering if you can control the lights from Amazon Echo by voice commands alone. Out of the box Echo and Limitless LED don’t recognize each other. Amazon can see and control Hue, but not Limitless LED. Fortunately geniuses of BWS Systems came up with a really cool piece of software – home automation bridge “HA-Bridge”. It’s free and written in Java so it can run pretty much in any environment under any OS. What it does – it emulates Philips Hue API so other devices on your network – like Echo – can see and interact with it.

It’s pretty easy to run and configure and it has a tab in UI where you can manually add any device unsupported out of the box. All you have to do is give your device a name and specify which commands to send to device for ON, OFF and DIM requests. Commands can be scripts or simple TCP/UDP data sent directly to the IP/port of your device. Here’s where Limitless LED API comes very handy. According to it – all you have to do to control your bulbs is send set of specific bytes to the IP of your WiFi bridge. For example to Turn ON lights in Zone 1 you have to send hex sequence 45, 00, 55. To turn them OFF – the sequence is 46, 00, 55. To set specific brightness level – first you need to send ON sequence and then 4E, <brighness level>, 55. This resulted in following manual config:

limtiless0

Note that I gave this device name “Lights” – I did it for shortness, but you can call it “Living Room Lights” or “Office Lights” or whatever you want – this is the name Amazon Echo will recolonize the device by. Before using newly added device you need to tell Echo to find it: “Alexa, discover devices”. Once discovery is finished you can issue command for your <device name>. In my case – “Alexa, turn lights ON”, “Alexa, brighten lights to 10”, “Alexa, dim lights to 2”, “Alexa, turn lights off”. Magic.

This is all fine and good – but you have full color lights. And you want to be able to control colors as well. But both Echo and HA-Bridge API support only basic On/Off/Dim commands. What to do? Why not add another device for color control? According to Limitless LED API to control color you need to issue command 40, <color code>, 55. To reset it back to white the command is C5, 00, 55 (note that these will differ per group/zone – mentioned are command for Zone 1). Hence comes this setup:

limtiless1

Here <color code> = 60 “green”. Note that I call this device “Green Light”, so now I can issue command “Alexa, turn green light ON”. Command “Alexa, turn green light OFF will reset color to white. DIM command set up previously works on colors as well. Don’t forget you need to tell Alexa to discover devices after you add new ones.

Using this approach you can control as many colors as you want or even pass color number to bulbs directly. Again – magic.

UPDATE: 02/2017 Here’s a better resolution screenshot. It also features newer v4.x version of HA-Bridge with more streamlined UI (e.g you no longer have to bundle multiple URLs into JSON arrays).


If you have any questions or would like to share some hacks, please with our forum.


59 replies on “Full control of your Limitless LED/Milight bulbs from Amazon Echo”

  1. Hi, cheers for this post but I’m struggling to read your screengrabs.
    Could you check my code matches or what I’m typing wrong!

    [{“item”;”udp://192.168.1.90:8899/0x450055″),
    {“item”;”udp://192.168.1.90:8899/0x406055″}]

    Thanks
    Chris

  2. @Chris Sorry about this, should’ve had links to larger screenshots. Here’s correct format

    [{"item":"udp://192.168.1.90:8899/0x450055"},
    {"item":"udp://192.168.1.90:8899/0x406055"}]

  3. This might be dumb to ask but how do I install HA-bridge to my mac??

  4. @SwisherBang not sure exactly how Java works on Mac, on Windows box after downloading the JAR file I simple run java -jar ha-bridge.jar, perhaps something similar in Mac’s terminal?

  5. My DIM code isnt doing anything

    [{“item”:”udp://192.168.0.7:8899/0x470055″},
    {“item”:”udp://192.168.0.7:8899/0x4E0255″}]

  6. @Carl I found this dim command works well:

    [{“item”:”udp://192.168.0.14:8899/0x450055″},{“item”:”udp://192.168.0.14:8899/0x4E${intensity.math((X*27)/255)}55″}]

    First line turns the light on (so you can go from an off state to a dimmed state with just the “Alexa, set to 50%” type command.
    Second line takes the binary number (X) (converted from the spoken percentage to 0-255 range) and rescales it to the 0-27 range that the Milights use.

    If you stil have problems either watch the console messages (assuming you ran the .jar in a terminal or go to the logs tab of HA-Bridge, change the log level to DEBUG at the bottom and play around with the dim values whilst checking the log messages. This should tell you whats going wrong.

  7. Hi guys, any idea what i am doing wrong? I get no response with the on or off codes like these:

    ON- udp://192.168.1.69:8899/0x450055
    OFF- udp://192.168.1.69:8899/0x460055

    However, if I change the off code to:

    udp://192.168.1.90:8899/0x406055

    The lights turn green, so I know im sending responses, any way there is another on/off code?

    Thanks so much for this article!

  8. My last comment should have read for OFF code that turns green:

    udp://192.168.1.69:8899/0x406055,

    I had improper ip in my first comment, thanks again!

  9. Nvm, thanks again! I found the codes I was in need of, here is a list that may help some others:

    # 4 Zone LED Controller (thnx to Detlef Fossan to provide these data)
    #
    # 40 xx – color selection (xx = value between 00 and FF, 00 = blue, FF = purple)
    # 41 00 – turn master off
    # 42 00 – turn master on
    # 43 00 – speed down
    # 44 00 – speed up
    # 45 00 – turn Zone 1 on
    # 46 00 – turn Zone 1 off
    # 47 00 – turn Zone 2 on
    # 48 00 – turn Zone 2 off
    # 49 00 – turn Zone 3 on
    # 4a 00 – turn Zone 3 off
    # 4b 00 – turn Zone 4 on
    # 4c 00 – turn Zone 4 off
    # 4d 00 – light changing mode
    # 4e xx – brightness selection (xx = value between 00 and 1F)

  10. Anyone know how I could dim or adjust brightness of white only lights using the codes below? It would really help me out as I can not figure it out a working dim code. There is no brightness selection code I can find as there is for RGBW zones.

    # 39 00 55 – turn off
    # 35 00 55 – turn on
    # 3c 00 55 – turn brightness up
    # 34 00 55 – turn brightness down

  11. Unfortunately I can’t get the dim to work – I keep getting SyntaxError: Unexpected token < in JSON at position 0

    Looking at the formula:-
    [{“item”:”udp://192.168.0.14:8899/0x450055″},{“item”:”udp://192.168.0.14:8899/0x4E${intensity.math((X*27)/255)}55″}]

    Shouldn't this be:-
    [{“item”:”udp://192.168.0.14:8899/0x450055″},{“item”:”udp://192.168.0.14:8899/0x4E${intensity.math((X/255)*27)}55″}]

    So for full brightness user input 255/255*27 = 27
    or for half brightness user input 127/255*27 = 13

    Would this need a .toString(16) to also convert this to Hex?

  12. @Paul It’s preferable (and shouldn’t be a problem in modern routers). Local IPs live long, but if they’re leased you never know when they may change

  13. Thanks for the reply, @Yurli. I guessed as much. I currently control my limitless/easy bulb lights with tasker/auto voice which pretty much does the same thing.

    One thing I’m not sure of with the HA-Bridge. Does the PC/Laptop the software is installed on need to be always on or do you run the software, add devices and you’re done?

    Thanks in advance.
    Paul.

  14. @Paul Yes, it has to be always on since Echo, when it hears a command, passes it to HA-Bridge first. And HA-Bridge in turn passes it to Limitless LED bridge. But since HA-Bridge is written in Java – it can run on variety of devices – Arduino, Raspberry Pi, variety of stick-PCs etc. Doesn’t have to be your laptop.

  15. I am trying to switch between colour and just white LEDs, where with remote you hold down the “On” control for about 2 seconds to do this. I can’t work out how to do this in HA Bridge. I see the code 0xCB (for group 4 which applicable for my setup)but not sure if this is correct or how to implement it, any help appreciated

  16. I am having the same message that David Hayward.

    “Unexpected token < in JSON at position 0"

    In my case On Url is:

    mosquitto_pub -h 192.168.0.164 -p 1883 -t /lights -m livingroom-on

    What could be wrong?

    Sorry if I am a little bit off topic here.

  17. Hi, my version of HA-bridge has extra fields with Http Verb, Content Type, Content Body On, Content Body Dim, Content Body off.
    What should be entered there?

  18. I’ve got everything working *except* the switch to white. This command is always completely ignored. It is as though the API has been changed in this point. The Milight remote still works for it though, so the command must be there. This is what I am using for zone 2:

    [{“item”:”udp://192.168.178.76:8899/0x470055″},
    {“item”:”udp://192.168.178.76:8899/0xC70055″}]

    The first line activates the zone and turns on the lights, but the second does nothing. The syntax is definitely correct. For example, this activates green, no problems:

    [{“item”:”udp://192.168.178.76:8899/0x470055″},
    {“item”:”udp://192.168.178.76:8899/0x406055″}]

    And this is the current sequence for white in zone 2 from http://www.limitlessled.com/dev/, so that should be correct as well:

    SET COLOR TO WHITE (GROUP 2) 0x47 100ms followed by: 0xC7

    Ideas, anyone??

  19. If someone gets Unexpected token < in JSON at position 0 you should write the code not copy it from here.

    Cheers

  20. Hi,
    I’ve set up my HA Bridge on my Raspberry Pi, however, when I add a device, none of the commands work. My Milight Wi-fi box has the IP address 192.168.1.228, I have even confirmed this by logging into it. The port is also set at 8899. My on command is
    udp://192.168.1.228:8899/0x450055
    and my off command is
    udp://192.168.1.228:8899/0x460055
    I have no idea why it isn’t working. Does anyone else?

  21. Hi guys great thread, however, I get this working with 1 bulb, but I have any more, can anyone point me in the right direction to a) add more bulbs in, and b) add just white lights not the RGBW also

    Thanks

  22. Hi all,

    i have the same problem as TimG, is there already a solution?

    Furthermore, I have tried dimming to change the color. Unfortunately not all colors are available. Does somebody has any idea?

    [{“item”:”udp://192.168.178.133:8899/0x450055″},
    {“item”:”udp://192.168.178.133:8899/0x40${intensity.byte}55″}]

    For info: I use RGBWW stripes.

    Thanks

  23. Ugg i am lost, is this supposed to work for milight too? Also is there any other setup required? Like do i have to add my current philips hue first? Or should it be off completely? Can they not be on at same time. I followed the examples here and cannot get it to do anything. Well I take that back if i add my current philips hue in the config, push the blue button, it will detect all my current lights. But I am trying to get control of my milights.

  24. Ashley same here, i wonder if its because of the code version of the MiLight Controller. Do you have the ibox2? Also what version of firmware? Mine is V1.0.08. The SSID is set for Milight3.0-1E2826 which makes me wonder if this is the new 3.0 software maybe not compatible with the ha-bridge version?

  25. v6 for limitless i think they have changed commands in v6. I am curious, can some of you download and test the sample windows app found here http://www.limitlessled.com/dev/ to see if you can send light commands from it? Mine works fine from within the app, but not from UDP packets from that app or the HA Bridge

  26. Milight/limitlessled changed the api on the V3 kit(V6 API), which is really annoying, it’s now bidirection token(temporary) based. Can’t just send a command to them anymore. If you have the new Ibox(the crappy lamp you can’t turn on and off without an app) then this won’t work unfortunately. I haven’t found a working solution as of yet 🙁

  27. Nuts, i found people having luck here https://github.com/mwittig/node-milight-promise/issues/7 … I was going to try with the packet software he referenced. I have the “ibox2” but it uses the MiLight3.0 SSID so i think its the new stuff. I might have to buy the ibox1 controller if i dont have luck with this. So sad they would gimp the product which might kill alexa integration. But it is to secure it so i get it.

  28. my code for green is working fine:
    [{“item”:”udp://192.168.0.155:8899/0x450055″},
    {“item”:”udp://192.168.0.155:8899/0x406055″}]

    same logic for red is not working…
    [{“item”:”udp://192.168.0.155:8899/0x450055″},
    {“item”:”udp://192.168.0.155:8899/0x40B055″}]

    Any ideas?? I’m totally lost!

  29. With UDP Sender udp://192.168.0.155:8899/0x40B055 is working.
    So it seems this is a bug in HA Bridge!?? Can someone confirm?

  30. @Joerg

    Yes I can confirm that. For me it is the same. By HA-bridge and echo it does not work, by UDP transmitter already.

  31. Same here. The problem is the combination with HA Bridge. I’m running it on my Synology.

  32. I’m using this with ha bridge:
    http://epocapp.bitbucket.org/milight/

    It’s a windows app, controls up to 4 bridges, seperate zone control is available on the pro version.

    I’ve got it configured to use http, so the ha bridge sends the commands to the web interface, seems to be working quite well on the v6 controller, although brightness doesn’t work too well at the moment.

    I’m lucky that my ha bridge is running on a windows environment, so the two can run from the same box.

  33. I bought the v2 controller and am now running into white issue anyone get it going?

  34. [{“item”:”udp://192.168.2.90:8899/0x450055″},
    {“item”:”udp://192.168.2.90:8899/0x4E${intensity.math((X/255)*27)}55″}]

    works well for dimming, just make sure when you copy it check the copied code by refreshing, mac will add weird quote characters and give you the json error

  35. I seem to be struggling with the dimming part of all this.
    for the dim URL I have
    udp://192.168.0.32:8899/0x340055 which for my lights (white bulbs only) dims them a little at a time, but how do i make it brighter?

    Thanks

  36. Hi, has someone found a solution for this “white problem”? Also red (0xB0) doesn’t work and some other colors.

  37. Hi again. Solved with the new Habridge Version 4.0.2!

    Now I need to know, how to mix white LEDs and color LEDs together. There are no information on the limitlessLED Dev website.

  38. Hi

    Can anyone tell me how you do this with mi light and ha bridge 4.0.2

  39. You need the controller. The one in that pic looks like the one you need (Mi-Light v2). Just don’t get ibox 2 if you want to use the method on this page. Also I have found muzzley app works with Alexa without having to use HA Bridge at all.

  40. Don’t forget for the MiLight hub/controller you always need to address the group/bulb first by sending an On command. Then you need a minimum of 100mSec delay before sending any other colour or brightness level.

    The 100mSec delay may be hard to achieve.

    I always dim my units to the lowest, about 6%, before turning them off so that you don’t see a 100 mSec. colour flash when the On is sent, before you can change the levels, next usage.

  41. If I enter this code

    [{“item”:”udp://192.168.2.90:8899/0x450055″},
    {“item”:”udp://192.168.2.90:8899/0x4E${intensity.math((X/255)*27)}55″}]

    After saving i have this shit code

    [{���item���:���udp://192.168.2.90:8899/0x450055���},
    {���item���:���udp://192.168.2.90:8899/0x4E${intensity.math((X/255)*27)}55���}]

    What am I doing wrong ?

    I use the Ha-Bridge on Zyxel NAS with ARM CPU

  42. What is the code to set the bulb back to white? Set to any Color via HA-Bridge works fine, but set back to white wont work.

Leave a Reply

Your email address will not be published. Required fields are marked *