home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
74.2k stars 31.16k forks source link

Elk M1 integration problems #31776

Closed richardkuw closed 4 years ago

richardkuw commented 4 years ago

The problem

The Elk M1 security panel integration includes the ability to ignore various zones, counters, etc., that are present in the panel - there are hundreds of them so it's important to hide the ones that aren't in use. These are specified using "include" and "exclude" configuration variables in the yaml file. Since version 104 these settings are ignored causing hundreds of extra entities to show up in the UI, which is difficult to deal with. Reverting to 103.6 removes the extra entities.

Environment

Problem-relevant configuration.yaml

elkm1:
  host: elk://192.168.3.254
  area:
    include: [1]
  zone:
    include: [1-7]
  counter:
    exclude: [1-64]
  setting:
    exclude: [1-20]
  keypad:
    exclude: [4-16]

Traceback/Error logs

Additional information

bdraco commented 4 years ago

Can confirm this happens. Not sure what the cause is yet

bdraco commented 4 years ago

This appears to be by design

elk_datas:{'': {'elk': <elkm1_lib.elk.Elk object at 0x7f49a26cab50>, 'prefix': '', 'config': {'temperature_unit': '°F', 'panel': {'enabled': True, 'included': [True]}, 'area': {'enabled': True, 'included': [True, True, True, True, True, True, True, True]}, 'counter': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'keypad': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'output': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'plc': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'setting': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'task': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'thermostat': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 'zone': {'enabled': True, 'included': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}}, 'keypads': {}}}
bdraco commented 4 years ago

@gjbadros do you have any insights here? It looks like we don't know which entities are configured until we get the first update which makes them available.

bdraco commented 4 years ago

@richardkuw It looks like this is solvable

I've sent @gwww a pull request here https://github.com/gwww/elkm1/pull/10

If its acceptable, I'll adjust home assistant to only setup items that are actually configured. It should significantly reduce the complexity and work needed to setup the integration.

@gjbadros : You are more familiar with this code than I am, if you have a moment, would you take a look as well?

bdraco commented 4 years ago

https://github.com/bdraco/home-assistant/tree/elk1_no_setup_unconfigured

@richardkuw modified home assistant branch is here

gjbadros commented 4 years ago

Sounds like others can reproduce, but I cannot on 106.2. I do remember there being a race condition that has existed as long as I can remember where the names of the elk zones/objects were generic instead of what was read from the controller, and I believed that this happened when the controller was slow to respond over the network. The problem was spurious, however, and once the unique_id had a successful name setting, they persisted across restarts so I didn't spend more time investigating this.

It happened maybe 2-3 times total for me over the 4-5 months I was tweaking my config related to the alarm system.

It may be important to be sure that the full config has been read before completing the integration setup.

gjbadros commented 4 years ago

And it looks like my above description matches https://github.com/gwww/elkm1/issues/9

bdraco commented 4 years ago

@richardkuw This should be fixed in 0.108 if you add auto_configure: true to the config

richardkuw commented 4 years ago

Thanks, much appreciated!

-- Richard

From: "J. Nick Koston" notifications@github.com Reply-To: home-assistant/core reply@reply.github.com Date: Friday, March 27, 2020 at 3:39 PM To: home-assistant/core core@noreply.github.com Cc: Richard Kunert rkunert@wisc.edu, Mention mention@noreply.github.com Subject: Re: [home-assistant/core] Elk M1 integration problems (#31776)

@richardkuwhttps://github.com/richardkuw This should be fixed in 0.108 if you add auto_configure: true to the config

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/home-assistant/core/issues/31776#issuecomment-605305113, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ALWES74OX4HJQSN4YJMDC43RJUFI7ANCNFSM4KUIXJVA.

gjbadros commented 4 years ago

In 0.108.2 I get:

2020-04-13 14:45:04 ERROR (MainThread) [homeassistant.components.elkm1] Timed out after 55 seconds while trying to sync with ElkM1

in my logs.

Also note that the error message should specify which ElkM1 instance it's talking about (by using the configured prefix and/or the hostname). Some of us have multiple ElkM1 devices that are configured.

bdraco commented 4 years ago

In 0.108.2 I get:

2020-04-13 14:45:04 ERROR (MainThread) [homeassistant.components.elkm1] Timed out after 55 seconds while trying to sync with ElkM1

in my logs.

Also note that the error message should specify which ElkM1 instance it's talking about (by using the configured prefix and/or the hostname). Some of us have multiple ElkM1 devices that are configured.

Would you please open a new issue for this

gjbadros commented 4 years ago

Sure,

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

On Mon, Apr 13, 2020 at 2:50 PM J. Nick Koston notifications@github.com wrote:

In 0.108.2 I get:

2020-04-13 14:45:04 ERROR (MainThread) [homeassistant.components.elkm1] Timed out after 55 seconds while trying to sync with ElkM1

in my logs.

Also note that the error message should specify which ElkM1 instance it's talking about (by using the configured prefix and/or the hostname). Some of us have multiple ElkM1 devices that are configured.

Would you please open a new issue for this

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/31776#issuecomment-613114883, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALOHTJLWGZNRSHPMBGEM3LRMOCIRANCNFSM4KUIXJVA .