I love HA for it's stability. However, I've written several HA integrations and I've got to say that their component API is insane. Inheritance based, vaguely documented, shifting terminology, etc. I'm working on my own use-case based API just to rationalize it a bit.