Elk M1 via M1XEP Development

Is there a way to change the tasks to a momentary switch? Right now, in dashboards, I use the Scene template which has an on and off button. But, of course, only the on button does anything to trigger the task. The Switch template doesn't work because there's no attribute set for the current state, and it just shows up with a big ol' question mark in the dashboard.

Good news
Im a Vera veteran as well. Tried to help ekimmagrann with the MI to HE integration.
I hope to see both you guys working to get this driver/plugin running correct with HE.

Welcome work2play. Hope you find HE as nice as I have since leaving Vera.

1 Like

Yeah I was on the Vera beta team and didn't get far so I gave it away... then I bought the latest Vera last year and still wasn't all that impressed so I shelved it. I'm hoping this does better.

My first task is to bridge some RadioRa2 Pico remotes to do some basic Hue control - some people made that seem easy enough with HE so here we are. Plus we had yet another flood in the utility room yesterday thanks to a water heater failure - if these water sensors sitting on my desk had been online, I would've known sooner - but they didn't want to work with Vera. Got them set up in HE pretty quickly last night.

My biggest complaint with the Vera was the interface. I had something like 130 devices in it, and it would take forever to find a device to control it. I tried altui also, and while it was better, it didn't look good enough to use as a dashboard on my countertop. At least one of the 3rd party android apps went away, and another switched to a cloud based subscription model and ditched local control.

I also had problems making any zigbee stuff work.

Just wanted to chime in again and see if any of you is pushing forward with the Elk integration. I haven't been able to reach ekimmagrann any more so I think he has bailed from further work on his Elk to HE project.
There are issues that would be nice to address going forward with ekimmagrann's drivers.

  1. Response times- still not good. Arm/disarm is a least a 2 minute delay from ELk to HE. Since my lights use OC sensors that are zoned on my ELk, they are also very slow to work automated lighting.

  2. ekimmagrann was going to add the ability to list outputs in the HE logs, like Zones are now. WOuld be nice to see a list to be sure HE is catching all the outputs as well.

Anybody else have more input on how to get Elk and HE playing nice? I've been struggling over 1 year now to get this working with HE correctly.

I have published on GitHub an updated version of the Elk M1 integration drivers. It is a branch of the drivers that @ekimmagrann developed. Here is a summary of the changes I have made over the past month:

Added sync of Elk M1 modes to HE Location Modes: Disarmed, Armed Away, Night, Stay, Vacation synced to modes Home, Away, Night, Stay (if available and Home if not), Vacation (if available and Away if not), respectively.
Added sync of hsmSetArm modes of disarm, armAway, armNight, ArmHome
Added auto zone-device capability detection to support virtual devices with the following capabilities: ContactSensor, MotionSensor, SmokeDetector, CarbonMonoxideDetector, WaterSensor, TamperAlert, AccelerationSensor, Beacon, PresenceSensor, RelaySwitch, ShockSensor, SleepSensor, SoundSensor, Switch, TouchSensor and Valve. The child device driver can be changed to one of these at any time and it should adapt.
Added ability to read task activation from the panel and set Contact device to open momentarily.
Added setting of LastUser event which contains the user number who last triggered armed or disarmed
Added info logging when zone, output, task status or Arm Mode changes. These are controlled individually by the "Enable descriptionText logging" setting on each device.
Added switch capability to main Elk M1 device for use on the dashboard
Added "ContactSensor" as a capability for HSM monitoring. The contact will open if a Burglar Alarm or Police Alarm is triggered.
Adding missing AlarmStates
Added Request Output Status command
Added ability to handle a zone with a Temperature Probe attached to the main board. Automatically assigned when the zone's description has the word "Temperature" in it or zone device can be manually changed.
Added the device type Keypad for temperature readings.
Both temperature devices are assigned the Virtual Temperature Sensor driver. M1 Ver. 4.2.8 and later reports temperature data when they change but it can be requested for all devices using the new Request Temperature Data command on the main device or by setting up a rule to periodically execute the RequestTemperatureData command.
Added polling of device status once connected or reconnected to the panel.
Added Enable debug logging and Enable descriptionText logging to the main device. Debug is no longer set for the main device from within the application. Info logging can now be turned on or off for the main device.
Added zone, output and task reporting so child devices can register to be updated via the report command when another device status has changed. I am using this for a door control device assigned to an output that needs to be aware of the state of the contact attached to the door.
Added info logging (only) of Zone Definitions. Nothing else is done with it. I do not believe the data is of use to the driver.
Added refresh command on the output, task and thermostat devices.
Retooled zone-device creation/import to always create a device of type Virtual Contact unless "motion" is in the description.
Fixed issue that would create a lot of bogus devices when you connect to the panel with the M1 Touch Pro app.
Changed registration of arm mode event to happen upon entry/exit timer expiration.
Fixed status of EOL terminated zones.
Tested use of the Elk C1M1 dual path communicator over local Ethernet instead of using the M1XEP.
Improved ArmStatus and AlarmState events to fire only when changed.
You can now change the port on the main device page. The device will reinitialize after you save preferences to make the change take effect.
Changed the method of importing devices to greatly improve performance and reduce panel communication.
Fixed an issue not deleting child devices when the main device is uninstalled.
Fixed an issue with the name when importing a device with the "Show On Keypad" flag set on the panel.
Removed unneeded thermostat capability from the main device since the child thermostat device has it.
Numerous tweaks have been made to improve performance.

