[RELEASE] Elk M1 Integration

AKTown,

I have not used eKeypadPro as I am an Android user. I use M1 Touch Pro and it's been a good app. Once I got the Hubitat/Elk integration to where I wanted it, I have just about stopped using the M1 Touch Pro app and I almost exclusively use the Hubitat app. The final (almost) nail in the coffin for the Elk app was getting Hubitat dashboards set up and linked together the way I wanted it. Now I can open the Hubitat app, look at the dashboard I'm interested in and see exactly what I want and control what I want.

There were two drivers that ultimately moved me to Hubitat. One, Elk uses a specialized serial module to talk to a Leviton serial Z-Wave controller. It sounds like a good direction but something about the Leviton or the pairing of the two just made it somewhat unreliable. Also, Leviton's deplorable Z-Wave installer tool leaves so much to be desired. Hubitat has definitely been better there.

The other was I opted for the Elk C1M1 dual path communicator over the M1XEP because I wanted a cellular backup. I had used their older serial module for talking to a third party cellular radio (whose name escapes me) but it just seemed like several dissimilar parts cobbled together. The C1M1 seemed to be a better choice because everything was native Elk. The problem was Telguard that they have partnered with to bring C1M1 to market. Although limited, with the M1XEP you had notifications to configure that was easy and well suited for the Elk rules. With the C1M1 you lose those notification. You can only use Telguard to monitor it and they have clearly only supported basic notifications, then they appear to have abandoned further development.

With Hubitat the Elk is now tied in very tightly and I have all the notifications and control I want. It has also been the most reliable set up for me so far.

I am a programmer so I didn't have any problem programming the Elk rules. As a matter of fact, I had a pretty extensive set of rules in the panel. But, Hubitat's rules are easy and quite powerful. I found I prefer using them.

One final thing to mention is Leviton. I had used other brands in the past for cost reasons but when I built my new house there was a deal going on with Leviton Z-wave switches which brought them closer in line price wise with other brands so I bought a couple dozen of their Z-wave plus switches and dimmers. They have not proven to be as reliable as the other brands I used. There had been plenty of chatter on the web about how much better Leviton was and how they were the only ones to report their status to all controllers but it turned out that was obsolete information. So far they have been the devices i liked least on my network. I have the latest firmware on all of them now and they still don't behave as well as the GE Z-wave devices I have. They were awful before the firmware update. How that firmware got released is beyond me, but it's better now. Still, every so often I have to kill power to my house to resolve Z-wave routing issues or because one of them hanging up but my GE devices are solid.

Greg

@SeattleDan,

I have looked at Fibaro before because they have so many cool devices. I believe they are the company that had the gesture controller that I wanted. However, with Hubitat and an Amazon Alexa I have discovered how much my whole family and I appreciate voice control. I see no need for a gesture controller now.

Their Smart Implants do look cool but making Hubitat the center of my home control seems to make those unnecessary.

The current version of the Hubitat/Elk integration only handles one Elk M1. It never occurred to me that a residential set up would have more than one Elk panel. It does handle multiple zones in the panel. However, it shouldn't be much of a change to the Hubitat Elk Application to allow multiple versions installed, each communicating to their own panel. If you want to go down that path, let me know and we can try a couple things. You probably could replace all or part of your UPB lighting with Z-Wave, Zigbee or even wifi if you wanted. I'm not a fan of wifi smart devices beyond Alexa or Google home.

Greg

Thx Greg. To be clear, 4 panels but one controller... just a lot of IO (6 relay boards, etc.)

For lighting, yes, have been experimenting with alternates. thx.

@SeattleDan Thank you for the feedback on eKeyPad Pro! I really appreciate it.

Hi @captncode, thank you for the additional information and perspective. My Hubitat just arrived and I started setting up the Elk app (more to come).

I just purchased my Elk and have a lot of hardware not yet installed. I am going back and forth on adding native Elk hardware vs. just going the Hubitat route for adding sensors, contacts, etc. (my home is all wired contacts already connected to the Elk) For instance, I have the Elk-M1XRFTWM 900Mhz wireless transceiver and a wireless smoke, carbon, and a door sensor to get me started but I need oh so much more to make my project complete. I am curious if you would suggest I ditch the Elk specific gear and look to more consumer friendly devices based on Z-wave/Zigbee and HE integration or continue down the Elk path. Seems with the HE app you built I could go either way and accomplish the same results. I am also looking to integrate sprinklers and yard lights, I have most of the Elk hardware/relays to get it done but am really second guessing the rabbit hole I am headed down.

I am new to the forum and if this is off topic I can start a different thread.

Thank you,
AKTown

@AKTown,

I am personally in favor of wired sensors. Everyone of my Elk zones are wired and that is the way I would keep it. I do have the Elk wireless transceiver that I use for the keyfob but if I had to add a wireless sensor for the Elk, I would stay native Elk. As a matter of fact, any device that you want to be a part of detecting an intruder and triggering the Elk, my recommendation is to use either a wired sensor or an Elk wireless sensor.

