I own one. It's good but not perfect. Some complaints:
* The protocol has a lot of oddities. E.g. it sends out spurious "fully armed" messages when it's actually in the process of arming [1] so a good integration has to debounce these. (The one built into Home Assistant doesn't, last I checked. It just reports weird states. iirc it will even say "arming" long after the panel is fully armed.) The command to (dis)?arm remotely only works if the user whose code is supplied is configured in a particular way. (Can't find the reference for this right now. It might be that the keypad's "Bypass key requires User Code" can't be checked or something non-obvious like that. Whatever the setting is it makes just entering the code not start arming the panel immediately but wait for another button press. I think the serial protocol just emulates that entering the code in the keypad, which is an unfortunate choice.)
* The remote programming tool is a flaky VB.NET app. The protocol for this part isn't documented, although I've reverse-engineered part of it.
fwiw, I have a work-in-progress Rust crate for talking with the Elk. [2] It can be used with Home Assistant via the MQTT alarm panel integration. [3]
I can definitely see the appeal of rolling your own. One problem though is that I think when talking to an alarm company, the panel is supposed to be certified in some way, which would be a significant barrier for a hobbyist design.
* The protocol has a lot of oddities. E.g. it sends out spurious "fully armed" messages when it's actually in the process of arming [1] so a good integration has to debounce these. (The one built into Home Assistant doesn't, last I checked. It just reports weird states. iirc it will even say "arming" long after the panel is fully armed.) The command to (dis)?arm remotely only works if the user whose code is supplied is configured in a particular way. (Can't find the reference for this right now. It might be that the keypad's "Bypass key requires User Code" can't be checked or something non-obvious like that. Whatever the setting is it makes just entering the code not start arming the panel immediately but wait for another button press. I think the serial protocol just emulates that entering the code in the keypad, which is an unfortunate choice.)
* The remote programming tool is a flaky VB.NET app. The protocol for this part isn't documented, although I've reverse-engineered part of it.
fwiw, I have a work-in-progress Rust crate for talking with the Elk. [2] It can be used with Home Assistant via the MQTT alarm panel integration. [3]
I can definitely see the appeal of rolling your own. One problem though is that I think when talking to an alarm company, the panel is supposed to be certified in some way, which would be a significant barrier for a hobbyist design.
[1] https://www.elkproducts.com/forums/topic/spurious-armed-full...
[2] https://github.com/scottlamb/elkm1
[3] https://www.home-assistant.io/integrations/alarm_control_pan...