ELK M1 Interface

Has anyone had success with elkm1.sensor_zone_trigger setting off the alarm if it’s armed?

Calling the service doesn’t seem to do anything for me, and if I monitor the sensors in ElkRP I don’t see the momentary short circuit.

Looking for a way to either send a keypad key press (F6), or set a specific Output number to ON. I don’t see a service for either of these. Either would activate the secondary alarm systems I need to turn on. It looks like I can watch for a keypress, but I don’t see a way to send a key press or set an Output.

Outputs on the Elk are exposed in Home Assistant as switches. You ought to be able to use the Home Assistant services such as switch.turn_on, switch.turn_off, switch.toggle to change their state. You can play around with these in the “Developer” panel, in the “Services” tab.

I am trying to figure out why I cannot arm my Elk M1 with HASS but I can get the zone status and everything else. I am running the Elk firmware 5.3.10. Seems there is a problem with a packet decode. Happens when I try and arm and enter in my passcode in the UI.

Logger: elkm1_lib.connection
Source: /usr/local/lib/python3.11/site-packages/elkm1_lib/connection.py:107
First occurred: 9:00:50 PM (3 occurrences)
Last logged: 9:05:12 PM

Invalid message ‘b’1CLD1313006100000000000000006D\r\n’’
Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/elkm1_lib/message.py”, line 60, in decode
decoded_msg = decoder(msg)
^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/elkm1_lib/message.py”, line 216, in ld_decode
log_local_datetime = dt.datetime(year, month, day, hour, minute)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: month must be in 1…12

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/elkm1_lib/connection.py”, line 103, in _read_stream
decoded = decode(line)
^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/elkm1_lib/message.py”, line 62, in decode
raise ValueError(“Cannot decode message”) from exc
ValueError: Cannot decode message

I don’t believe that the arming problem you are having is related to the exception.

Starting with the arming issue. A log would be useful. See the ElkM1 integration docs for how to turn them on.

For the exception, the message looks odd to me. The message is a log message and has all zeros for the date and time. That’s likely the reason the message is tagged as invalid. Note that log messages have nothing to do with arming, which I why I believe that the exception has nothing to do with the arming problem.

I’m curious about why the ElkM1 is sending an invalid log message. I wonder if it’s a clue as to why the arming is not working. Logs should help.

Ok, I will check. The logging feature is part of the elk python library? I thought I turned on logging in the HA setup but didn’t see a log file in the system logs option. May be in a different directory, I will use the file browser and see.

Oops. How to turn on debug logs is not in the docs, as I mentioned above. This post describes how to turn them on: ELK M1 Interface - #983 by bdraco

I am seeing some debugging in the HA side of things. I see normal stuff and see my attempt to arm the system. The bad package shows up after the arm attempt.

2023-07-24 21:05:08.590 WARNING (MainThread) [homeassistant.components.camera] Updating xiaomi_cloud_map_extractor camera took longer than the scheduled update interval 0:00:05
—-> Seems to be the arm with my passcode: 2023-07-24 21:05:12.341 DEBUG (MainThread) [elkm1_lib.connection] write_data ‘0Da110012340035’
2023-07-24 21:05:12.376 DEBUG (MainThread) [elkm1_lib.connection] got_data ‘17IC000000000000006010075’
2023-07-24 21:05:12.396 DEBUG (MainThread) [elkm1_lib.connection] got_data ‘1CLD1313006100000000000000006D’
2023-07-24 21:05:12.396 ERROR (MainThread) [elkm1_lib.connection] Invalid message ‘b’1CLD1313006100000000000000006D\r\n’’
Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/elkm1_lib/message.py”, line 60, in decode
decoded_msg = decoder(msg)
^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/elkm1_lib/message.py”, line 216, in ld_decode
log_local_datetime = dt.datetime(year, month, day, hour, minute)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: month must be in 1…12

The IC message is saying that the user code is invalid.