That said, if there were other sensors that you want to do things like turn on a light or other non alarm related functions, Z-Wave or Zigbee should be fine.

This is for two reasons. One, I have found Elk wired (and Elk wireless should be the same) sensors to be rock solid. Z-Wave and Zigbee may not be 100% reliable. Perhaps that is those Leviton devices on my network hurting Z-Wave reliability or maybe you just can't always count on Z-Wave 100% of the time.

The other reason seems to be an Elk limitation. There is a command in the Elk protocol that allows my driver to trigger a zone as violated and I have implemented it but it doesn't seem to work. So if you were to use a Hubitat sensor to trigger a Zone in the Elk, I can't guarantee it to work as expected. Maybe it would, but so far I have not seen the Elk report that zone change back to my driver.

Greg

Hi @captncode

I have been enjoying the Elk & Hubitat integration for a little over a month now (thank you!). I am working on a little more advanced automation and was hoping you could give me a few pointers on how I can see the status of my Elk contact sensors in the Dashboard? For instance, I want to build a dashboard that shows the status of all my Elk wired connections. I don't see the contacts as Devices to add but I do see them in the Elk App in Hubitat. I have about 16 contacts that I want to display the status (open/closed).

Thank you,
AKTown

Hi @AKTown!

I'm glad to hear you are enjoying it. You should be able to see the devices. However, since they are child devices to the main Elk M1 Device, they don't show up on the main Hubitat device list. Simply go into Devices then click on what ever you have named the Elk M1 device and close to the bottom of that screen is a list of "Component Devices". There will be all of the Elk devices listed Alphabetically. Unless you have renamed them, the Zone devices will all start with "Zone xxx - " so they will be at the bottom of the list. You can click on them and change their name or driver (if applicable) if you wish.

When you create a dashboard, those devices will also be listed as devices you can add to your dashboard. They won't be hidden there like they are on the main device list.

I actually have a dashboard just like you are describing. In addition to that dashboard, I have dashboards for certain areas of my house for example the Living Room. On that dashboard is all of my Z-Wave devices in the living room and the windows and front door attached to the Elk since you can have a device on more than one dashboard.

I hope that answers your question.

Greg

Thank you @captncode, works perfect!

Thanks
AKTown

Thanks for creating the integration @captncode! Got the integration working, as in I see all my sensors and panels and getting events from them.

I am new to Hubitat though and am struggling to figure out how to:
a) use the integration with HSM so HSM modes reflect the Elk mode. I enabled the integration, but it only seems to show Smoke and CO sensors, not the intrusion alarm states. Is this supported? How can I set it up?
b) trying to figure out how I can set a mode on the M1. I.e. How can I for example Arm Stay from within an action in Hubitat. I seem to be able to send button presses to my keypads, but sofar this only set off the alarm, which my family did not appreciate at 11pm 8) So rather than trial and error thought I'd ask.

Thanks in advance for your help!

Cheers,
Frank

Hi Frank!

Enabling Elk M1 to HSM Integration will arm/disarm HSM when your Elk M1 is armed or disarmed. Enabling HSM to Elk M1 Integration will arm/disarm your Elk M1 when HSM is armed or disarmed.

If you want zone status available to HSM, you have to go into the Hubitat Safety Monitor app, click "Configure Hubitat Safety Monitor" and for each intrusion type (Away, Home, Night) click it and select the desired Open/Close (contact) sensors and Motion sensors. As an alternative, instead of selecting each sensor, you can just select the one contact that is the name of your Elk M1 device. That contact opens when the Elk alarm is triggered, which may be all you care for with HSM. That's how I have mine set.

To arm or disarm your Elk M1 from Hubitat, go to Devices then scroll through your list of devices and click on the device you have named your ELk M1. There should be buttons to Arm and Disarm among many other features. I suggest looking at the Preferences section while you are there to see if you need to change any.

The last two preferences "Allow lock to disarm" and "Lock to arm mode" configure how the Elk device acts when you "Lock" it. The device shows up as a lock which you can use on the dashboard or with Amazon Alexa/Google apps. When you lock it, it will arm to the selected mode (unless set to None). If you allow lock to disarm, then the Elk will disarm when you unlock that device.

Hopefully that answers your questions. Let me know if you need more info.

Greg

Thanks so much Greg. Still new to Hubitat, hadn't realized the M1 device itself "does things" thought of it only as the way of bringing in the devices connected to it.

Will experiment based on your mail, think it should get me everything I need.

Cheers,
Frank

@frank.weigel,

Great! Glad to help.

Just curious, how did you find out about the Hubitat/Elk M1 Integration? I honestly don't know how many people are using it.

Greg

Just found it through Google :slight_smile: Moved into a new house a few months ago and after much discussions our installer recommended the M1 as the best option for using all t he existing wired sensors and providing us something that is independant of a specific alarm monitoring company and integrates well with home automation.

Used to have a Wink 2 but as that is going down the drain and wasn't very flexible decided to try Hubitat. Before I found your integration thought I may need to go through round about ways like connecting Hubitat outputs through relays as sensors on the M1 and triggering relays that I could pick up on Hubitat for the output, but then was delighted to find your work!

