LiftMaster garage door opener with Linear NGD00Z-4 initiated from HomeLink Transmitter through X10 and Insteon

Foreward and Backstory

OpenHAB is incredible, and the community surrounding it is even more incredible. The setup described below is made of bits and pieces that other people figured out. I was just able to put it all together and then make a story about it . . .

When I purchased my shiny new (well, new to me anyway) Mini Cooper Countryman, I was excited to ditch the garage door remote that I kept in the glove box and set up the spiffy HomeLink transmitter installed in the rearview mirror. My garage was equipped with a state-of-the-art LiftMaster 8355 opener with “MyQ” remote operation, so what could go wrong?

After trying in vain to try and program the HomeLink transmitter with the LiftMaster 893MAX remote controls that I had, and after reading several internet testimonials saying these LiftMaster remotes were operating on a frequency that was incompatible with HomeLink, I gave up trying the direct route. Some Web research seemed to indicate that a “Liftmaster 855lm Chamberlain OEM Homelink Compatibility Bridge” was necessary.
Tried that. Didn’t work. Wasted money.

That’s when things started to get fun.

System Information

I’m running OpenHAB 2.3.0 Release Build on CentOS 7.5.1804.

Installing the Linear NGD00Z-4 Z-Wave Garage Door Controller in OpenHAB

The thread OpenHab2 and Linear NGD00Z-4 Garage Door Controller contains a lot of good information about how to get this working. After a little bit of fiddling and installation of the updated Z-Wave bindings that include Z-Wave security (OH2 Z-Wave refactoring and testing… and SECURITY), the unit would beep and flash, like it was trying to open a garage door.

OpenHAB Configuration

For reference, the NGD00Z-4 is set up in the PaperUI as a ZWaveGarageDoorController_BarrierState. It is a Number Item that can be one of the following values:

255 = OPEN

