ELK M1 Interface

There is that service call that lets you play the recorded speech that the Elk has through the speakers. I don’t recall if the chime noise is one of the recorded segments available, but you could certainly replicate the “Zone” “3” “Violated” sort of sentence.

There’s the elkm1.speak_word and elkm1.speak_phrase services available to do this. There is an 800Hz tone with about a 500ms duration you could play?

service: elkm1.speak_word
data:
  number: 53

I’ve found in the past that you can just call this service back-to-back with multiple words (or corresponding phrases) in an automation or script and it seems to “work” and play them out sequentially without needing to insert delays. I’m not actually using this in production, but it might give you a solution.

The list of words and phrases is in the M1 RS232 ASCII Protocol document in chapter 6.

Sadly, there’s no Self or Destruct words available to choose from.

For announcements, I use a bunch of Elk 32 ohm speakers (wired in series/parallel to bring impedance down to 8 ohms). But my family doesn’t like the Elk voice for anything other than actual alarms.

So I put a relay on the Elk speaker output and set up an automation that switches (for 20 seconds) from the Elk output to an output from a Raspberry Pi + amplifier. Then the automation sends an MQTT command that the Pi hears (via Node Red) which tells it to play any number of voices, tones etc.

Sounds complicated, but works instantaneously. FWIW, I play a chime before the voice since hearing a disembodied voice with no warning is startling to some people. Also FWIW, I test after 30 seconds to make sure the speaker output doesn’t stay stuck in the Pi mode, which could cause us to miss useful alarm information.

You can make some great voice clips here: https://notevibes.com/cabinet.php

That’s a really interesting idea! I wonder if you can intercept the audio from the Elk talk/listen interface for this purpose? When you install that option in the Elk, it uses a relay output or two to switch the audio around from wherever the alarm audio comes from to the talk/listen interface. I wonder if that’s close enough to “line level” audio that you could feed that from a Raspberry with an amplifier?

That literally made me laugh out loud. Thanks for for that (and the the tech tips too).

I use this template for the custom:button-card:

  garage_door:
    color_type: icon
    size: 40px
    styles:
      card:
        - height: 70px
        - margin: 0px 0px 10px 0px
    state:
      - value: Normal
        icon: 'mdi:garage'
        styles:
          icon:
            - color: *green_medium
      - value: Violated
        icon: 'mdi:garage-open'
        styles:
          icon:
            - color: *red_medium

And display like this:

              - type: 'custom:button-card'
                entity: sensor.garage1
                name: G. 1
                template: garage_door

Or, to activate the doors, I do this:

                      - type: 'custom:button-card'
                        entity: sensor.garage1
                        name: G. 1
                        template: garage_door
                        tap_action:
                          action: call-service
                          service: switch.turn_on
                          service_data:
                              entity_id: switch.elk_garage_1

Because I don’t want doors opening from accidental presses, I hide them with a conditional card that is triggered with a key pad:

          - type: conditional
            conditions:
              - entity: input_boolean.unlock_door_card
                state: "on"

There are probably more elegant ways to do this.

Cheers, Richard

1 Like

Thank you very much! I’m looking forward to trying this.

The gift of time! While thinking about this further I thought of another solution that is quite simple and should work. There is a service call in HA called zone_trigger. If a zone is configured to chime when triggered then zone_trigger would cause the chime to happen. The zone you use could be your ‘broken’ zone or you could create a dummy zone and trigger that one.

Let us know what worked for you!

1 Like

I upgraded core from 2022.2.9 to 2022.3 yesterday on HAS OS (Rpi 4 w/ 8GB RAM). After the upgrade the ELKM1 integration started reporting:

Logger: homeassistant.config_entries
Source: config_entries.py:366
First occurred: 8:26:18 PM (1 occurrences)
Last logged: 8:26:18 PM

Config entry 'ElkM1' for elkm1 integration not ready yet: Timed out connecting to elk://192.168.0.251; Retrying in background

The detailed log shows repeated instances of the message:

2022-03-03 20:26:18 WARNING (MainThread) [elkm1_lib.elk] ElkM1 at elk://192.168.0.251 disconnected

I have a custom web site (local to LAN) that also interfaces to the same control using the non-secure interface, and it is still working fine, so it doesn’t appear to be an issue with the control or network.

Anyone have suggestions regarding what to try to get the ELKM1 integration working again? I would prefer to get it working without deleting/re-installing, because it could take me a while to recover all the customizing I’ve done on it.

Thanks!

Open a bug against HA core. @bdraco added discovery that is in the 2022.3 release and this is related to the new code.

