Leviton HAI OmniLink Integration Possible?

Hello all,

I have an OmniLink IIe that I would like to control via HA rather than a third-party app that is no longer supported.

I see lots of other bindings but nothing so far for HAI. Is it now outdated technology?

I have dozens of light switches controlled by HAI through a UPB interface, and many Z-Wave switches as well. I’m hoping to tie them all in with my Hue, Sonos and IP cameras into one elegant interface.

Any suggestions on where to start, or restart?



I’ve been wondering the same thing myself. I have an OmniPro II for lighting, security and HVAC and would like to connect to HA as well. Since it looks like there are no bindings available, I might look into developing something.

What version of firmware are your running on your IIe? I’m on 4.0b – the latest, I think – so this will be the version I develop to if I do decide to jump into this.

I’m new to HA so have some research to do before jumping in.


I have an Omni IIe running 4.0B. I’m running OpenHAB 2 on a Raspberry Pi 2B.

I have had some good luck running the org.openhab.binding.omnilink-1.11.0-SNAPSHOT.jar binding and have it talking to my HAI equipment fairly fluently. It was a very steep learning curve but I’ve had much success because of the help I found on this site.

I have a rudimentary HABPanel running and can control the switches/thermostats better than the third-party apps out there for Android. I haven’t gotten into rules or automation yet, but now that I have some small victories that will be next.

Keep me posted on your development.


Has there been any luck finding a way to link the Omni pro to HA? That would be a game changer!

I have had much success now with openHAB. YMMV.

When you have time could you elaborate on how you got it working. I’m a beginner using Hassio. But i would love to be able to intergrate everything that is hooked up to my omniproII. Thank you.

OpenHAB is a completely different platform from Hassio and Home Assistant. I’m running mine on a Pi but it can run on just about anything else and has interfaces for Android, iOS and the web.

I’ve managed to integrate my OmniPro IIe, Hue lights, Sonos speakers and other Z-Wave lights. Be warned, it’s a pretty steep learning curve!

I’m not sure if this linking is allowed but I started here: https://community.openhab.org/t/hai-omnilink-bindings-help/7511/3

Hey B73C

Just want to say thanks for pointing me to openHAB. I got the Omni working with it and it’s exactly what I was lookingfor. So big thumbs up.
Thank again.

I know that this is an old post, but for anyone interested, I am using the OmniLink Bridge add-on and it seems to be working well. This is a new install and I have only had the Bridge running for a few days, but it does everything I want it to do and has been stable. If you are using Home Assistant and an old HAI/Leviton OmniPro, this seems to be a good solution.

new to this…main goal is to get OPII working so that i don’t’ have to start rewiring whole home replacing light switches etc…so getting the bridge working is key for me

not that much documentation on this on the web…set up the bridge and can see from the log that it connected but cannot figure out how to add access/add the “Entitles”…

Any tips?

When I finally got things figured out, the install turned out to be pretty straight forward.

  1. Set up MQTT. You will need the IP4 address, port and credentials when configuring OmniLink Bridge.
  2. Make note of the OPII IP address, port and the 2 16-character keys.
  3. In the Add-ons Store, add the Excalibur Partners, LLC Add-ons repository
  4. Install the OmniLink Bridge add-on from the Add-on store.
  5. Configure the add-on with the MQTT and OPII information.
  6. Start the add-on and watch the log. If there are any errors, the log will tell you what is wrong. If all is well, you will see discovery and status start to show up in the log almost immediately.

It took a while, but once I got things working it has worked well and been very stable. I have lights, alarm, and other sensors in my dashboard and everything works great.

If you have specific questions or issue, reply to this post and I will try to help. It would be nice if you could avoid some of the trial and error I had to go thru.

Hope this helps, @abbachia. Let me know how it goes.

appreciate the shout out…turns out i had failed to notice that i needed to input the MQTT server IP …once that was in, it was pretty easy…

only frustrating part is that i have so many OPII devices and wanted to separate them into “Areas” for organizational purposes but HA treats all of the OmniLink integrations as one and does not allow splits in areas


I’m looking for some advice and help from you! I did some reverse engineering on my Leviton/HAI lightning system that I installed back in 2011. I’m only using relays, dimmers and switches on my system and I used a BUS USB programming interface to initially setup my system. Lately I’ve been getting more and more annoyed that I can’t integrate and automate any of the lights in my automations.

I did some reverse engineering on the USB traffic and was able to create this small Python scripts to control my lights using raspberry pi. I was succesfully able to turn my relays on and off by changing the hex dump on my write command. I just have no idea how to move forward from here to make this a functional custom component inside HA. Any advice how I’d be able to turn this small script into a HA integration? I do not have programming background, and this is the first script I’ve ever created :slight_smile:

import usb.core

# USB device Vendor & Product ID
VID = 0x04d8
PID = 0xfe93

# Constants
DEVICE1_ON = [0x02, 0x12, 0x01, 0x7e, 0x25, 0x0d, 0xbc, 0x00, 0x26, 0x03, 0x0e, 0x62, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x7f, 0x8f]
DEVICE1_OFF = [0x02, 0x12, 0x01, 0x7e, 0x25, 0x0d, 0xbc, 0x00, 0x26, 0x03, 0x0e, 0x62, 0x05, 0x01, 0x03, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x8f]
DEVICE2_ON = [0x02, 0x12, 0x01, 0x7e, 0x25, 0x0d, 0xbc, 0x00, 0x26, 0x03, 0x0e, 0x40, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x9c, 0x7f, 0x8f]
DEVICE2_OFF = [0x02, 0x12, 0x01, 0x7e, 0x25, 0x0d, 0xbc, 0x00, 0x26, 0x03, 0x0e, 0x40, 0x05, 0x01, 0x03, 0x00, 0x00, 0x00, 0x51, 0x7f, 0x8f]

# Find the device
dev = usb.core.find(idVendor=VID, idProduct=PID)

# Was it found?
if dev is None:
    raise ValueError('Device not found')

# Write data to the device
dev.write(1, DEVICE1_ON)