Please ⭐ this repo if you find it useful
The component and platforms in this repository are not meant to be used by a user, but as a "blueprint" that custom component developers can build upon, to make more awesome stuff.
HAVE FUN! 😎
This is simple, by having custom_components look (README + structure) the same it is easier for developers to help each other and for users to start using them.
If you are a developer and you want to add things to this "blueprint" that you think more developers will have use for, please open a PR to add it :)
This repository is an extension and addition to the integration_blueprint repository. It is regularly updated with all the edits from parent repository and makes it easy to apply new edits to your project. This way you can easily keep it up to date.
This repository contains multiple files, here is a overview:
File | Purpose | Documentation |
---|---|---|
.devcontainer.json |
Used for development/testing with Visual Studio Code. | Documentation |
.github/ISSUE_TEMPLATE/*.yml |
Templates for the issue tracker | Documentation |
.vscode/tasks.json |
Tasks for the devcontainer. | Documentation |
custom_components/integration_blueprint/* |
Integration files, this is where everything happens. | Documentation |
tests/* |
Integration unit tests. | |
CONTRIBUTING.md |
Guidelines on how to contribute. | Documentation |
LICENSE |
The license file for the project. | Documentation |
README.md |
The file you are reading now, should contain info about the integration, installation and configuration instructions. | Documentation |
requirements.txt |
Python packages used for development/lint/testing this integration. | Documentation |
-
…or use this template to create your new repository. Then download a copy of the new repository to your IDE and run the final environment setup commands:
# Configure future updates from blueprint repository git remote add blueprint https://github.com/Limych/ha-blueprint.git git fetch blueprint dev git merge blueprint/dev --allow-unrelated-histories # Push changes to origin repository git push -u origin dev # Initialize the development environment ./scripts/setup
-
…or create a new repository on the command line:
# Initialize your new origin repository git init git remote add origin https://github.com/YOUR_NEW_REPOSITORY # Apply blueprint repository git remote add blueprint https://github.com/Limych/ha-blueprint.git git fetch blueprint dev git reset --hard blueprint/dev git branch -M dev # Push changes to origin repository git push -u origin dev # Initialize the development environment ./scripts/setup
-
…or apply blueprint to an existing repository from the command line:
# Apply blueprint repository git remote add blueprint https://github.com/Limych/ha-blueprint.git git fetch blueprint dev git merge blueprint/dev --allow-unrelated-histories # Push changes to origin repository git push -u origin dev # Initialize the development environment ./scripts/setup
After these steps, your repository will developing on a own branch. But in parallel there will be this blueprint repository, new changes in which you can always apply with a couple of simple commands:
./scripts/update
git merge blueprint/dev
Then:
- Rename all instances of the
integration_blueprint
tocustom_components/<your_integration_domain>
(e.g.custom_components/awesome_integration
). - Rename all instances of the
Integration Blueprint
to<Your Integration Name>
(e.g.Awesome Integration
).
If you need to work on the python library in parallel of this integration
(sampleclient
in this example) there are different options. The following one seems
easy to implement:
- Create a dedicated branch for your python library on a public git repository (example: branch
dev
onhttps://github.com/ludeeus/sampleclient
) - Update in the
manifest.json
file therequirements
key to point on your development branch ( example:"requirements": ["git+https://github.com/ludeeus/sampleclient.git@dev#devp==0.0.1beta1"]
) - Each time you need to make a modification to your python library, push it to your
development branch and increase the number of the python library version in
manifest.json
file to ensure Home Assistant update the code of the python library. (example"requirements": ["git+https://...==0.0.1beta2"]
).
These are some next steps you may want to look into:
- Add tests to your integration,
pytest-homeassistant-custom-component
can help you get started. - Add brand images (logo/icon) to https://github.com/home-assistant/brands.
- Create your first release.
- Share your integration on the Home Assistant Forum.
- Submit your integration to HACS.