Frank

@frank.weigel,

Hey, that's awesome!

The M1 is a great way to use existing wired sensors without being tied to a specific monitoring company.

I'm glad you like the integration. Thanks for the info.

Greg

I am new to Hubitat and found this resource earlier today, must say I'm very impressed by what I have read and am excited to start implementing your code. I was starting to think I would be setting up physical relays to get any communications between ELK and HE but now am feeling much better.
There was lots to digest here and I think I have a good idea on what is required.
Thanks again,
Al

@alkramer6,

Welcome to Hubitat! I hope all goes smoothly.

Greg

@captncode

Hi Greg, I am having some issues and have a couple questions about what I am seeing in my logs.

  1. The log from my installation, note the error:

app:2 2021-01-12 04:57:19.459 pm info Elk M1 Applicationinitialize
app:2 2021-01-12 04:54:26.592 pm debug Elk M1 Application: Found a Child Elk M1 Elk M1

dev:1 2021-01-12 04:54:16.489 pm error java.lang.NullPointerException: Cannot invoke method padLeft() on null object on line 417 (installed)

dev:1 2021-01-12 04:54:15.226 pm warn Elk M1 installed...
app:2 2021-01-12 04:54:06.376 pm debug Elk M1 Application: Setting state.ElkM1DNI 7370d40d-97c7-4353-b2ac-ce0ccc4f7eeb
app:2 2021-01-12 04:54:06.357 pm debug Elk M1 Application: Creating Parent ElkM1 Device
app:2 2021-01-12 04:54:06.353 pm debug Elk M1 Application: Showing deviceMapsPage
app:2 2021-01-12 04:54:03.683 pm debug Elk M1 Application: Showing mainPage
--- Live Log Started, waiting for events ---

=======================================
2) If I go to the ELK Driver and attempt a Arm Away and Disarm I see these errors:

dev:1 2021-01-12 05:00:28.553 pm error org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'null' with class 'null' to class 'int'. Try 'java.lang.Integer' instead on line -1 (disarm)
dev:1 2021-01-12 05:00:23.766 pm error org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'null' with class 'null' to class 'int'. Try 'java.lang.Integer' instead on line -1 (armAway)

=======================================
3) Is it normal for the Telnet connection to regularly (every 30 to 60 seconds) drop and reestablish?

dev:1 2021-01-12 05:17:00.021 pm debug Elk M1 RequestTextDescriptions Type: 13 Device: 1
dev:1 2021-01-12 05:17:00.018 pm debug Elk M1 sendMsg: 0Bsd120010063
dev:1 2021-01-12 05:17:00.015 pm debug Elk M1 RequestTextDescriptions Type: 12 Device: 1
dev:1 2021-01-12 05:17:00.011 pm debug Elk M1 sendMsg: 06cp0067
dev:1 2021-01-12 05:17:00.008 pm debug Elk M1 refreshCustomValues

dev:1 2021-01-12 05:16:59.030 pm warn Elk M1 Telnet is restarting...
dev:1 2021-01-12 05:16:59.026 pm error Elk M1 Telnet connection dropped...
dev:1 2021-01-12 05:16:59.022 pm warn Elk M1 telnetStatus error: send error: Broken pipe (Write failed)

app:2 2021-01-12 05:16:59.019 pm debug Elk M1 Application: smartRefresh complete 1610486208932
dev:1 2021-01-12 05:16:59.015 pm debug Elk M1 sendMsg: 09kf01000D5
dev:1 2021-01-12 05:16:59.011 pm debug Elk M1 requestKeypadPress
dev:1 2021-01-12 05:16:59.006 pm debug Elk M1 sendMsg: 08kc010009
dev:1 2021-01-12 05:16:59.002 pm debug Elk M1 requestKeypadStatus
dev:1 2021-01-12 05:16:58.999 pm debug Elk M1 sendMsg: 06az005F
dev:1 2021-01-12 05:16:58.995 pm debug Elk M1 requestAlarmStatus

I will keep plugging away at this but expect I will not get far until the java errors are resolved.
Regards,
Al

@alkramer6,

I'm pretty sure those errors are a result of no user code being provided. If you go to the main Elk M1 device, scroll down to the Preferences section and enter a User Code (4 or 6 digits, depending on how your M1 is set), and click Save Preferences, that should fix some of those.

The dropped connections could be an issue with the IP address and Port number provided (also under Preferences). Double check those and remember the Port must be the Elk's unsecured port which is 2101 on the M1XEP or C1M1 by default. I don't have a way to use the Elk's secured port from Hubitat at this time.

Greg

@captncode
I was so sure I had changed the unsecured port to 2601... but in fact that's the secure port. I changed the preferences to 2101 and now I am seeing some connection related log entries!
My User code is fine as is the IP.
Doing a Soft Reset on HE and will try again from scratch as the Arm/Disarm commands are still giving the same errors.
Thanks for getting me to look closer at the port!
Al