The following entry in the sitemap (/etc/openhab2/sitemaps/home.sitemap):

    Frame label="Garage" {
        Text item=ZWaveGarageDoorController_BarrierState icon="garagedoor" label="Garage Door [MAP(]"
        Switch item=ZWaveGarageDoorController_BarrierState icon="garagedoor" label="[MAP(]" mappings=[0="Closed", 255="Open"]

and the following transformation in /etc/openhab2/transform/


results in the following panel appearing in the site map:


Clicking on the OPEN button opens the garage door and clicking on CLOSED closes it.

Connecting the NGD00Z-4 to the LiftMaster 8355 Motor

This door opener is so advanced that even the switch wired to the wall is smart, so you can’t just connect a normal switch to the opener motor. The information at LiftMaster non-MyQ Integration, explains how to wire the NGD00Z to the LiftMaster 880LM Smart Control Panel. Essentially, the NGD00Z acts as a contact switch which is wired in parallel with the button in the control panel.

Integrating HomeLink with OpenHAB

Wayne Dalton Z-Wave Gateway

The video Wayne Dalton Homelink to Z-Wave Gatway Setup with Mi Casa Verde (Vera), looked promsing; however I never figured out a way to add it to the Z-Wave network. The messages seemed to indicate that it either wasn’t in the database or wasn’t initializing correctly. I gave up on that approach.

KR22A X-10 Contoller with X10RF Tranceiver and Insteon Hub

The page CONTROL INSTEON DEVICES WITH HOMELINK, describes the final setup:

The Web site referenced above describes how to set up the equipment without a Hub. The instructions that come with the KR22A and EZX10RF also don’t apply. The information Insteon PLM Binding, especially the section on X10 devices is key to configuring the system with an Insteon Hub and OpenHAB. The configuration that works for me is:

  • /etc/openhab2/services/insteonplm.cfg:

  • /etc/openhab2/items/insteon.items:

    Switch x10MiniRemoteButton1 "Mini Remote Button 1" {insteonplm="A.1:X00.00.01#switch"}
    Switch x10MiniRemoteButton2 "Mini Remote Button 2" {insteonplm="A.2:X00.00.01#switch"}
    Switch x10MiniRemoteButton3 "Mini Remote Button 3" {insteonplm="A.3:X00.00.01#switch"}
    Switch x10MiniRemoteButton4 "Mini Remote Button 4" {insteonplm="A.4:X00.00.01#switch"}
  • /etc/openhab2/garage-door.rules:

    val String this_filename = "garage-door.rules"
    rule "Open/Close Garage Door using Button 1"
        Item x10MiniRemoteButton1 received update
        logInfo(this_filename, "Mini Remote Button 1 pressed")
        logInfo(this_filename, "State: " + ZWaveGarageDoorController_BarrierState.toString())
        // If Closed, then open
        if ( ZWaveGarageDoorController_BarrierState.state == 0 ) {
        // if Open, then close
        } else if ( ZWaveGarageDoorController_BarrierState.state == 255 ) {
        // Hmmm. . . 
        } else {
            logInfo(this_filename, "Garage Door is neither open nor closed.  Don't know what to do.")

EZX10RF and Insteon Hub Placement

The EZX10RF and Insteon Hub seem to need to be on the same electrical circuit. Thus, I couldn’t put the Insteon Hub in the rack with the rest of the servers and plug the X10/Insteon Transceiver somewhere else. In the end, I put them both in the bedroom above the garage on the same plug.


With the configuration above, pressing the “1” button on the KR22A remote control opens and closes the garage door. There’s a several-second delay while the NGD00Z-4 flashes and beeps to warn everybody in the garage that the door is about to open (or close).

After following the HomeLink instructions to program the button on the rearview mirror to mimic the “1” button on the remote control, the HomeLink button will now open and close the garage door. It seems the HomeLink button needs to be pressed for about two seconds to activate.


Many thanks to all the people who wrote the blog entries/tutorials/forum posts that I’ve referenced above. Without all their prior research and work, the HomeLink buttons in my car would still be useless and I’d still be cursing all this advanced technology as I dug through the glove box to find the garage door remote.

Hopefully someone else finds this information helpful when faced with a similar problem to solve. Please feel free to ask questions, point out something that I may have missed, or suggest corrections.


I just realized that I’ve probably created a security hole you could drive a truck through…

I’m trying to setup this same Linear garage door opener, but am having issues getting it setup (I’m an openHAB newb). It seems that in your paragraph entitled “Installing the Linear NGD00Z-4 Z-Wave Garage Door Controller in OpenHAB” the details of how you actually got it installed are left out. Only some links to an article with other peoples issues, and one about a security jar that lacks installation instructions as well.

Do you happen to have the actual installation steps that you followed before configuring? Sorry for the frustration, but it seems that this community just has endless links to other documents that don’t cover the actual issue.


Take a look at how I implemented this - might provide a few ideas.

I don’t see what your solution has to do with the Linear NGD00Z-4. Please help me see whatever it is I missed in your post about installing this device.

When you mentioned “installing” I’m assuming you were talking about the physical connection to the door operator which will be the same. If it’s installing the binding then we can go down a different path.

It is bound, but not working with openHAB.

Did you create items to control the relay or did you try and switch in PaperUI?

There is no switch for me to try in PaperUI. I have not created any items to try and control it, because I don’t have a switch to control. Only the Barrier State and Alarm.

What version of OH and Zwave binding are you using?

That particular device requires the security classes which are only available in the newer versions of the Z-wave binding.

The “Barrier State” is the control. It’s shows up as a Numeric type, not an Switch type.
Unfortunately, what shows up in the “Control” section of the Paper UI isn’t very useful:


There’s not much you can do with that. To turn the Barrier State into useful information, you need to add entries to as described in the original post. And then to actually make the door move, you need to use the Basic UI and add an entry into the sitemap files (also detailed in the original post).

Actually, the screen shot that follows this looks like it is working in OpenHAB. For comparison, here’s a screen clip of my Paper UI “Things” configuration:

And the corresponding entry in the “Items” configuration:

Here are some of the relevant screens from HABmin:


they look very similar to the ones in entry #6

I believe I’ve taken all of the steps, but am not getting a valid return. One notable difference is your paperui state vs mine.


This is my 2carDoor.items file contents:

Switch    2car_Grg_Pwr   "2-Car Door Power"   <poweroutlet>   (Garage, gPower)      {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node5:switch_binary1"}
Switch    2car_Grg_Lts   "2-Car Lights"   <light>   (Garage, gPower)      {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node5:switch_binary2"}
Switch    2car_Grg_Dr    "2-Car Garage Door [MAP(]"    <garagedoor>    (gGarageDoor,gSleep_Security)
Number    2car_Grg_Dr_Psn    "2-Car Garage Door Position [MAP(]"    <garagedoor>    (gGarageDoor,gSleep_Security)    {channel="zwave:device:01FFFFFF-FFFF-FFFF-FFFF-160118150928:node6:barrier_state"}

This is my default.sitemap:

sitemap default label="AH Home" {

    Frame {

        Text label="2-Car Garage" icon="house" {
			Default item=2car_Grg_Pwr
			Default item=2car_Grg_Lts
            Switch item=2car_Grg_Dr
			Text item=2car_Grg_Dr_Psn 

And this is my


Thanks for your help.

Please don’t post the same issue in multiple threads…

Isn’t it showing CLOSED in HABmin ?