This repo provisions ESP-IDF, ESP-Matter, and Android build prerequisites (Linux). It is structured for easy extension with roles and custom modules.
flowchart TD
A[site.yml] --> B[roles/esp_idf]
A --> C[roles/esp_matter]
A --> D[roles/chip_upstream]
A --> E[roles/android_matter]
B --> F[esp-idf install.sh]
C --> G[esp-matter install.sh]
D --> H[connectedhomeip clone]
E --> I[Android SDK/NDK + Kotlin]
A --> J[group_vars/all.yml]
A --> K[ansible.cfg + inventory.ini]
A --> L[plugins/modules]
site.yml: main playbookroles/: role implementationsgroup_vars/all.yml: shared defaultsplugins/modules/: custom modules (optional)ansible.cfg: local configinventory.yml: local inventory
Run with the default inventory:
ansible-playbook site.ymlThe roles/esp_matter role installs ESP-Matter from the specified ref and initializes submodules.
Minimal example:
- name: Install ESP-Matter only
hosts: all
vars:
esp_install_dir_expanded: "~/.esp"
roles:
- role: esp_matterOverride variables as needed:
ansible-playbook site.yml \
-e esp_idf_version=v5.5.2 \
-e esp_matter_ref=main \
-e 'esp_idf_targets=["esp32","esp32s3"]'esp_install_dir(prompted, default~/.esp)chip_install_dir(prompted, default~/connectedhomeip)esp_idf_versionesp_idf_targetsesp_idf_tools_pathesp_matter_refchip_doc_ref(required for Android setup)chip_upstream_doc_ref_mode(branchortag)android_matter_setup_enabledandroid_matter_sdk_rootandroid_matter_ndk_versionandroid_matter_sdk_api_levelandroid_matter_cmdline_tools_versionandroid_matter_kotlin_versionpreflight_min_disk_mbpreflight_min_mem_mbpreflight_allow_overwritepreflight_skip_networkpreflight_check_urls
See group_vars/all.yml for defaults.
Create a virtual environment and install dev tools:
uv venv
uv sync --extra devRun linters:
yamllint .
ansible-lintEnable prek:
prek install
prek run --all-filesIf you use Nix, you can enter a fully provisioned dev shell:
nix developThis provides ansible, ansible-lint, yamllint, prek, uv, and python3.
Install required collections:
ansible-galaxy collection install -r collections/requirements.yml- Add new roles under
roles/ - Add custom modules under
plugins/modules/ - Update
site.ymlto include new roles
- Android SDK Command Line Tools must already be installed under
{{ android_matter_sdk_root }}for the Android role to proceed.