We had one report of it timing out when authentication was turned off, but we fixed that (https://github.com/home-assistant/core/issues/67183). It might be a similar situation, but we will need logs to verify and troubleshoot.

logger:
  default: warning
  logs:
     elkm1_lib: debug
     homeassistant.components.elkm1: debug

Created a bug report against HA core and included a detailed log:

https://github.com/home-assistant/core/issues/67599

1 Like

I’m still having this issue after upgrade to 2022.3.1, but there is a recommendation in the comments of the bug report to:

Please remove the username and password from your configuration if you are not using password authentication

I know that this is a noob question, but how do I change that in the configuration? I don’t have anything set in my yaml files, I just enabled the integration and answered the questions. Now I can’t find a way to change any of the configuration. Should I add a section to my configuration.yaml?

Thanks for the help!

Folks, as far as I know, all bugs have been fixed and the 2022.3.2 release will contain those fixes. If you have followed all the directions that @bdraco has shared in this thread and in the HA Core bugs and things are not working please post here. Include the version that you are running and include logs (or a pointer to where the logs can be retrieved).

Background… Auto discovery of the ElkM1 was added in 2022.3. Clearly there are some edge cases that were not caught in testing. Please keep reporting! And when 2022.3.2 comes out please let us know if it is working (we assume we will hear quickly if it is not working :open_mouth: ).

Sorry for the inconvenience.

Ran into the same issue with ELK not connecting post upgrade. I saw @bdraco posted a patch, tried upgrading and ELK still wasn’t working. Totally my fault! I should have payed more attention to the prior post stating to remove username and password. I finally caught it when looking at the github thread. Removing the integration and reinstalling then configuring WITHOUT a username and password worked perfectly. Setup is using unsecure connection. Thanks all!

2022.3 broken here as well. Running HA container and using non-secure port. HA discovered a new Elk instances on 2601 with name of BADBAD even though I am not running on secure port. Old instance reported could not connect (using DNS name).

Tried to delete the old instance but I can’t configure the new instance, nor can I ignore it and do a manual config (tried all kinds of combinations secure port, non-secure port, entering IP:port, entering DNS, entering IP only and selecting non-secure).

EDIT: Whatever happened locked up my M1XEP. I rolled back 2022.2.2 and did a full volume restore from last week and still couldn’t connect until I re-powered the XEP. So there was a hung socket or something, the ISY was still connected.

I believe what you are describing is fixed with https://github.com/home-assistant/core/commit/26c5dca45d9b3dee002dfe1549780747e5007e06 which will be in the .2 patch.

Patch releases comes out every 4 or 5 days on average.

.2 is published

1 Like

I upgraded to 2022.3.7 and my existing integration config seems to be working ok now. But I do still see an autodiscovered ElkM1 instance on my elk’s IP port 2601 named BADBAD, when I ignore it it keeps coming back.

Logs please.

Not a whole lot of info, but looks like BADBAD is part of the MAC address. After the 19:40 config-flow I ignored the integration and it came back at 19:55.

Existing integration is setup using DNS name on 2101.

2022-03-25 19:40:17 DEBUG (MainThread) [homeassistant.components.elkm1] Setting up elkm1 elk://myelkm1
2022-03-25 19:40:17 DEBUG (MainThread) [homeassistant.components.elkm1] Waiting for login event for 20 seconds
2022-03-25 19:40:19 DEBUG (MainThread) [homeassistant.components.elkm1] ElkM1 received first response (VN)
2022-03-25 19:40:19 DEBUG (MainThread) [homeassistant.components.elkm1] Received login event
2022-03-25 19:40:19 DEBUG (MainThread) [homeassistant.components.elkm1] Waiting for sync_complete event for 120 seconds
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Received sync_complete event
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:25 DEBUG (MainThread) [homeassistant.components.elkm1] Creating elk entities for <elkm1_lib.elk.Elk object at 0x7fa6dfb0db50>
2022-03-25 19:40:27 DEBUG (MainThread) [homeassistant.components.elkm1.config_flow] Elk discovered from integration discovery: ElkSystem(mac_address='00:40:9D:BA:DB:AD', ip_address='x.x.x.x', port=2601)
2022-03-25 19:40:47 DEBUG (MainThread) [homeassistant.components.elkm1.config_flow] Elk discovered from dhcp: ElkSystem(mac_address='00409dbadbad', ip_address='x.x.x.x', port=0)
2022-03-25 19:55:27 DEBUG (MainThread) [homeassistant.components.elkm1.config_flow] Elk discovered from integration discovery: ElkSystem(mac_address='00:40:9D:BA:DB:AD', ip_address='x.x.x.x', port=2601)
1 Like