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.