ELK M1 Interface

Regarding users, no matter which user arms or disarms, value is always changed_by_user:1. Am I doing something wrong?

If arming/disarming through hass the API to the Elk always uses keypad 1. Can’t change that. If arming/disarming through a physical keypad it should be the actual keypad number. If its not then I will look into it.

As to user, the user number should match the code entered. Or 0 for invalid code.

After rebooting, sometimes I get users, sometimes not. Currently, output is changed_by (blank, no value), changed_by_user:0, changed_by_time:0, changed_by_keypad:0. Arming and disarming doesn’t change these values. I will keep testing and reporting back. Cheers

Entering codes from physical keypad produces desired results. Thanks

To expand, codes from physical keypads work correctly. But if armed or disarmed via HASS, changed_by still shows last code entered via physical keypad, and not code entered in HASS

Arming and disarming with different users isn’t being displayed correctly. I have test with Android app M1 Touch, and the Elk logs show the different users arming and disarming, but not the case in HA. HA only shows users with codes entered on physical keypad. Is there a way to update last user no matter where code is entered?

@stipex it looks like it is not possible.

Are you running the latest code? https://github.com/gwww/ha-elkm1/tree/refactor has the latest. There will be a couple more changes in this area. See my last couple of posts on this list.

I expect the code to be posted shortly.

Thankfully I found this "Elk M1 interface project! I’ve been running HomeAssistant for a week on a ubuntu VM. So far I am very impressed with the work you guys have done!
Thank you for this latest code in “refactor”, it fixed the problems I’ve been having with displaying the correct temperatures from the Elk. I’m in Canada and we use Celsius temperatures and before I added your refactor update, the temperatures on all sensors and control panels where displayed incorrectly! Thank you!!

The only issue I have now is the furnace control thermostat. We have a TR40-RS485 that controls the furnace and AC. https://www.smarthome-products.com/productspecs/TR40-Manual.pdf

Here’s what I see in HASS -

current temp should display 23C
heat set point should display 23C
cooling set point should display 27C

Maybe there is something I am doing wrong but I appreciate any input!

Probably a double conversion somewhere in the code or HASS. The heat_setpoint and cool_setpoint are set as you say, but target_temp_high and target_temp_low are what are shown in the UI and clearly wrong. Same for current temperature.

23C is 73.4F. 23F is -5C. Converting from 73.4F to celcius, then to celcius again (when it already is) gets us these wrong numbers.

Ahhhhhh! Well I decided to try https://github.com/gwww/ha-elkm1/tree/refactor with my old config and I was greeted with two things:

elk:// changed to socket://

plc: changed to x10:

And now, none of my “enabled: false” statements took for output and task so now I have several hundred outputs and tasks. lol

Looks like the Area / keypad disappeared from my configuration as well. Well it didn’t disappear, it’s now showing as “area_2”? hmmmm what did i miss in this thread?

Lots of breaking changes, and probably a few more to come. Refactor branch though is what will eventually get merged into HASS.

Thank you for that info! I had suspected the same. So is there anything I can do to fix this or just sit tight for further updates? I will be sure to let you and gwww know if this changes with future updates. Thanks again!

If you are comfortable edit a line of code you could try editing the custom_components/climate/elkm1.py. Find the unit_of_measurement and change the return to return TEMP_FAHRENHEIT.

I don’t have any climate hardware attached to elk so testing is, well, non-existant.

Thank you Glenn,
I have no trouble editing the file. I made the requested change, the result doesn’t appear to be correct though.

Current thermostat heat-setpoint is 20C and current temp is 21C

Hmmm. Ok. Two more things to try.

First, change the return to:

return self.hass.config.units.temperature_unit

Second is, comment out the entire unit_of_measurement method. It should look like this:

    # @property
    # def unit_of_measurement(self):
    #     """Return the unit of measurement to display."""
    #     return self.temperature_unit

I’d like to see the output of both tries.

There are no docs and the best reference there is to copy the code from here:
https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/climate/demo.py

New version just pushed to github. Read the github commit message for details.

Some of the reports of bugs that I read in a few of the last posts don’t seem to exist in this version. I tested that the keypad numbers report correctly (note that Elk seems to report last keypad used when arming/disarming through the API (hass)). User names seem to report correctly (not user 1 as someone reported).

The temperature reading for thermostats is not fixed.

The change not introduced with this version is the switch to unique_id from entity_id for all the entities. It is a trivial code change but required reconfiguration of all the entity_id’s used in your configurations.

Beyond the unique_id change no other changes are planned. Just bug fixes.

Check out message #531 in this thread for automations around arming/disarming automations.

What’s missing? Happy testing!

Ok, the result I see on both options is the same:

First:

Second:

Hmmm. I wonder if the Elk panel is reporting the temps in celsius. The protocol says fahrenheit. Can you send me a log with debug turned on. My email is on the support page for the elkm1-lib. Just checking. Does your hass config say “metric” for the units?

Yes, hass config is set to metric. As I mention in DM, my ElkM1 panel (Globals G01-G05) is set to Celsius

I’m going to find your email address and attach that log file.