You’ll need to set up a development environment if you want to develop a new feature or component for Home Assistant. Read on to learn how to set up.
Install the core dependencies.
$ sudo apt-get install python3-pip python3-dev python3-venv
In order to run
script/setup below you will need some more dependencies.
$ sudo apt-get install libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev
Different distributions have different package installation mechanisms and sometimes packages names as well. For example Centos would use:
sudo yum install epel-release && sudo yum install python34 python34-devel mysql-devel
Additional dependencies exist if you you plan to perform Frontend Development, please read the Frontend section to learn more.
If you are using Windows as a development platform, make sure that you have the correct Microsoft Visual C++ build tools installed. Check the Windows Compilers section on the Python website for details. Validation using
tox will fail if this is not done correctly.
Also, make sure to install or upgrade the
setuptools Python package. It contains compatibility improvements and adds automatic use of compilers:
$ pip install --upgrade setuptools
Install Homebrew, then use that to install Python 3:
$ brew install python3
Visit the Home Assistant repository and click Fork. Once forked, setup your local copy of the source using the commands:
$ git clone https://github.com/YOUR_GIT_USERNAME/home-assistant.git $ cd home-assistant $ git remote add upstream https://github.com/home-assistant/home-assistant.git
If you plan on providing isolation to your environment using
venv. Within the
home-assistant directory, create and activate your virtual environment.
$ python3 -m venv venv $ source venv/bin/activate
$ cd home-assistant $ script/setup
hassto invoke your local installation.
By default logging in home-assistant is tuned for operating in production (set to INFO by default, with some modules set to even less verbose logging levels).
You can use the logger component to adjust logging to DEBUG to see even more details about what is going on.