Home Assistant is a very good software but has some serious design flaws, limitations:
-
Restarts should be seamless. There are many possibilities to solve this from saving and reloading all the data to separating the data storage from the App into some other layer. But even a startup with all the entities in unknown state would be better that the current mixed solution. Just restart Home Assistant and look at a people entity more-info dialog when he/she left or came home: when you restarted HA. This is a serious problem when controlling complex systems, like a multi-apartment heating system, heat pumps, AC units, firewood stove, valves, pumps, hot water production and so on. To solve this weakness the automations have to be overcomplicated and inefficient. And then comes the problem of active (running) automations and scripts when a restart occures. Versioning automations is also an interresting topic. Or just make it an always running system with live patching/upgrading. If an operating system kernel can be patched live then Home Assistant can do that too
-
Automation/script engine should not use a reinvented the wheel “programming language”. A real programming language should be used for scripts and automations, most probably Python as it is at hand. This is a common design mistake, I did it myself too (I’m a software architect), did SUN Microsystems too with programming in XML(!) and many others… Belive me, if someone can’t write a program in a proper programming language he can’t write that in XML or YAML either. That’s what programming languages are for. The current solution makes programmers life hard and doesn’t help non-tech users either. Why learn an another one, a basic one, why can’t I use proper debuging tools, editors, code completion, syntax highlighting and so on. Like the pyscript addon. Non-tech users can use the UI for automation creation, and that UI can generate code in Python too.
-
Fine-grained privilege system. Example: the user logged in 7/24 on a wall mounted dashboard should not have access to all the entities, just those required for that particular wall panel. Basically an area/device/entity/service level read/write/execute privilege system.
Of course we can say that Home Assistant is not meant to be used in such serious applications. But hey, this is a very good project, why don’t make it serious (with a redesign and rewrite)?
Don’t find this offensive. English is not my native language, so I can not write in a very polite way. In my opinion these are the biggest flaws with Home Assistant.
I know big bugs are closed fast. Unsolved.