Design Principles
Python has meaningful design principles, which can be seen by typing:
$ python3 import this
There is one first principle of Home Automation:
One day you may need to sell your house. So, create an email account and other accounts for your home. Don't use your personal email address or personal accounts for home automation.
While my home automaton design principles are not zen-like, here are mine:
no monthly fees
minimal use of batteries
prefer local over cloud
make Home Automation easy for everyone to understand, especially me
document everything
don't over complicate
make choices, which impose limitations, such as, limit languages to: bash, python3, php, html, css
all python and bash scripts must run stand alone
only use necessary tools and frameworks
always use lightweight tools
follow best practices
automate everything
provide references to the best websites
if instructions from other sites are complete and maintained than use those, instead of writing my own
Check the above against the implementation
For example, I started with a virtual environment for flask. But, is a virtual environment really necessary? And, the answer is no. However, is using a virtual environment a best practice? And, the answer is yes. So, it is a choice. Using best practice overrides the necessity of using a virtual environment.