It might be worth looking into the Elk M1 security platform. It is fully supported in Home Assistant and allows you to leave all the messy electronics and integration work to a (somewhat) cheap, well engineered and understood platform. It's just hardware so no monthly fees or anything.
OMG! I’ve spent months googling for a near exact replacement of ADT Command control panel but with Home-Assistant.io added on, and this Elk M1 is the closest and my now perfect solution to the most diverse problems I have:
* supports Home-assistant.io
* phone app
* cellular data hookups (got my own cellular remote monitoring thing going)
* both wired and wireless zones
Again, like other commentators, I leave my video stream system separate from the alarm system (vid capture is on 24/7 private cloud)
Also, spent many months reverse engineering the Ademco/Honeywell/ADT Command 7” LCD control panel simply because one can buy this for $5 to $50 (they are regularly tossed out by new homeowners who wish not to bother with ADT $399/year plans). RE effort was a pretty intense but complete add-on to Vista 20P alarm panel, but I just stopped because there are no others way to connect except by doing WiFi, was looking for a direct connect.
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.