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.