In my GitHub repository there are also new drivers for DoorControl, CO detector, Smoke detector, Tamper Alert and Water Sensor that can be used with the Elk M1.

Mike Magrann (ekimmagrann) did a terrific job with the initial development. I do not wish to steal his thunder. My intention was to take his work and further mature it so that it fit mine and hopefully other Elk owner's needs better.

If you are currently using his code, you will need to replace the App driver and all of the device drivers with my versions but you should not have to re-set up any devices.

Please note: I do not have a thermostat attached to my Elk M1. While I was careful making changes to that part of the code, I could have broken something that I could not test.

The code can be found here:

Please let me know what you think!


I forgot to mention, I would like to thank @buckchucko for his invaluable help testing my changes and all the feedback he gave me that help me arrive at a better end result.

This is awesome! Can I just swap out the old code with the new, or do I have to delete devices and re-add everything?

There is no need to delete the old devices but you do need to replace all of the original Elk drivers with the new versions including the Application driver. It should continue to work once you do.

Hey Cap'n,

I just did a clean install and can't get any child devices to show up. I had it working fine with belk's code alone.....

So.... just rebooted.....and I have results. Basically if it is acting weird, reboot. Then.....post!

@MrYutz do you see all of your child devices now? On the Devices page of the application a.k.a the zoneMapsPage, does it show everything you expect under Existing Devices?

Yes. It turns out my Hubitat's web interface was OK, but it hadn't been responding to Modes or Rules for the last 5 hours. Something was bonked and fixed with a reboot.

Really like your improvements to debug log. Just got the Virtual Garage Door working. Worked great right out of the "gate"! :wink:

Have you looked at why the VGD won't push over to google so you can say "Hey Google, open the gate."? I am getting this error:

The following devices are not supported by Google Home and will be removed from your device list

Alexa says that "Gate doesn't support that", so I am assuming it is something to do with a missing capability.


I'm glad you figured it out and it's working for you. I just pushed out to GitHub some bug fixes to the application and the main driver that I have been sitting on. They address errors in very specific situations so if you are not seeing errors, you don't have to update the code.

I assume you are using my Elk M1 Driver Output-DoorControl. I'm pleasantly surprised anyone else could use this driver. Yes, unfortunately Google and Alexa does not support a door control. My work around, which works, is to set up two virtual switches in HE, each with Auto Off turned on. One switch to open the door, the other to close the door. Then I set up rules to open the door control when the open switch came on and close the door control when the close switch came on. I then I shared those two devices with Alexa. The last step was to go in the Alexa mobile app and set up two routines. One routine turns on the open switch when then words "Open the garage door" is said. The other routine turns on the close switch when the words "Close the garage door" is said. I also shared the contact device with Alexa (no rules or routines needed) so I could ask Alexa "Is the garage door open" and it will tell me the contact status.

One final thing. I noticed that if I selected a device in the HE Google app that it removed because the device isn't supported, the Google app would occasionally throw a null error. If you get that, just go back into the Google app, click the device selection list, then save it.

I hope this helps.


Regarding importing devices. When you did an import with belk's code, it would try to import all 208 zones. That took several seconds. When you do an import with these drivers, it starts the import process and returns immediately but the process continues to run in the background. By using a feature in the panel, it will stop importing when the panel says there are no more devices remaining of that type. If your HE was running slow, that could explain why you didn't see any devices at first.

The full list of current features can be found on this page:


So....I tried HASSIO before I got around to Hubitat. I had garage doors working with both Google and Alexa vi the Python GoGo Gate implementation. You could say "Hey Google, open the gate" etc and it worked like a champ.

In fact I rewrote the Python implementation in Groovy before I found your cool Virtual Door for the ELK panel.

Is it just a Hubiat <-> Google / Alexa limitation?

According to Google's docs, a garage door is supported. Here is the device type: Smart Home Garage Door Guide  |  Actions on Google Smart Home

As always happy to Guinea Pig and test anything.



Unfortunately the capability isn't supported in the Google Home app for Hubitat. I really wish it was just like how I wish that and the THERMOSTAT capability was supported in the Amazon Alexa skill for Hubitat. I'm not sure who we could plead to to get them added. This may be a "security feature". On this forum I've just heard people doing similar workarounds that I am to get it to work.