The log message is invalid, as suspected, because it does not contain a valid time.

From what you have shared so far the code is working as intended. Have you configured your panel with all the options documented on the integration page?

I’m trying to capture an F keypress event in the m1 to trigger an automation in HomeAssistant. In this thread I see someone suggested triggering an ELK automation task, and using that to trigger the Automation. I have not been able to figure out how to configure an automation task to trigger off an Elk ‘scene’.

Therefore I’m going down the route of listening for an ELK Keypress event. How would I configure the automation to lets say listen for when the F4 key on an elk keypad is pressed?

I do this, and it’s pretty easy once you’ve done the configuration on the Elk. I can’t easily look at the Elk side of things right now, but I have a bunch of the F keys on various keypads mapped to invoke Tasks on the elk that don’t do anything.

Then in Home Assistant, I have automations that look like this:

- alias: elk Ext Lights On
  id: 8201d101-b7af-43ce-bd76-894ad03c6bb7
  initial_state: True
  trigger:
    platform: state
    entity_id:
    # keypad 1 F4
      - scene.task019
  action:
    - service: homeassistant.turn_on
      entity_id: group.outside_lights

So any state change on the relevant scene entity triggers the automation.

1 Like

I’ll give that shot and report back.

Appreciate the help.

That worked perfectly! Thanks again!

1 Like

Recently a new Home Assistant Yellow newb, installed last week. First integration was with my Elk M1 Gold. Significant thanks to all those involved in the development of this integration. Very much appreciative! Working very well, will be doing more as I learn the system.

1 Like

Question: I would like a Aqara Zigbee contact sensor trigger an Elk M1 zone. What would be the best way to accomplish this if possible?

I have looked at the service in the documentation. I’ve setup some “dummy” zones, but when I try to trigger it there’s no indication of the attempt in the Elk M1 logs with Elk RP2.

…ELKM1.SENSOR_ZONE_TRIGGER

If anyone has done this or similar trigger action, could you provide me more details? Does the zone need to be a NC or NO zone with EOL resistor to work? Is there a time duration that needs to be applied?

Thank you in advance.

Trying to use output of elk to trigger my doorbell chime. I put a small 12v activated relay at my chime and ran the wires back to Output 7 on my control panel. I made sure Output 7 had a name and the Show checkbox active in ELK RP software. When I reload my integration it does not show up in HA. I can’t use the onboard relay (OUT 3) because I have it set as a reset for my M1XEP triggered by an F-key since it sometimes requires rebooting so I just wired the DC + for it through the relay. I tried naming all the output 7-16 and reloading the integration, but none of them show up. Do I have to use the YAML manual config to use outputs higher than 3?

The ElkM1 Alarm Engine is now available. I suspect that the existing ElkM1 integration will work with it, but I have not seen any integration documentation so I really don’t know. I’m going to start a new discussion for the Alarm Engine where we can have discussions. Please have discussion on the new topic here: ElkM1 Alarm Engine

Elk Products has recently stated strong development comittment to the Elk M1G, it’s not going anywhere and is still considered the Premiere alarm panel by Elk. See beginning of their new training video on the E27. Intro to E27 Alarm Engine.

I appear to have ‘lost’ the alarm_control_panel.elkm1_area_001 entity.
I have panel entities for the other default panels.
However this panel isn’t around.
I have deleted the Integration and loaded it again, but no restoration of the panel for area 1.
I have edited the configuration to manually change the alarm_control_panel.elkm1_area_2, say, to area_1 but the integration UI balks at that.
Oddly the integration is still reporting properly on the change of state of sensors in area_1
Not really much going on in the logs - right now just the ElkM1 heartbeat.

any suggestions on how I may recover the panel? I had it in a lovelace panel before…

Does anybody have updates on the E27 Alarm Engine and Hassio functionality? I’m about ready to purchase a new system and would like to use E27 if it works.