├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ └── issue.yml ├── dependabot.yml └── workflows │ ├── ci.yml │ ├── release.yml │ └── stale.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── common ├── Dockerfile ├── build.yaml ├── local_build.sh └── rootfs │ └── docker-entrypoint.sh ├── repository.json ├── zigbee2mqtt-edge ├── CHANGELOG.md ├── README.md ├── config.json ├── icon.png └── logo.png ├── zigbee2mqtt-proxy ├── Dockerfile ├── README.md ├── config.json ├── entrypoint.sh ├── icon.png ├── logo.png └── nginx.conf.gtpl └── zigbee2mqtt ├── CHANGELOG.md ├── DOCS.md ├── README.md ├── config.json ├── icon.png └── logo.png /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Zigbee2MQTT issues 4 | url: https://github.com/Koenkk/zigbee2mqtt/issues 5 | about: Issues related to the Zigbee2MQTT. 6 | - name: Frontend issues 7 | url: https://github.com/nurikk/z2m-frontend/issues 8 | about: Issues related to the Zigbee2MQTT frontend. 9 | - name: Questions/discussion 10 | url: https://github.com/Koenkk/zigbee2mqtt/discussions/new 11 | about: Ask questions, discuss about devices or show things you made 12 | - name: FAQ 13 | url: https://www.zigbee2mqtt.io/guide/faq 14 | about: Frequently asked questions. 15 | - name: Support Chat 16 | url: https://discord.gg/NyseBeK 17 | about: Chat for feedback, questions and troubleshooting. 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/issue.yml: -------------------------------------------------------------------------------- 1 | name: Issue 2 | description: Only use this if you are sure this issue is related to the addon and not Zigbee2MQTT itself! Otherwise click Zigbee2MQTT issues below. 3 | body: 4 | - type: textarea 5 | id: issue 6 | attributes: 7 | label: Description of the issue 8 | validations: 9 | required: true 10 | - type: input 11 | id: version 12 | attributes: 13 | label: Addon version 14 | description: If you are using edge, please report commit hash. 15 | placeholder: 'v1.22.1' 16 | validations: 17 | required: true 18 | - type: textarea 19 | id: platform 20 | attributes: 21 | label: Platform 22 | description: Details from Settings > About 23 | placeholder: "Core 2025.4.3\nSupervisor 2025.05.1\nOperating System 15.2" 24 | validations: 25 | required: true 26 | - type: textarea 27 | id: log 28 | attributes: 29 | label: Logs of the issue (if applicable) 30 | validations: 31 | required: false 32 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | target-branch: dev 8 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | workflow_dispatch: 7 | inputs: 8 | type: 9 | description: 'Type (edge/proxy)' 10 | default: 'edge' 11 | required: true 12 | 13 | jobs: 14 | variables: 15 | runs-on: ubuntu-latest 16 | outputs: 17 | ARCH_LIST: ${{ env.ARCH_LIST }} 18 | ADDON_LIST: ${{ env.ADDON_LIST }} 19 | BUILD_ARGS: ${{ env.BUILD_ARGS }} 20 | steps: 21 | - uses: actions/checkout@v3 22 | 23 | - name: "ARGS: default" 24 | run: | 25 | echo "ADDON_LIST=['zigbee2mqtt', 'zigbee2mqtt-edge']" >> $GITHUB_ENV 26 | echo "BUILD_ARGS=--no-latest --test" >> $GITHUB_ENV 27 | - name: "ARGS: zigbee2mqtt-proxy" # Build of addon proxy version 28 | if: github.ref == 'refs/heads/master' && (github.event_name == 'workflow_dispatch' && github.event.inputs.type == 'proxy') 29 | run: | 30 | echo "ADDON_LIST=['zigbee2mqtt-proxy']" >> $GITHUB_ENV 31 | echo "BUILD_ARGS=--no-cache" >> $GITHUB_ENV 32 | - name: "ARGS: zigbee2mqtt-edge" # Build of addon edge version 33 | if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.type == 'edge')) 34 | run: | 35 | echo "ADDON_LIST=['zigbee2mqtt-edge']" >> $GITHUB_ENV 36 | echo "BUILD_ARGS=--no-cache" >> $GITHUB_ENV 37 | - name: "ARGS: zigbee2mqtt" # Build of addon release version 38 | if: startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' 39 | run: | 40 | echo "ADDON_LIST=['zigbee2mqtt']" >> $GITHUB_ENV 41 | echo "BUILD_ARGS=--no-cache --docker-hub-check" >> $GITHUB_ENV 42 | 43 | - name: Determine arch 44 | id: determine_arch 45 | run: | 46 | ARCH_LIST=$(jq -r -c '.arch' ./${{ fromJSON(env.ADDON_LIST)[0] }}/config.json) 47 | echo "Found the following arches: $ARCH_LIST" 48 | echo "ARCH_LIST=$ARCH_LIST" >> $GITHUB_ENV 49 | 50 | build: 51 | runs-on: ubuntu-latest 52 | needs: variables 53 | env: 54 | BUILD_ARGS: ${{needs.variables.outputs.BUILD_ARGS}} 55 | strategy: 56 | matrix: 57 | arch: ${{fromJSON(needs.variables.outputs.ARCH_LIST)}} 58 | addon: ${{fromJSON(needs.variables.outputs.ADDON_LIST)}} 59 | steps: 60 | - uses: actions/checkout@v3 61 | 62 | - name: Log in to docker.io 63 | if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') 64 | uses: docker/login-action@v3 65 | with: 66 | username: koenkk 67 | password: ${{ secrets.DOCKER_KEY }} 68 | 69 | - name: Log in to ghcr.io 70 | if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') 71 | uses: docker/login-action@v3 72 | with: 73 | registry: ghcr.io 74 | username: koenkk 75 | password: ${{ secrets.GH_TOKEN }} 76 | 77 | - name: Prepare data folder 78 | run: | 79 | if [ "${{ matrix.addon }}" != "zigbee2mqtt-proxy" ]; then 80 | cp -R common/rootfs ${{ matrix.addon }} 81 | cp common/Dockerfile ${{ matrix.addon }} 82 | fi 83 | cp common/build.yaml ${{ matrix.addon }} 84 | 85 | - name: Build 86 | uses: home-assistant/builder@master 87 | # Note: if running without `--test`, image is pushed to docker.io 88 | with: 89 | args: | 90 | --${{ matrix.arch }} \ 91 | --target ${{ matrix.addon }} \ 92 | ${{ env.BUILD_ARGS }} 93 | 94 | # Keep pushing to docker.io as it is unclear how 95 | # HA handles config.json updates (especially for the unversioned edge) 96 | - name: Push to docker.io 97 | if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') 98 | run: | 99 | CONFIG_IMAGE=$(cat ${{ matrix.addon }}/config.json | jq -r '.image | sub("{arch}"; "${{ matrix.arch }}")') 100 | CONFIG_VERSION=$(cat ${{ matrix.addon }}/config.json | jq -r .version) 101 | 102 | VERSIONS=("latest" "$CONFIG_VERSION") 103 | for VERSION in "${VERSIONS[@]}"; do 104 | GHCR_IMAGE="$CONFIG_IMAGE:$CONFIG_VERSION" 105 | DOCKER_IO_IMAGE=$(echo "$GHCR_IMAGE" | sed 's|ghcr\.io\/||') 106 | echo "Push: $GHCR_IMAGE -> $DOCKER_IO_IMAGE" 107 | docker pull $GHCR_IMAGE 108 | docker tag $GHCR_IMAGE $DOCKER_IO_IMAGE 109 | docker push $DOCKER_IO_IMAGE 110 | done 111 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | on: 2 | repository_dispatch: 3 | types: release 4 | 5 | name: Release 6 | 7 | permissions: {} 8 | jobs: 9 | release: 10 | permissions: 11 | contents: write 12 | pull-requests: write 13 | 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | ref: master 19 | token: ${{ secrets.GH_TOKEN }} 20 | - name: Set variables 21 | id: version 22 | run: | 23 | echo "addon=${{ github.event.client_payload.version }}" >> "$GITHUB_OUTPUT" 24 | echo "z2m=$(echo "${{ github.event.client_payload.version }}" | cut -d - -f 1)" >> "$GITHUB_OUTPUT" 25 | - name: Set version and update release 26 | run: | 27 | jq '.version = "${{ steps.version.outputs.addon }}"' zigbee2mqtt/config.json > zigbee2mqtt/config.json.tmp 28 | mv zigbee2mqtt/config.json.tmp zigbee2mqtt/config.json 29 | echo -e "## ${{ steps.version.outputs.addon }}\n- Updated Zigbee2MQTT to version [\`${{ steps.version.outputs.z2m }}\`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/${{ steps.version.outputs.z2m }})\n" | cat - zigbee2mqtt/CHANGELOG.md > zigbee2mqtt/CHANGELOG.md.tmp 30 | mv zigbee2mqtt/CHANGELOG.md.tmp zigbee2mqtt/CHANGELOG.md 31 | - uses: stefanzweifel/git-auto-commit-action@v5 32 | with: 33 | commit_message: "v${{ steps.version.outputs.addon }}" 34 | - uses: ncipollo/release-action@v1 35 | with: 36 | tag: "v${{ steps.version.outputs.addon }}" 37 | body: "- Updated Zigbee2MQTT to version [`${{ steps.version.outputs.z2m }}`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/${{ steps.version.outputs.z2m }})" 38 | token: ${{secrets.GH_TOKEN}} 39 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: "Close stale issues/pull requests" 2 | on: 3 | schedule: 4 | - cron: "0 0 * * *" 5 | workflow_dispatch: 6 | 7 | permissions: 8 | contents: read 9 | 10 | jobs: 11 | stale: 12 | permissions: 13 | issues: write # for actions/stale to close stale issues 14 | pull-requests: write # for actions/stale to close stale PRs 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: actions/stale@v5 18 | with: 19 | repo-token: ${{ secrets.GITHUB_TOKEN }} 20 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days' 21 | stale-pr-message: 'This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days' 22 | days-before-stale: 30 23 | days-before-close: 7 24 | operations-per-run: 500 25 | exempt-issue-labels: 'breaking change' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | .DS_Store 7 | 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | .hypothesis/ 50 | .pytest_cache/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | .static_storage/ 59 | .media/ 60 | local_settings.py 61 | 62 | # Flask stuff: 63 | instance/ 64 | .webassets-cache 65 | 66 | # Scrapy stuff: 67 | .scrapy 68 | 69 | # Sphinx documentation 70 | docs/_build/ 71 | 72 | # PyBuilder 73 | target/ 74 | 75 | # Jupyter Notebook 76 | .ipynb_checkpoints 77 | 78 | # pyenv 79 | .python-version 80 | 81 | # celery beat schedule file 82 | celerybeat-schedule 83 | 84 | # SageMath parsed files 85 | *.sage.py 86 | 87 | # Environments 88 | .env 89 | .venv 90 | env/ 91 | venv/ 92 | ENV/ 93 | env.bak/ 94 | venv.bak/ 95 | 96 | # Spyder project settings 97 | .spyderproject 98 | .spyproject 99 | 100 | # Rope project settings 101 | .ropeproject 102 | 103 | # mkdocs documentation 104 | /site 105 | 106 | # mypy 107 | .mypy_cache/ 108 | 109 | secrets.json 110 | 111 | zigbee2mqtt/rootfs 112 | zigbee2mqtt/Dockerfile 113 | zigbee2mqtt/build.yaml 114 | zigbee2mqtt-edge/rootfs 115 | zigbee2mqtt-edge/Dockerfile 116 | zigbee2mqtt-edge/build.yaml 117 | zigbee2mqtt-local/* -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Setting up 2 | 1. Git clone this project into your add-ons folder 3 | 2. Remove the `image` key from `zigbee2mqtt-edge/config.json` to enable local builds. 4 | 3. Add back `"image": "zigbee2mqtt/zigbee2mqtt-edge-{arch}"` to `zigbee2mqtt-edge/config.json` after you're done. 5 | 6 | # Upgrading the Zigbee2MQTT version 7 | 1. Change the version number in `zigbee2mqtt/config.json`: `"version": "$NEW_VERSION"` 8 | 2. Update `zigbee2mqtt/CHANGELOG.md` 9 | 3. Commit the changes to `master` branch 10 | 4. Wait till ci finishes 11 | 5. Publish a new "Release". Very important you specify Target: master. Example 12 | ``` 13 | Tag version: v1.25.2-1 @ Target: master 14 | Release title: v1.25.2-1 15 | ``` 16 | 17 | # Developing against the Home Assistant container 18 | 19 | When you want to check the impact of developing work, e.g. adjusting devices in [zigbee-herdsman-converters](https://github.com/Koenkk/zigbee-herdsman-converters), you need access to the add-on container in Home Assistant. Here's how: 20 | 21 | 🚨 Following these directions will make your Home Assistant system more prone to misconfiguration (by yourself) to the extent of rendering it completely useless, so only touch what you're confident to and "know what you do". 22 | 23 | 1. install the [Portainer add-on](https://github.com/hassio-addons/addon-portainer) from the Add-on store 24 | 2. Make sure to disable its `Protection mode`: 25 | ![image](https://user-images.githubusercontent.com/1125168/118788032-aa316800-b893-11eb-8567-f2122159f64c.png) 26 | 3. Start Portainer and `Open Web UI` 27 | 4. in the left menu, 28 | 1. head to `Settings` > section *Hidden Containers* and remove `io.hass.type`: `addon` 29 | 2. go to `Containers`, `addon_[…]_zigbee2mqtt`, `Console`, `Connect` 30 | 5. ℹ️ the location of zigbee-herdsman-converters for example is `/app/node_modules/zigbee-herdsman-converters` 31 | 6. make your adjustments by copying or `vi`'ing 32 | 7. Still in portainer, go back to the add-on's container and `Restart` 33 | 34 | ## Alternative (without portainer) 35 | 36 | 1. Install and setup `Advanced SSH & Web Terminal` with disabled safe mode 37 | 2. run `docker ps` and see which container name is the zigbee2mqtt one. (eg. `addon_45df7312_zigbee2mqtt`) 38 | 3. build your whole application with `npm run build` 39 | 4. upload the resulting build to your HA instance (eg. vscode server via drag n drop) 40 | 5. execute `docker cp` (eg. `docker cp /. :/app/node_modules/zigbee-herdsman-converters`) 41 | 6. execute `docker restart ` 42 | 43 | ⚠️ Note that restarting the add-on via Supervisor or further down the stack will revert the file changes. 44 | 45 | After work is done, don't forget to clean up and reintroduce the safety measures: 46 | 1. re-add the filter `io.hass.type`: `addon` for *Hidden Containers* 47 | 2. re-activate the "Protection mode" of the Portainer 48 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "{}" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright {yyyy} {name of copyright owner} 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 |
7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |

Official Zigbee2MQTT Home Assistant add-on

22 |
23 | 24 | > [!CAUTION] 25 | > If you're using a Raspberry Pi, ensure you have at least a Raspberry Pi 4, as running it on a Raspberry Pi 3 may cause instability due to its limited resources. 26 | 27 | ## Installation 28 | 29 | 1. If you don't have an MQTT broker yet; in Home Assistant go to **[Settings → Add-ons → Add-on store](https://my.home-assistant.io/redirect/supervisor_store/)** and install the **[Mosquitto broker](https://my.home-assistant.io/redirect/supervisor_addon/?addon=core_mosquitto)** add-on, then start it. 30 | 1. Go back to the **Add-on store**, click **⋮ → Repositories**, fill in
`https://github.com/zigbee2mqtt/hassio-zigbee2mqtt` and click **Add → Close** or click the **Add repository** button below, click **Add → Close** (You might need to enter the **internal IP address** of your Home Assistant instance first). 31 | [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fzigbee2mqtt%2Fhassio-zigbee2mqtt) 32 | 1. The repository includes two add-ons: 33 | - **Zigbee2MQTT** is the stable release that tracks the released versions of Zigbee2MQTT. (**recommended for most users**) 34 | - **Zigbee2MQTT Edge** tracks the `dev` branch of Zigbee2MQTT such that you can install the edge version if there are features or fixes in the Zigbee2MQTT dev branch that are not yet released. 35 | 1. Click on the add-on and press **Install** and wait till the add-on is installed. 36 | 1. Start the add-on by going to **Info** and click **Start** 37 | 1. Wait a few seconds and press **OPEN WEB UI**, you will now see the onboarding page. More information about the onboarding can be found [here](https://www.zigbee2mqtt.io/guide/getting-started/#onboarding). 38 | 1. Fill in the desired settings, for most setups changing the following is enough: 39 | - Select your adapter under _Found Devices_, this will configure the _Coordinator/Adapter Port/Path_ and _Coordinator/Adapter Type/Stack/Driver_. 40 | - Fill in the _Closests WiFi Channel_ to select the most optimal Zigbee channel. 41 | 1. Press **Submit**, Zigbee2MQTT will now start, wait a few seconds and refresh the page. You should now see the Zigbee2MQTT frontend. 42 | - If it shows `502: Bad Gateway` wait a bit more and refresh the page. 43 | - If this takes too long (e.g. 2 minutes +) check the **Log** tab to see what went wrong. 44 | - In case the add-on fails to start with the following error: `USB adapter discovery error (No valid USB adapter found). Specify valid 'adapter' and 'port' in your configuration.`, we need to fill in the `serial` section. Format can be found [here](https://www.zigbee2mqtt.io/guide/configuration/adapter-settings.html#adapter-settings), but skip the initial `serial:` indent. e.g.:
45 | ```yaml 46 | adapter: zstack 47 | port: /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018ED3DDF-if00 48 | ``` 49 | If you don't know the port and you have just one USB device connected to your machine try `/dev/ttyUSB0` or `/dev/ttyAMA0`. Else use the [Home Assistant CLI](https://www.home-assistant.io/common-tasks/os#home-assistant-via-the-command-line) and execute `ha hardware info` to find out. 50 | 51 | For more information see [the documentation](https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/blob/master/zigbee2mqtt/DOCS.md). 52 | 53 | ## Restoring data from a standalone installation 54 | 55 | 1. Ensure that both environments are running the same version 56 | 1. Ensure you can [SSH to your Home Assistant OS](https://community.home-assistant.io/t/howto-how-to-access-the-home-assistant-os-host-itself-over-ssh/263352) (NOT to the SSH Add-on) 57 | 1. Backup your standalone environment `data` folder (possibly leaving out the `logs/` folder) 58 | 1. Start the Zigbee2MQTT HA add-on with a non-existing `tty` device, to create the `data` folder 59 | 1. Restore your `data` folder contents into `/mnt/data/supervisor/homeassistant/zigbee2mqtt`, e.g. via `scp -O -P 22222 -i PATHTOUSEDSSHKEY ./data/* root@hass:/mnt/data/supervisor/homeassistant/zigbee2mqtt/` 60 | 1. Configure your serial port and MQTT settings using the HA add-on configuration UI 61 | 1. Edit the `/usr/share/hassio/homeassistant/zigbee2mqtt/configuration.yaml` file: 62 | - Ensure that the serial port section matches the one configured with the UI 63 | - Remove any irrelevant sections from the config (e.g. `mqtt` (if not needed), `advanced/log_syslog`, `frontend`) 64 | 1. Start the add-on 65 | 66 | ## Changelog 67 | 68 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). 69 | 70 | All notable changes to this project will be documented in the [CHANGELOG.md](zigbee2mqtt/CHANGELOG.md) file. 71 | 72 | Version for releases is based on [Zigbee2MQTT](https://github.com/Koenkk/zigbee2mqtt) format: `X.Y.Z`. 73 | 74 | Any changes on the add-on that do not require a new version of Zigbee2MQTT will use the format: `X.Y.Z-A` where `X.Y.Z` is fixed on the Zigbee2MQTT release version and `A` is related to the add-on. 75 | 76 | Edge version will not maintain a CHANGELOG and doesn't have a version. 77 | 78 | ## Issues 79 | 80 | If you find any issues with the add-on, please check the [issue tracker](https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/issues) for similar issues before creating one. If your issue is regarding specific devices or, more generally, an issue that arises after Zigbee2MQTT has successfully started, it should likely be reported in the [Zigbee2MQTT issue tracker](https://github.com/Koenkk/zigbee2mqtt/issues). 81 | 82 | Feel free to create a PR for fixes and enhancements. 83 | 84 | ### Testing changes locally 85 | 86 | If you're submitting a PR and wish to test it locally: 87 | 88 | - Gain root access to your Home Assistant installation 89 | - In the Add-on Settings, Ensure "Watchdog" is turned off so the container isn't automatically restarted when it's stopped via the CLI 90 | 91 | ![image](https://user-images.githubusercontent.com/1923186/198087147-7ab2ba1e-1a68-41b8-9a84-76b25b329786.png) 92 | 93 | - Enter the `zigbee2mqtt` container interactively. 94 | 95 | ``` 96 | docker exec -it $(docker ps | grep zigbee2mqtt | cut -d" " -f 1) /bin/sh 97 | ``` 98 | 99 | - Edit the file you'd like to test & save. 100 | 101 | ``` 102 | vi node_modules/zigbee-herdsman-converters/converters/toZigbee.js 103 | ``` 104 | 105 | - Back on the Home Assistant installation, restart the `zigbee2mqtt` container 106 | 107 | ``` 108 | docker restart $(docker ps | grep zigbee2mqtt | cut -d" " -f 1) 109 | ``` 110 | 111 | - Refresh the web UI and perform your testing. 112 | 113 | ## Credits 114 | 115 | - [danielwelch](https://github.com/danielwelch) 116 | - [ciotlosm](https://github.com/ciotlosm) 117 | - [Koenkk](https://github.com/Koenkk) 118 | -------------------------------------------------------------------------------- /common/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_FROM 2 | FROM $BUILD_FROM as base 3 | 4 | ENV LANG C.UTF-8 5 | ARG BUILD_VERSION 6 | 7 | RUN apk add --no-cache socat tini nodejs eudev 8 | 9 | # Dependencies and build 10 | FROM base as dependencies_and_build 11 | 12 | RUN apk add --no-cache --virtual .buildtools npm make gcc g++ linux-headers udev git python3 && \ 13 | npm install -g pnpm@10.4.1 && \ 14 | if [ "${BUILD_VERSION}" = "edge" ]; \ 15 | then \ 16 | echo "Installing Edge version" && \ 17 | git clone -b dev --single-branch --depth 1 \ 18 | https://github.com/Koenkk/zigbee2mqtt.git /app && \ 19 | mkdir /app/dist && \ 20 | jq -n --arg commit $(eval cd /app;git rev-parse --short HEAD) '$commit' > /app/dist/.hash ; \ 21 | else \ 22 | echo "Installing Stable version ${BUILD_VERSION%-*}" && \ 23 | curl -sL -o "/app.tar.gz" \ 24 | "https://github.com/Koenkk/zigbee2mqtt/archive/${BUILD_VERSION%-*}.tar.gz" && \ 25 | tar xzvf "/app.tar.gz" && rm "/app.tar.gz" && \ 26 | mv -v "zigbee2mqtt-${BUILD_VERSION%-*}" app && \ 27 | mkdir /app/dist && \ 28 | jq -n --arg commit ${BUILD_VERSION%-*} '$commit' > /app/dist/.hash ; \ 29 | fi; \ 30 | echo "Installed Zigbee2MQTT @ version $(cat /app/dist/.hash)" && \ 31 | cd /app && \ 32 | pnpm install --frozen-lockfile --no-optional --unsafe-perm && \ 33 | pnpm run build && \ 34 | rm -rf node_modules && \ 35 | pnpm install --frozen-lockfile --no-optional --unsafe-perm --prod && \ 36 | # serialport has outdated prebuilds that appear to fail on some archs, force build on target platform 37 | rm -rf `find ./node_modules/.pnpm/ -wholename "*/@serialport/bindings-cpp/prebuilds" -type d` && \ 38 | pnpm rebuild @serialport/bindings-cpp 39 | 40 | # Release 41 | FROM base as release 42 | 43 | WORKDIR /app 44 | 45 | COPY rootfs / 46 | COPY --from=dependencies_and_build /app/node_modules ./node_modules 47 | COPY --from=dependencies_and_build /app/dist ./dist 48 | COPY --from=dependencies_and_build /app/package.json /app/LICENSE /app/index.js ./ 49 | 50 | ENV NODE_ENV production 51 | 52 | ENTRYPOINT [ "/sbin/tini", "--", "/docker-entrypoint.sh"] 53 | -------------------------------------------------------------------------------- /common/build.yaml: -------------------------------------------------------------------------------- 1 | build_from: 2 | aarch64: ghcr.io/home-assistant/aarch64-base:3.21 3 | amd64: ghcr.io/home-assistant/amd64-base:3.21 4 | i386: ghcr.io/home-assistant/i386-base:3.21 5 | armhf: ghcr.io/home-assistant/armhf-base:3.21 6 | armv7: ghcr.io/home-assistant/armv7-base:3.21 7 | -------------------------------------------------------------------------------- /common/local_build.sh: -------------------------------------------------------------------------------- 1 | cd .. 2 | cp common/Dockerfile zigbee2mqtt-edge/ 3 | cp -R common/rootfs zigbee2mqtt-edge/ 4 | docker run --rm --privileged \ 5 | -v $(pwd)/zigbee2mqtt-edge:/data homeassistant/amd64-builder --amd64 -t /data \ 6 | --no-cache 7 | rm -rf zigbee2mqtt-edge/rootfs 8 | rm zigbee2mqtt-edge/Dockerfile -------------------------------------------------------------------------------- /common/rootfs/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bashio 2 | 3 | bashio::log.info "Preparing to start..." 4 | 5 | # Check if HA supervisor started 6 | # Workaround for: 7 | # - https://github.com/home-assistant/supervisor/issues/3884 8 | # - https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/issues/387 9 | bashio::config.require 'data_path' 10 | 11 | # Socat 12 | if bashio::config.true 'socat.enabled'; then 13 | bashio::log.info "Socat enabled" 14 | SOCAT_MASTER=$(bashio::config 'socat.master') 15 | SOCAT_SLAVE=$(bashio::config 'socat.slave') 16 | 17 | # Validate input 18 | if [[ -z "$SOCAT_MASTER" ]]; then 19 | bashio::exit.nok "Socat is enabled but not started because no master address specified" 20 | fi 21 | if [[ -z "$SOCAT_SLAVE" ]]; then 22 | bashio::exit.nok "Socat is enabled but not started because no slave address specified" 23 | fi 24 | bashio::log.info "Starting socat" 25 | 26 | DATA_PATH=$(bashio::config 'data_path') 27 | SOCAT_OPTIONS=$(bashio::config 'socat.options') 28 | 29 | # Socat start configuration 30 | bashio::log.blue "Socat startup parameters:" 31 | bashio::log.blue "Options: $SOCAT_OPTIONS" 32 | bashio::log.blue "Master: $SOCAT_MASTER" 33 | bashio::log.blue "Slave: $SOCAT_SLAVE" 34 | 35 | bashio::log.info "Starting socat process ..." 36 | exec socat $SOCAT_OPTIONS $SOCAT_MASTER $SOCAT_SLAVE & 37 | 38 | bashio::log.debug "Modifying process for logging if required" 39 | if bashio::config.true 'socat.log'; then 40 | bashio::log.debug "Socat loggin enabled, setting file path to $DATA_PATH/socat.log" 41 | exec &>"$DATA_PATH/socat.log" 2>&1 42 | else 43 | bashio::log.debug "No logging required" 44 | fi 45 | else 46 | bashio::log.info "Socat not enabled" 47 | fi 48 | 49 | export ZIGBEE2MQTT_DATA="$(bashio::config 'data_path')" 50 | mkdir -p "$ZIGBEE2MQTT_DATA" || bashio::exit.nok "Could not create $ZIGBEE2MQTT_DATA" 51 | 52 | if bashio::config.has_value 'watchdog'; then 53 | export Z2M_WATCHDOG="$(bashio::config 'watchdog')" 54 | bashio::log.info "Enabled Zigbee2MQTT watchdog with value '$Z2M_WATCHDOG'" 55 | fi 56 | 57 | export NODE_PATH=/app/node_modules 58 | export ZIGBEE2MQTT_CONFIG_FRONTEND_ENABLED='true' 59 | export ZIGBEE2MQTT_CONFIG_FRONTEND_PORT='8099' 60 | export ZIGBEE2MQTT_CONFIG_HOMEASSISTANT_ENABLED='true' 61 | export Z2M_ONBOARD_URL='http://0.0.0.0:8099' 62 | 63 | if bashio::config.true 'force_onboarding'; then 64 | export Z2M_ONBOARD_FORCE_RUN="1" 65 | bashio::log.info "Forcing onboard to run" 66 | fi 67 | 68 | if bashio::config.true 'disable_tuya_default_response'; then 69 | bashio::log.info "Disabling TuYa default responses" 70 | export DISABLE_TUYA_DEFAULT_RESPONSE="true" 71 | fi 72 | 73 | # Expose addon configuration through environment variables. 74 | function export_config() { 75 | local key=${1} 76 | local subkey 77 | 78 | if bashio::config.is_empty "${key}"; then 79 | return 80 | fi 81 | 82 | for subkey in $(bashio::jq "$(bashio::config "${key}")" 'keys[]'); do 83 | export "ZIGBEE2MQTT_CONFIG_$(bashio::string.upper "${key}")_$(bashio::string.upper "${subkey}")=$(bashio::config "${key}.${subkey}")" 84 | done 85 | } 86 | 87 | export_config 'mqtt' 88 | export_config 'serial' 89 | 90 | export TZ="$(bashio::supervisor.timezone)" 91 | 92 | if (bashio::config.is_empty 'mqtt' || ! (bashio::config.has_value 'mqtt.server' || bashio::config.has_value 'mqtt.user' || bashio::config.has_value 'mqtt.password')) && bashio::var.has_value "$(bashio::services 'mqtt')"; then 93 | if bashio::var.true "$(bashio::services 'mqtt' 'ssl')"; then 94 | export ZIGBEE2MQTT_CONFIG_MQTT_SERVER="mqtts://$(bashio::services 'mqtt' 'host'):$(bashio::services 'mqtt' 'port')" 95 | else 96 | export ZIGBEE2MQTT_CONFIG_MQTT_SERVER="mqtt://$(bashio::services 'mqtt' 'host'):$(bashio::services 'mqtt' 'port')" 97 | fi 98 | export ZIGBEE2MQTT_CONFIG_MQTT_USER="$(bashio::services 'mqtt' 'username')" 99 | export ZIGBEE2MQTT_CONFIG_MQTT_PASSWORD="$(bashio::services 'mqtt' 'password')" 100 | fi 101 | 102 | bashio::log.info "Starting Zigbee2MQTT..." 103 | cd /app 104 | exec node index.js 105 | -------------------------------------------------------------------------------- /repository.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Home Assistant Add-on: Zigbee2MQTT", 3 | "url": "https://github.com/zigbee2mqtt/hassio-zigbee2mqtt", 4 | "maintainer": "Koen Kanters " 5 | } 6 | -------------------------------------------------------------------------------- /zigbee2mqtt-edge/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Tracks latest Zigbee2MQTT [`dev branch`](https://github.com/Koenkk/zigbee2mqtt/commits/dev) -------------------------------------------------------------------------------- /zigbee2mqtt-edge/README.md: -------------------------------------------------------------------------------- 1 | # Home Assistant Add-on: Zigbee2MQTT Edge 2 | 3 | [![Docker Pulls](https://img.shields.io/docker/pulls/zigbee2mqtt/zigbee2mqtt-edge-amd64.svg?style=flat-square&logo=docker)](https://cloud.docker.com/u/zigbee2mqtt/repository/docker/dwelch2101/zigbee2mqtt-edge-amd64) 4 | 5 | ⚠️ This is the Edge version (follows the Zigbee2MQTT development branch) ⚠️ 6 | 7 | Allows you to use your Zigbee devices **without** the vendors bridge or gateway. 8 | 9 | It bridges events and allows you to control your Zigbee devices via MQTT. In this way you can integrate your Zigbee devices with whatever smart home infrastructure you are using. 10 | 11 | See Documentation tab for more details. 12 | 13 | ### Updating the Edge add-on 14 | To update the `edge` version of the add-on, you will need to uninstall and re-install the add-on. 15 | 16 | ⚠️ Make sure to backup your config as the procedure will not save this for you. 17 | 18 | **Steps** 19 | 1. Backup config from: **Settings → Add-ons → Zigbee2MQTT Edge → Configuration → ⋮ → Edit in YAML**, copy the **Options** somewhere safe 20 | 1. Uninstall: **Settings → Add-ons → Zigbee2MQTT Edge → Uninstall** 21 | 1. Refresh repo: **Settings → Add-ons → Add-ons store → ⋮ → Check for updates** 22 | 1. Install: **Settings → Add-ons → Add-ons store → Zigbee2MQTT Edge → Install** 23 | 1. Restore config to: **Settings → Add-ons → Zigbee2MQTT Edge → Configuration → ⋮ → Edit in YAML**, paste your config from step 1. 24 | -------------------------------------------------------------------------------- /zigbee2mqtt-edge/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Zigbee2MQTT Edge", 3 | "version": "edge", 4 | "slug": "zigbee2mqtt_edge", 5 | "description": "Development build of the Zigbee2MQTT add-on", 6 | "uart": true, 7 | "udev": true, 8 | "url": "https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/tree/master/zigbee2mqtt-edge", 9 | "startup": "application", 10 | "services": [ 11 | "mqtt:need" 12 | ], 13 | "hassio_api": true, 14 | "arch": [ 15 | "aarch64", 16 | "amd64", 17 | "armhf", 18 | "armv7", 19 | "i386" 20 | ], 21 | "boot": "auto", 22 | "init": false, 23 | "ingress": true, 24 | "timeout": 30, 25 | "panel_icon": "mdi:zigbee", 26 | "map": [ 27 | { 28 | "type": "share", 29 | "read_only": false 30 | }, 31 | { 32 | "type": "homeassistant_config", 33 | "read_only": false, 34 | "path": "/config" 35 | }, 36 | { 37 | "type": "addon_config", 38 | "read_only": false, 39 | "path": "/addon_config" 40 | } 41 | ], 42 | "ports": { 43 | "8485/tcp": 8485, 44 | "8099/tcp": null 45 | }, 46 | "ports_description": { 47 | "8485/tcp": "Socat tcp-listen port", 48 | "8099/tcp": "Frontend tcp-listen port" 49 | }, 50 | "options": { 51 | "data_path": "/config/zigbee2mqtt", 52 | "socat": { 53 | "enabled": false, 54 | "master": "pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777", 55 | "slave": "tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5", 56 | "options": "-d -d", 57 | "log": false 58 | }, 59 | "mqtt": {}, 60 | "serial": {} 61 | }, 62 | "schema": { 63 | "disable_tuya_default_response": "bool?", 64 | "data_path": "str", 65 | "socat": { 66 | "enabled": "bool?", 67 | "master": "str?", 68 | "slave": "str?", 69 | "options": "str?", 70 | "log": "bool?" 71 | }, 72 | "mqtt": { 73 | "server": "str?", 74 | "ca": "str?", 75 | "key": "str?", 76 | "cert": "str?", 77 | "user": "str?", 78 | "password": "str?" 79 | }, 80 | "serial": { 81 | "port": "str?", 82 | "adapter": "match(zstack|deconz|zigate|ezsp|ember|zboss)?", 83 | "baudrate": "int?", 84 | "rtscts": "bool?" 85 | }, 86 | "watchdog": "str?", 87 | "force_onboarding": "bool?" 88 | }, 89 | "image": "ghcr.io/zigbee2mqtt/zigbee2mqtt-edge-{arch}" 90 | } 91 | -------------------------------------------------------------------------------- /zigbee2mqtt-edge/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zigbee2mqtt/hassio-zigbee2mqtt/42f624b983a0553e9cd48711048f97481d9c54c2/zigbee2mqtt-edge/icon.png -------------------------------------------------------------------------------- /zigbee2mqtt-edge/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zigbee2mqtt/hassio-zigbee2mqtt/42f624b983a0553e9cd48711048f97481d9c54c2/zigbee2mqtt-edge/logo.png -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_FROM 2 | FROM $BUILD_FROM 3 | RUN apk add --no-cache --update nginx 4 | 5 | # Copy root filesystem 6 | ADD nginx.conf.gtpl / 7 | ADD entrypoint.sh / 8 | 9 | ENTRYPOINT ["/bin/sh", "-c", "/entrypoint.sh"] 10 | # Build arguments 11 | ARG BUILD_ARCH 12 | ARG BUILD_DESCRIPTION 13 | ARG BUILD_NAME 14 | ARG BUILD_VERSION 15 | 16 | # Labels 17 | LABEL \ 18 | io.hass.name="${BUILD_NAME}" \ 19 | io.hass.description="${BUILD_DESCRIPTION}" \ 20 | io.hass.arch="${BUILD_ARCH}" \ 21 | io.hass.type="addon" \ 22 | io.hass.version=${BUILD_VERSION} 23 | 24 | ENTRYPOINT ["/entrypoint.sh"] 25 | -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/README.md: -------------------------------------------------------------------------------- 1 | # Home Assistant Add-on: Zigbee2MQTT Proxy 2 | 3 | [![Docker Pulls](https://img.shields.io/docker/pulls/zigbee2mqtt/zigbee2mqtt-proxy-amd64.svg?style=flat-square&logo=docker)](https://cloud.docker.com/u/zigbee2mqtt/repository/docker/dwelch2101/zigbee2mqtt-proxy-amd64) 4 | 5 | ⚠️ This add-on does not contain Zigbee2MQTT ⚠️ 6 | 7 | This add-on acts as a proxy to an external running Zigbee2MQTT instance. 8 | The sole purpose of this add-on is to add a Zigbee2MQTT icon to the sidebar of Home Assistant which will open the frontend of an external running Zigbee2MQTT instance. 9 | 10 | ## Options 11 | 12 | - `server` (required): this should be the local URL on which the Zigbee2MQTT frontend is running, e.g. `http://192.168.2.43:8080`. Make sure there is no trailing slash! 13 | - `auth_token` (optional): only use when you have an `auth_token` set for the frontend in the Zigbee2MQTT configuration. -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Zigbee2MQTT Proxy", 3 | "version": "0.2.0", 4 | "slug": "zigbee2mqtt_proxy", 5 | "description": "Proxy for externally running Zigbee2MQTT", 6 | "url": "https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/tree/master/zigbee2mqtt-proxy", 7 | "arch": [ 8 | "aarch64", 9 | "amd64", 10 | "armhf", 11 | "armv7", 12 | "i386" 13 | ], 14 | "boot": "auto", 15 | "init": true, 16 | "true": true, 17 | "ingress": true, 18 | "timeout": 30, 19 | "panel_icon": "mdi:zigbee", 20 | "map": [ 21 | "config:ro" 22 | ], 23 | "ports": { 24 | "8099/tcp": null 25 | }, 26 | "ports_description": { 27 | "8099/tcp": "Frontend tcp-listen port" 28 | }, 29 | "options": { 30 | "server": null, 31 | "auth_token": "" 32 | }, 33 | "schema": { 34 | "server": "url", 35 | "auth_token": "str?" 36 | }, 37 | "image": "ghcr.io/zigbee2mqtt/zigbee2mqtt-proxy-{arch}" 38 | } 39 | -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tempio -conf /data/options.json -template /nginx.conf.gtpl -out /tmp/nginx.conf 4 | nginx -T -c /tmp/nginx.conf 5 | 6 | exec nginx -c /tmp/nginx.conf -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zigbee2mqtt/hassio-zigbee2mqtt/42f624b983a0553e9cd48711048f97481d9c54c2/zigbee2mqtt-proxy/icon.png -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zigbee2mqtt/hassio-zigbee2mqtt/42f624b983a0553e9cd48711048f97481d9c54c2/zigbee2mqtt-proxy/logo.png -------------------------------------------------------------------------------- /zigbee2mqtt-proxy/nginx.conf.gtpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Run nginx in foreground. 4 | daemon off; 5 | 6 | # This is run inside Docker. 7 | user nginx; 8 | 9 | # Pid storage location. 10 | pid /var/run/nginx.pid; 11 | 12 | # Set number of worker processes. 13 | worker_processes 1; 14 | 15 | # Enables the use of JIT for regular expressions to speed-up their processing. 16 | pcre_jit on; 17 | 18 | # Write error log to the add-on log. 19 | error_log /proc/1/fd/1 error; 20 | 21 | # Max num of simultaneous connections by a worker process. 22 | events { 23 | worker_connections 512; 24 | } 25 | 26 | http { 27 | access_log off; 28 | client_max_body_size 4G; 29 | default_type application/octet-stream; 30 | keepalive_timeout 65; 31 | sendfile off; 32 | server_tokens off; 33 | tcp_nodelay on; 34 | tcp_nopush on; 35 | 36 | map $http_upgrade $connection_upgrade { 37 | default upgrade; 38 | '' close; 39 | } 40 | resolver 127.0.0.11 ipv6=off; 41 | 42 | server { 43 | listen 8099 default_server; 44 | 45 | root /dev/null; 46 | server_name _; 47 | 48 | location / { 49 | allow 172.30.32.2; 50 | deny all; 51 | 52 | set $target "{{ .server }}"; 53 | set $token "{{ .auth_token }}"; 54 | 55 | set $args $args&token=$token; 56 | proxy_pass $target; 57 | proxy_http_version 1.1; 58 | proxy_ignore_client_abort off; 59 | proxy_read_timeout 86400s; 60 | proxy_redirect off; 61 | proxy_send_timeout 86400s; 62 | proxy_max_temp_file_size 0; 63 | 64 | proxy_set_header Accept-Encoding ""; 65 | proxy_set_header Connection $connection_upgrade; 66 | proxy_set_header Host $http_host; 67 | proxy_set_header Upgrade $http_upgrade; 68 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 69 | proxy_set_header X-Forwarded-Proto $scheme; 70 | proxy_set_header X-NginX-Proxy true; 71 | proxy_set_header X-Real-IP $remote_addr; 72 | 73 | } 74 | } 75 | } 76 | 77 | 78 | -------------------------------------------------------------------------------- /zigbee2mqtt/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 2.4.0-1 2 | - Updated Zigbee2MQTT to version [`2.4.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.4.0) 3 | 4 | ## 2.3.0-1 5 | - Updated Zigbee2MQTT to version [`2.3.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.3.0) 6 | 7 | ## 2.2.1-1 8 | - Updated Zigbee2MQTT to version [`2.2.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.2.1) 9 | 10 | ## 2.2.0-1 11 | - Updated Zigbee2MQTT to version [`2.2.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.2.0) 12 | 13 | ## 2.1.3-1 14 | - Updated Zigbee2MQTT to version [`2.1.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.3) 15 | 16 | ## 2.1.2-1 17 | - Updated Zigbee2MQTT to version [`2.1.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.2) 18 | 19 | ## 2.1.1-1 20 | - Updated Zigbee2MQTT to version [`2.1.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.1) 21 | 22 | ## 2.1.0-1 23 | - Updated Zigbee2MQTT to version [`2.1.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.0) 24 | 25 | ## 2.0.0-2 26 | 27 | - Fix addon crashing on serialport open on certain systems (e.g. Rpi4) [#25464](https://github.com/Koenkk/zigbee2mqtt/issues/25464) 28 | 29 | ## 2.0.0-1 30 | 31 | - Updated Zigbee2MQTT to version [`2.0.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.0.0) 32 | - Be aware of [**breaking changes**](https://github.com/Koenkk/zigbee2mqtt/discussions/24198). 33 | - This version requires at least Home Assisant 2024.9 34 | 35 | ## 1.42.0-2 36 | 37 | - Attempt to fix https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/issues/664 38 | 39 | ## 1.42.0-1 40 | 41 | - Updated Zigbee2MQTT to version [`1.42.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.42.0) 42 | 43 | ## 1.41.0-1 44 | 45 | - Updated Zigbee2MQTT to version [`1.41.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.41.0) 46 | 47 | ## [Unreleased] 48 | 49 | - Mount addon specific configuration into the addon container (`/addon_config`) 50 | 51 | ## 1.40.2-1 52 | 53 | - Updated Zigbee2MQTT to version [`1.40.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.40.2) 54 | 55 | ## 1.40.1-1 56 | 57 | - Updated Zigbee2MQTT to version [`1.40.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.40.1) 58 | 59 | ## 1.40.0-1 60 | 61 | - Updated Zigbee2MQTT to version [`1.40.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.40.0) 62 | 63 | ## 1.39.1-1 64 | 65 | - Updated Zigbee2MQTT to version [`1.39.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.39.1) 66 | 67 | ## 1.39.0-1 68 | 69 | - Updated Zigbee2MQTT to version [`1.39.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.39.0) 70 | 71 | ## 1.38.0-1 72 | 73 | - Updated Zigbee2MQTT to version [`1.38.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.38.0) 74 | 75 | ## 1.37.1-1 76 | 77 | - Updated Zigbee2MQTT to version [`1.37.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.37.1) 78 | 79 | ## 1.37.0-1 80 | 81 | - Updated Zigbee2MQTT to version [`1.37.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.37.0) 82 | 83 | ## 1.36.1-1 84 | 85 | - Updated Zigbee2MQTT to version [`1.36.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.36.1) 86 | 87 | ## 1.36.0-1 88 | 89 | - Updated Zigbee2MQTT to version [`1.36.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.36.0) 90 | 91 | ## 1.35.3-1 92 | 93 | - Updated Zigbee2MQTT to version [`1.35.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.35.3) 94 | 95 | ## 1.35.2-1 96 | 97 | - Updated Zigbee2MQTT to version [`1.35.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.35.2) 98 | 99 | ## 1.35.1-1 100 | 101 | - Updated Zigbee2MQTT to version [`1.35.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.35.1) 102 | 103 | ## 1.35.0-1 104 | 105 | - Updated Zigbee2MQTT to version [`1.35.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.35.0) 106 | 107 | ## 1.34.0-1 108 | 109 | - Updated Zigbee2MQTT to version [`1.34.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.34.0) 110 | 111 | ## 1.33.2-1 112 | 113 | - Updated Zigbee2MQTT to version [`1.33.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.33.2) 114 | 115 | ## 1.33.1-1 116 | 117 | - Updated Zigbee2MQTT to version [`1.33.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.33.1) 118 | 119 | ## 1.33.0-1 120 | 121 | - Updated Zigbee2MQTT to version [`1.33.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.33.0) 122 | 123 | ## 1.32.2-1 124 | 125 | - Updated Zigbee2MQTT to version [`1.32.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.32.2) 126 | 127 | ## 1.32.1-1 128 | 129 | - Updated Zigbee2MQTT to version [`1.32.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.32.1) 130 | 131 | ## 1.32.0-2 132 | 133 | - Fix issue with configuration URL 134 | 135 | ## 1.32.0-1 136 | 137 | - Updated Zigbee2MQTT to version [`1.32.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.32.0) 138 | - Enable url setting in order to add Visit button in HA UI 139 | 140 | ## 1.31.2-1 141 | 142 | - Updated Zigbee2MQTT to version [`1.31.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.31.2) 143 | 144 | ## 1.31.1-1 145 | 146 | - Updated Zigbee2MQTT to version [`1.31.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.31.1) 147 | 148 | ## 1.31.0-1 149 | 150 | - Updated Zigbee2MQTT to version [`1.31.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.31.0) 151 | 152 | ## 1.30.4-1 153 | 154 | - Updated Zigbee2MQTT to version [`1.30.4`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.30.4) 155 | 156 | ## 1.30.3-1 157 | 158 | - Updated Zigbee2MQTT to version [`1.30.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.30.3) 159 | 160 | ## 1.30.2-1 161 | 162 | - Updated Zigbee2MQTT to version [`1.30.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.30.2) 163 | 164 | ## 1.30.1-1 165 | 166 | - Updated Zigbee2MQTT to version [`1.30.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.30.1) 167 | 168 | ## 1.30.0-1 169 | 170 | - Updated Zigbee2MQTT to version [`1.30.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.30.0) 171 | 172 | ## 1.29.2-1 173 | 174 | - Updated Zigbee2MQTT to version [`1.29.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.29.2) 175 | 176 | ## 1.29.1-1 177 | 178 | - Updated Zigbee2MQTT to version [`1.29.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.29.1) 179 | 180 | ## 1.29.0-1 181 | 182 | - Updated Zigbee2MQTT to version [`1.29.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.29.0) 183 | 184 | ## 1.28.4-1 185 | 186 | - Updated Zigbee2MQTT to version [`1.28.4`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.28.4) 187 | 188 | ## 1.28.3-1 189 | 190 | - Updated Zigbee2MQTT to version [`1.28.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.28.3) 191 | 192 | ## 1.28.2-1 193 | 194 | - Updated Zigbee2MQTT to version [`1.28.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.28.2) 195 | 196 | ## 1.28.1-1 197 | 198 | - Updated Zigbee2MQTT to version [`1.28.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.28.1) 199 | 200 | ## 1.28.0-1 201 | 202 | - Updated Zigbee2MQTT to version [`1.28.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.28.0) 203 | - Fix `Can't open config file at null/configuration.yaml` error 204 | 205 | ## 1.27.2-1 206 | 207 | - Updated Zigbee2MQTT to version [`1.27.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.27.2) 208 | 209 | ## 1.27.1-1 210 | 211 | - Updated Zigbee2MQTT to version [`1.27.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.27.1) 212 | - Fix Zigbee2MQTT process being killed instead of stopped when addon is stopped. This prevented the backup on shutdown from happening. 213 | 214 | ## 1.27.0-1 215 | 216 | - Updated Zigbee2MQTT to version [`1.27.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.27.0) 217 | 218 | ## 1.26.0-1 219 | 220 | - Updated Zigbee2MQTT to version [`1.26.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.26.0) 221 | 222 | ## 1.25.2-1 223 | 224 | - Updated Zigbee2MQTT to version [`1.25.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.25.2) 225 | 226 | ## 1.25.1-2 227 | 228 | - Fixes for [s6 v3 update](https://developers.home-assistant.io/blog/2022/05/12/s6-overlay-base-images) 229 | - Pin base image version to 3.14 as 3.15 doesn't work yet 230 | 231 | ## 1.25.1-1 232 | 233 | - Updated Zigbee2MQTT to version [`1.25.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.25.1) 234 | 235 | ## 1.25.0-1 236 | 237 | - Updated Zigbee2MQTT to version [`1.25.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.25.0) 238 | - ⚠️ **Breaking changes** 239 | 240 | - Most Zigbee2MQTT configuration is now done in Zigbee2MQTT directly 241 | (either via the UI or by modifying the configuration file, usually 242 | `/config/zigbee2mqtt/configuration.yaml`, directly). 243 | 244 | As Zigbee2MQTT won't start with an [MQTT server](https://www.zigbee2mqtt.io/guide/configuration/mqtt.html) 245 | or [serial adapter](https://www.zigbee2mqtt.io/guide/configuration/adapter-settings.html) 246 | you must configure these through the add-on configuration page before you 247 | can start Zigbee2MQTT for the first time. 248 | 249 | Existing installations should be able to safely remove the Zigbee2MQTT 250 | configuration from the add-on configuration as these values should have 251 | already been persisted to the configuration file. 252 | 253 | ## 1.24.0-1 254 | 255 | - Updated Zigbee2MQTT to version [`1.24.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.24.0) 256 | 257 | ## 1.23.0-1 258 | 259 | - Updated Zigbee2MQTT to version [`1.23.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.23.0) 260 | 261 | ## 1.22.2-1 262 | 263 | - Updated Zigbee2MQTT to version [`1.22.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.22.2) 264 | 265 | ## 1.22.1-1 266 | 267 | - Updated Zigbee2MQTT to version [`1.22.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.22.1) 268 | 269 | ## 1.22.0-3 270 | 271 | - Add availability configuration 272 | 273 | ## 1.22.0-2 274 | 275 | - Fix availability configuration 276 | 277 | ## 1.22.0-1 278 | 279 | - Updated Zigbee2MQTT to version [`1.22.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.22.0) 280 | 281 | ## 1.21.2-1 282 | 283 | - Updated Zigbee2MQTT to version [`1.21.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.21.2) 284 | 285 | ## 1.21.1-1 286 | 287 | - Updated Zigbee2MQTT to version [`1.21.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.21.1) 288 | 289 | ## 1.21.0-4 290 | 291 | - Added `advanced.log_output` config option 292 | 293 | ## 1.21.0-3 294 | 295 | - Added support for `humidity_precision` option under `device_options` 296 | 297 | ## 1.21.0-2 298 | 299 | - Added homeassistant_legacy_entity_attributes option 300 | 301 | ## 1.21.0-1 302 | 303 | - Updated Zigbee2MQTT to version [`1.21.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.21.0) 304 | 305 | ## 1.20.0-1 306 | 307 | - Updated Zigbee2MQTT to version [`1.20.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.20.0) 308 | 309 | ## 1.19.1-1 310 | 311 | - Updated Zigbee2MQTT to version [`1.19.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.19.1) 312 | 313 | ## 1.19.0-1 314 | 315 | - Updated Zigbee2MQTT to version [`1.19.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.19.0) 316 | 317 | ## 1.18.3-1 318 | 319 | - Updated Zigbee2MQTT to version [`1.18.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.18.3) 320 | 321 | ## 1.18.2-1 322 | 323 | - Updated Zigbee2MQTT to version [`1.18.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.18.2) 324 | 325 | ## 1.18.1-2 326 | 327 | - Added missing ezsp agapter type for serial 328 | 329 | ## 1.18.1-1 330 | 331 | - Updated Zigbee2MQTT to version [`1.18.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.18.1) 332 | - Fix OTA configuration required when starting 333 | 334 | ## 1.18.0-1 335 | 336 | - Updated Zigbee2MQTT to version [`1.18.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.18.0) 337 | 338 | ## 1.17.1-4 339 | 340 | - Switched socat from `/share/zigbee2mqtt/ttyZ2M` to `/tmp/ttyZ2M` 341 | 342 | ## 1.17.1-3 343 | 344 | - Added back `transmit_power` to `experimental` 345 | 346 | ## 1.17.1-2 347 | 348 | - Fixes #24 for socat 349 | 350 | ## 1.17.1-1 351 | 352 | - Removed `new_api` option as it's now default 353 | - Removed `transmit_power` from `experimental` 354 | - Added support for `legacy_api` option under `advanced` 355 | - Added support for `ikea_ota_use_test_url` option under `advanced` 356 | 357 | ## 1.17.1 358 | 359 | - Updated Zigbee2MQTT to version [`1.17.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.17.1) 360 | - Updated `"auto_uart": true` to use `"uart": true` instead 361 | - Reduced image size - thanks https://github.com/G1K 362 | - Deprecated `devices.js` method for adding support for a new device 363 | 364 | ## 1.17.0 365 | 366 | - Updated Zigbee2MQTT to version [`1.17.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.17.0) 367 | - New configuration options 368 | - `advanced` 369 | - `adapter_delay` 370 | - `serial` 371 | - `adapter: zigate` 372 | 373 | ## 1.16.2 374 | 375 | - Updated Zigbee2MQTT to version [`1.16.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.16.2) 376 | - New configuration options 377 | - `mqtt` 378 | - `force_disable_retain` 379 | - `frontend` 380 | - `host` 381 | - `devices` and `groups` options now accept a comma-separated string of files 382 | 383 | ## 1.16.1-1 384 | 385 | - Allow add-on to start with other mqtt servers not just built in 386 | 387 | ## 1.16.1 388 | 389 | - Updated Zigbee2MQTT to version [`1.16.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.16.1) 390 | 391 | ## 1.16.0 392 | 393 | - Updated Zigbee2MQTT to version [`1.16.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.16.0) 394 | 395 | ## 1.15.0-3 396 | 397 | - Fixed `external_converters` not working 398 | 399 | ## 1.15.0-2 400 | 401 | - ⚠️ **Breaking changes** 402 | - `zigbee_shepherd_debug` removed 403 | - Add-on images are now taken from Docker Hub `zigbee2mqtt` [organisation](https://hub.docker.com/orgs/zigbee2mqtt/repositories) 404 | - Changed `mqtt.server`, `mqtt.user`, `mqtt.password` to be optional 405 | - Added support for mqtt auto discovery (server, user, password) 406 | - Removed `pm2` 407 | - Removed `socat.restartdelay` and `socat.initialdelay` 408 | - Unified Dockerfile into a single common file 409 | - ⚠️ Changed `run.sh` and `socat.sh` to use [s6-overlay](https://github.com/just-containers/s6-overlay) 410 | - Version management now only in `config.json` 411 | - Default `data_path` changed from `/share/` to `/config` 412 | - Changed default logging level to `warn` 413 | - Changed version format to `X.X.X-A` 414 | 415 | ## 1.15.0 416 | 417 | - Updated Zigbee2MQTT to version [`1.15.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.15.0) 418 | - Added support for a [built-in frontend](https://github.com/Koenkk/zigbee2mqtt/issues/4266) using `ingress`. See Documentation tab for more details. 419 | 420 | ## 1.14.4.2 421 | 422 | - Added readme for Edge version 423 | - Added logo on both Edge and Stable version 424 | - Startup for addon moved from `before` to `application` 425 | - Fixed empty changelog in Edge version 426 | - Fixed add-on crash for starting too early for some users 427 | - Fixed `.hash.json` to get properly generated (`commit #unknown` resolved) 428 | 429 | ## 1.14.4.1 430 | 431 | - ⚠️ **Breaking changes** 432 | - `availability_blacklist` renamed to `availability_blocklist` in `advanced` 433 | - `availability_passlist` now required option in `advanced` 434 | - `ban` renamed to `blocklist` 435 | - `whitelist` renamed to `passlist` 436 | 437 | Change 438 | 439 | ``` 440 | availability_blacklist: [] 441 | ``` 442 | 443 | to 444 | 445 | ``` 446 | availability_blocklist: [] 447 | availability_passlist: [] 448 | ``` 449 | 450 | Remove 451 | 452 | ``` 453 | ban: [] 454 | whitelist: [] 455 | ``` 456 | 457 | - Added explicit support for `armv7` 458 | - Added new config options from Zigbee2MQTT: 459 | 460 | - `external_converters` 461 | - `mqtt` 462 | - `keepalive` 463 | - `version` 464 | - `advanced` 465 | - `adapter_concurrent` 466 | - `cache_state_persistent` 467 | - `cache_state_send_on_startup` 468 | - `device_options` 469 | - `occupancy_timeout` 470 | - `temperature_precision` 471 | - `legacy` 472 | - `device_options_string` 473 | - `homeassistant_legacy_triggers` 474 | - `log_level` 475 | - `log_rotation` 476 | - `timestamp_format` 477 | - `experimental` 478 | - `output` 479 | 480 | - Fixed change log bug for Stable version 481 | - Updated names to reflect Hass.io [rename](https://www.home-assistant.io/blog/2020/01/29/changing-the-home-assistant-brand/) to Home Assistant 482 | 483 | ## 1.14.4 484 | 485 | - Updated Zigbee2MQTT to version [`1.14.4`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.14.4) 486 | 487 | ## 1.14.3 488 | 489 | - Added new config option from Zigbee2MQTT: `adapter` in `serial` 490 | - Updated Zigbee2MQTT to version [`1.14.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.14.3) 491 | 492 | ## 1.14.2 493 | 494 | - Updated Zigbee2MQTT to version [`1.14.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.14.2) 495 | 496 | ## 1.14.1 497 | 498 | - Updated Zigbee2MQTT to version [`1.14.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.14.1) 499 | 500 | ## 1.14.0 501 | 502 | - Updated Zigbee2MQTT to version [`1.14.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.14.0) 503 | 504 | ## 1.13.1 505 | 506 | - Added config option `transmit_power` in `experimental` 507 | - Updated Zigbee2MQTT to version [`1.13.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.13.1) 508 | 509 | ## 1.13.0 510 | 511 | - Updated Zigbee2MQTT to version [`1.13.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.13.0) 512 | 513 | ## 1.12.2 514 | 515 | - Updated Zigbee2MQTT to version [`1.12.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.12.2) 516 | 517 | ## 1.12.1 518 | 519 | - Updated Zigbee2MQTT to version [`1.12.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.12.1) 520 | 521 | ## 1.12.0 522 | 523 | - Updated Zigbee2MQTT to version [`1.12.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.12.0) 524 | 525 | ## 1.11.0 526 | 527 | - Updated Zigbee2MQTT to version [`1.11.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.11.0) 528 | 529 | ## 1.10.1 530 | 531 | - Added config options `network_key_string` and `ext_pan_id_string`. 532 | 533 | ## 1.10.0 534 | 535 | - Updated Zigbee2MQTT to version [`1.10.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.10.0) 536 | 537 | ## 1.9.0 538 | 539 | - Added config option `zigbee_herdsman_debug` (`zigbee_shepherd_debug` still supported for now) 540 | - Updated Zigbee2MQTT to version [`1.9.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.9.0) 541 | 542 | ## 1.8.0 543 | 544 | - Updated Zigbee2MQTT to version [`1.8.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.8.0) 545 | 546 | ## 1.7.1 547 | 548 | - Updated Zigbee2MQTT to version [`1.7.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.7.1) 549 | 550 | ## 1.7.0 551 | 552 | - ⚠️ **Breaking changes**: You cannot roll back to 1.6 without repairing all your devices 553 | - ⚠️ Added socat support: leave `enabled` set to `false` to disable. 554 | - Updated Zigbee2MQTT to version [`1.7.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.7.0) 555 | 556 | ## 1.6.0 557 | 558 | - Update Zigbee2MQTT to [`1.6.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.6.0) 559 | 560 | ## 1.5.1.2 561 | 562 | - Create `$DATA_PATH` if it does not already exist 563 | - Fixed [#197](https://github.com/danielwelch/hassio-zigbee2mqtt/issues/197) 564 | 565 | ## 1.5.1.1 566 | 567 | - Added several configuration items: 568 | - `advanced.availability_blacklist` 569 | - `ban` 570 | - `whitelist` 571 | - `queue` (along with `queue.delay` and `queue.simultaneously`) 572 | - `mqtt.key`, `mqtt.ca`, `mqtt.cert` 573 | - `advanced.report`, `advanced.homeassistant_discovery_topic`, `advanced.homeassistant_status_topic` 574 | - Add back `zigbee_shepherd_debug`,`zigbee_shepherd_devices`, and `disable_led` 575 | - Include default network key in default configuration 576 | 577 | ## 1.5.1 578 | 579 | - ⚠️ **Breaking changes**: restructured configuration to more closely mirror Zigbee2MQTT 580 | - Updated Zigbee2MQTT to version [`1.5.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.5.1) 581 | 582 | ## 1.3.0 583 | 584 | - Updated Zigbee2MQTT to version [`1.3.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.3.0) 585 | - Added new config option from zigbee2mqtt: 586 | - `homeassistant_discovery_topic` 587 | - `debounce` (device-specific config) 588 | - Fixed logic bug that prevented configuration from being updated in the add-on ui. 589 | 590 | ## 1.2.1 591 | 592 | - Updated Zigbee2MQTT to version [`1.2.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.2.1) 593 | - Use Node.js 10 as base docker image 594 | - Added new config option from Zigbee2MQTT: `report` 595 | 596 | ## 1.1.1 597 | 598 | - Updated Zigbee2MQTT to version [`1.1.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.1.1) 599 | 600 | ## 1.1.0.1 601 | 602 | - Added `network_key` to options, defaulting to empty list. If left empty, the option will not be passed to zigbee2mqtt. 603 | - Update README to reflect requirements for `devices` and `network_key` options 604 | 605 | ## 1.1.0 606 | 607 | - Updated Zigbee2MQTT to version [`1.0.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.1.0) 608 | - Added new config options from Zigbee2MQTT: 609 | - `soft_reset_timeout` 610 | - `last_seen` 611 | - `elapsed` 612 | - `network_key` 613 | - `devices` (device-specific configuration) 614 | - Added `overwrite` option, which can be set to `false` to prevent the add-on from overwriting corresponding fields on startup that are already set in the `configuration.yaml` file. 615 | 616 | ## 1.0.1 617 | 618 | - Updated Zigbee2MQTT to version [`1.0.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.0.1) 619 | 620 | ## 1.0.0 621 | 622 | - Updated Zigbee2MQTT to version [`1.0.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/1.0.0) 623 | - Added new or changed options for Zigbee2MQTT: 624 | - `reject_unauthorized` 625 | - `pan_id` 626 | - `channel` 627 | 628 | ## 0.1.6 629 | 630 | - Updated Zigbee2MQTT to version [`0.1.6`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/0.1.6) 631 | 632 | ## 0.1.5.1 633 | 634 | - Fixed [#53](https://github.com/danielwelch/hassio-zigbee2mqtt/issues/53) and [#54](https://github.com/danielwelch/hassio-zigbee2mqtt/issues/54), regarding `log_directory` setting 635 | - Fixed README typo regarding `disable_led`. This option is now called `disable_led` in accordance with zigbe22mqtt. Although this was changed in 0.1.3.1, README was not updated to reflect that. 636 | 637 | ## 0.1.5 638 | 639 | - Updated Zigbee2MQTT to version [`0.1.5`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/0.1.5) 640 | 641 | ## 0.1.3.1 642 | 643 | - Added new or changed options for Zigbee2MQTT: 644 | - `mqtt_client_id` 645 | - `disable_led` (_renamed from `serial_disable_led`_) 646 | - `cache_state` 647 | - `log_directory` 648 | - `log_level` 649 | - `rtscts` 650 | - `zigbee_shepherd_debug` 651 | 652 | ## 0.1.3 653 | 654 | - Updated Zigbee2MQTT to version [`0.1.3`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/0.1.3) 655 | 656 | ## 0.1.2 657 | 658 | - Updated Zigbee2MQTT to version [`0.1.2`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/0.1.2) 659 | 660 | ## 0.1.1 661 | 662 | - Switch the Edge and Stable `Dockerfiles` so they're actually correct 663 | - Download release archives instead of git cloning the specific branch 664 | - Updated Zigbee2MQTT to version [`0.1.1`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/0.1.1) 665 | 666 | ## 0.1.0 667 | 668 | - First versioned release of the add-on 669 | - Updated Zigbee2MQTT to version [`0.1.0`](https://github.com/Koenkk/zigbee2mqtt/releases/tag/0.1.0) 670 | -------------------------------------------------------------------------------- /zigbee2mqtt/DOCS.md: -------------------------------------------------------------------------------- 1 | # Pairing 2 | 3 | By default the add-on has `permit_join` set to `false`. To allow devices to join you need to activate this after the add-on has started. You can now use the [built-in frontend](https://www.zigbee2mqtt.io/information/frontend.html) to achieve this. For details on how to enable the built-in frontent see the next section. 4 | 5 | # Enabling the built-in frontend 6 | 7 | Enable `ingress` to have the frontend available in your UI: **Settings → Add-ons → Zigbee2MQTT → Show in sidebar**. You can find more details about the feature on the [Zigbee2MQTT documentation](https://www.zigbee2mqtt.io/information/frontend.html). 8 | 9 | # Configuration 10 | 11 | ## Onboarding 12 | 13 | [Onboarding](https://www.zigbee2mqtt.io/guide/getting-started/#onboarding) allows you to setup Zigbee2MQTT without having to manually enter the details in the add-on configuration page. When starting the add-on with a brand new install (no configuration present), the frontend will show a quick setup page, allowing you to select various settings for Zigbee2MQTT to be able to start. 14 | 15 | > [!NOTE] 16 | > Successful detection of adapters, to select from, may vary based on your setup/network. You may have to enter these [details manually](https://www.zigbee2mqtt.io/guide/configuration/adapter-settings.html#basic-configuration) on the page instead. 17 | 18 | > [!TIP] 19 | > You can force the onboarding to re-run (e.g. changing adapter) using the toggle available in the add-on configuration page (visible after checking `Show unused optional configuration options`). This will force onboarding to run even after you have successfully configured it for the first time. Make sure to disable it once done. 20 | 21 | ## Manual 22 | 23 | Configuration required to startup Zigbee2MQTT is available from the add-on configuration. The rest of the options can be configured via the Zigbee2MQTT frontend. 24 | 25 | > [!CAUTION] 26 | > Settings configured through the add-on configuration page will take precedence over settings in the `configuration.yaml` page (e.g. you set `rtscts: false` in add-on configuration page and `rtscts: true` in `configuration.yaml`, `rtscts: false` will be used). _If you want to control the entire configuration through YAML, remove them from the add-on configuration page._ 27 | 28 | #### Examples for each configuration section 29 | 30 | - socat 31 | ```yaml 32 | enabled: false 33 | master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777 34 | slave: tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5 35 | options: "-d -d" 36 | log: false 37 | ``` 38 | - mqtt 39 | ```yaml 40 | server: mqtt://localhost:1883 41 | user: my_user 42 | password: "my_password" 43 | ``` 44 | - serial 45 | ```yaml 46 | adapter: zstack 47 | port: /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018ED3DDF-if00 48 | ``` 49 | 50 | # Configuration backup 51 | 52 | The add-on will create a backup of your configuration.yml within your data path: `$DATA_PATH/configuration.yaml.bk`. When upgrading, you should use this to fill in the relevant values into your new config, particularly the network key, to avoid breaking your network and having to re-pair all of your devices. 53 | The backup of your configuration is created on add-on startup if no previous backup was found. 54 | 55 | # Enabling the watchdog 56 | 57 | To automatically restart Zigbee2MQTT in case of a soft failure (like "adapter disconnected"), the watchdog can be used. It can be enabled by adding the following to the add-on configuration: 58 | 59 | ```yaml 60 | watchdog: default 61 | ``` 62 | 63 | This will use the default watchdog retry delays of 1min, 5min, 15min, 30min, 60min. Custom delays are also supported, e.g. `watchdog: 5,10,30` will start Zigbee2MQTT with the watchdog's retry delays of 5min, 10min, 30min. For more information about the watchdog, read the [docs](https://www.zigbee2mqtt.io/guide/installation/15_watchdog.html). 64 | 65 | # Adding Support for New Devices 66 | 67 | If you are interested in adding support for new devices to Zigbee2MQTT see [How to support new devices](https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html). 68 | 69 | # Notes 70 | 71 | - Depending on your configuration, the MQTT server config may need to include the port, typically `1883` or `8883` for SSL communications. For example, `mqtt://core-mosquitto:1883` for Home Assistant's Mosquitto add-on. 72 | - To find out which serial ports you have exposed go to **Supervisor → System → Host system → ⋮ → Hardware** 73 | 74 | # Socat 75 | 76 | In some cases it is not possible to forward a serial device to the container that zigbee2mqtt runs in. This could be because the device is not physically connected to the machine at all. 77 | 78 | Socat can be used to forward a serial device over TCP to zigbee2mqtt. See the [socat man pages](https://linux.die.net/man/1/socat) for more info. 79 | 80 | You can configure the socat module within the socat section using the following options: 81 | 82 | - `enabled` true/false to enable socat (default: false) 83 | - `master` master or first address used in socat command line (mandatory) 84 | - `slave` slave or second address used in socat command line (mandatory) 85 | - `options` extra options added to the socat command line (optional) 86 | - `log` true/false if to log the socat stdout/stderr to data_path/socat.log (default: false) 87 | 88 | **NOTE:** You'll have to change both the `master` and the `slave` options according to your needs. The defaults values will make sure that socat listens on port `8485` and redirects its output to `/dev/ttyZ2M`. The zigbee2mqtt's serial port setting is NOT automatically set and has to be changed accordingly. 89 | -------------------------------------------------------------------------------- /zigbee2mqtt/README.md: -------------------------------------------------------------------------------- 1 | # Home Assistant Add-on: Zigbee2MQTT 2 | 3 | [![Docker Pulls](https://img.shields.io/docker/pulls/zigbee2mqtt/zigbee2mqtt-amd64.svg?style=flat-square&logo=docker)](https://cloud.docker.com/u/dwelch2101/repository/docker/zigbee2mqtt/zigbee2mqtt-amd64) 4 | 5 | Allows you to use your Zigbee devices **without** the vendors bridge or gateway. 6 | 7 | It bridges events and allows you to control your Zigbee devices via MQTT. In this way you can integrate your Zigbee devices with whatever smart home infrastructure you are using. 8 | 9 | See Documentation tab for more details. 10 | -------------------------------------------------------------------------------- /zigbee2mqtt/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Zigbee2MQTT", 3 | "version": "2.4.0-1", 4 | "slug": "zigbee2mqtt", 5 | "description": "Use your ZigBee devices without the vendor's bridge or gateway", 6 | "breaking_versions": [ 7 | "2.0.0-1" 8 | ], 9 | "uart": true, 10 | "udev": true, 11 | "url": "https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/tree/master/zigbee2mqtt", 12 | "startup": "application", 13 | "services": [ 14 | "mqtt:need" 15 | ], 16 | "hassio_api": true, 17 | "arch": [ 18 | "aarch64", 19 | "amd64", 20 | "armhf", 21 | "armv7", 22 | "i386" 23 | ], 24 | "boot": "auto", 25 | "init": false, 26 | "ingress": true, 27 | "timeout": 30, 28 | "panel_icon": "mdi:zigbee", 29 | "map": [ 30 | { 31 | "type": "share", 32 | "read_only": false 33 | }, 34 | { 35 | "type": "homeassistant_config", 36 | "read_only": false, 37 | "path": "/config" 38 | }, 39 | { 40 | "type": "addon_config", 41 | "read_only": false, 42 | "path": "/addon_config" 43 | } 44 | ], 45 | "ports": { 46 | "8485/tcp": 8485, 47 | "8099/tcp": null 48 | }, 49 | "ports_description": { 50 | "8485/tcp": "Socat tcp-listen port", 51 | "8099/tcp": "Frontend tcp-listen port" 52 | }, 53 | "options": { 54 | "data_path": "/config/zigbee2mqtt", 55 | "socat": { 56 | "enabled": false, 57 | "master": "pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777", 58 | "slave": "tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5", 59 | "options": "-d -d", 60 | "log": false 61 | }, 62 | "mqtt": {}, 63 | "serial": {} 64 | }, 65 | "schema": { 66 | "data_path": "str", 67 | "socat": { 68 | "enabled": "bool?", 69 | "master": "str?", 70 | "slave": "str?", 71 | "options": "str?", 72 | "log": "bool?" 73 | }, 74 | "mqtt": { 75 | "server": "str?", 76 | "ca": "str?", 77 | "key": "str?", 78 | "cert": "str?", 79 | "user": "str?", 80 | "password": "str?", 81 | "base_topic": "str?" 82 | }, 83 | "serial": { 84 | "port": "str?", 85 | "adapter": "match(zstack|deconz|zigate|ezsp|ember|zboss)?", 86 | "baudrate": "int?", 87 | "rtscts": "bool?" 88 | }, 89 | "watchdog": "str?", 90 | "force_onboarding": "bool?" 91 | }, 92 | "image": "ghcr.io/zigbee2mqtt/zigbee2mqtt-{arch}" 93 | } 94 | -------------------------------------------------------------------------------- /zigbee2mqtt/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zigbee2mqtt/hassio-zigbee2mqtt/42f624b983a0553e9cd48711048f97481d9c54c2/zigbee2mqtt/icon.png -------------------------------------------------------------------------------- /zigbee2mqtt/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zigbee2mqtt/hassio-zigbee2mqtt/42f624b983a0553e9cd48711048f97481d9c54c2/zigbee2mqtt/logo.png --------------------------------------------------------------------------------