chore: update readme (#28085)

This commit is contained in:
Nerivec authored and GitHub committed 2025-07-27 13:01:47 +02:00
1 parent 6f7c6eec04
commit 0725374db7
3 files changed
+245 -39

No files matched your search

+41 -39
View File
@@ -5,33 +5,27 @@
<br>
<br>
<div style="display: flex;">
<a href="https://github.com/Koenkk/zigbee2mqtt/actions?query=workflow%3Aci">
<img src="https://github.com/koenkk/zigbee2mqtt/workflows/ci/badge.svg">
</a>
<a href="https://github.com/Koenkk/zigbee2mqtt/releases">
<img src="https://img.shields.io/github/release/koenkk/zigbee2mqtt.svg">
</a>
<a href="https://www.npmjs.com/package/zigbee2mqtt">
<img src="https://img.shields.io/npm/v/zigbee2mqtt">
</a>
<a href="https://github.com/Koenkk/zigbee2mqtt/actions/workflows/ci.yml">
<img src="https://github.com/Koenkk/zigbee2mqtt/actions/workflows/ci.yml/badge.svg">
</a>
<a href="https://github.com/Koenkk/zigbee2mqtt/actions/workflows/github-code-scanning/codeql">
<img src="https://github.com/Koenkk/zigbee2mqtt/actions/workflows/github-code-scanning/codeql/badge.svg">
</a>
<a href="https://discord.gg/dadfWYE">
<img src="https://img.shields.io/discord/556563650429583360.svg">
</a>
<a href="https://github.com/Koenkk/zigbee2mqtt/stargazers">
<img src="https://img.shields.io/github/stars/koenkk/zigbee2mqtt.svg">
</a>
<a href="https://www.paypal.me/koenkk">
<img src="https://img.shields.io/badge/donate-PayPal-blue.svg">
</a>
<a href="https://discord.gg/dadfWYE">
<img src="https://img.shields.io/discord/556563650429583360.svg">
</a>
<a href="http://zigbee2mqtt.discourse.group/">
<img src="https://img.shields.io/discourse/https/zigbee2mqtt.discourse.group/status.svg">
</a>
<a>
<img src="https://img.shields.io/badge/Coverage-100%25-brightgreen.svg">
</a>
<a href="https://www.codacy.com/manual/Koenkk/zigbee2mqtt?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Koenkk/zigbee2mqtt&amp;utm_campaign=Badge_Grade">
<img src="https://api.codacy.com/project/badge/Grade/24f1e0fe39f04daa810e8a1416693d3f">
</a>
<a href="https://www.npmjs.com/package/zigbee2mqtt">
<img src="https://img.shields.io/npm/v/zigbee2mqtt">
</a>
</div>
<h1>Zigbee2MQTT 🌉 🐝</h1>
<p>
@@ -52,59 +46,67 @@ If you aren't familiar with **Zigbee** terminology make sure you [read this](htt
Zigbee2MQTT integrates well with (almost) every home automation solution because it uses MQTT. However the following integrations are worth mentioning:
<img align="left" height="100px" width="100px" src="https://user-images.githubusercontent.com/7738048/40914297-49e6e560-6800-11e8-8904-36cce896e5a8.png">
### [Home Assistant](https://www.home-assistant.io/)
- [Home Assistant OS](https://www.home-assistant.io/installation/): Using [the official addon](https://github.com/zigbee2mqtt/hassio-zigbee2mqtt)
- Other installation: using instructions [here](https://www.zigbee2mqtt.io/guide/usage/integrations/home_assistant.html)
<img align="left" height="75px" width="75px" src="https://user-images.githubusercontent.com/7738048/40914297-49e6e560-6800-11e8-8904-36cce896e5a8.png">
<br>
<br clear="right">
<img align="left" height="100px" width="100px" src="https://etc.athom.com/logo/white/256.png">
[Home Assistant OS](https://www.home-assistant.io/installation/) using [the official addon](https://github.com/zigbee2mqtt/hassio-zigbee2mqtt) ([other installations](https://www.zigbee2mqtt.io/guide/usage/integrations/home_assistant.html))
<br clear="both">
### [Homey](https://homey.app/)
- Integration implemented in the [Homey App](https://homey.app/nl-nl/app/com.gruijter.zigbee2mqtt/)
- Documentation and support in the [Homey Forum](https://community.homey.app/t/83214)
<img align="left" height="75px" width="75px" src="https://etc.athom.com/logo/white/256.png">
<br>
<br clear="right">
<img align="left" height="100px" width="100px" src="https://user-images.githubusercontent.com/2734836/47615848-b8dd8700-dabd-11e8-9d77-175002dd8987.png">
Integration implemented in the [Homey App](https://homey.app/nl-nl/app/com.gruijter.zigbee2mqtt/) ([documentation & support](https://community.homey.app/t/83214))
<br clear="both">
### [Domoticz](https://www.domoticz.com/)
- Integration implemented in Domoticz ([documentation](https://www.domoticz.com/wiki/Zigbee2MQTT)).
<img align="left" height="75px" width="75px" src="https://user-images.githubusercontent.com/2734836/47615848-b8dd8700-dabd-11e8-9d77-175002dd8987.png">
<br>
<br clear="right">
<img align="left" height="100px" width="100px" src="./images/gladys-assistant-logo.jpg">
Integration implemented in Domoticz ([documentation](https://www.domoticz.com/wiki/Zigbee2MQTT)).
<br clear="both">
### [Gladys Assistant](https://gladysassistant.com/)
- Integration implemented natively in Gladys Assistant ([documentation](https://gladysassistant.com/docs/integrations/zigbee2mqtt/)).
<img align="left" height="75px" width="75px" src="./images/gladys-assistant-logo.jpg">
<br>
<br clear="right">
<img align="left" height="100px" width="100px" src="https://forum.iobroker.net/assets/uploads/system/site-logo.png">
Integration implemented natively in Gladys Assistant ([documentation](https://gladysassistant.com/docs/integrations/zigbee2mqtt/)).
<br clear="both">
### [IoBroker](https://www.iobroker.net/)
- Integration implemented in IoBroker ([documentation](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt)).
<img align="left" height="75px" width="75px" src="https://forum.iobroker.net/assets/uploads/system/site-logo.png">
<br>
<br clear="right">
Integration implemented in IoBroker ([documentation](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt)).
<br clear="both">
## Architecture
![Architecture](images/architecture.png)
![Architecture](images/architecture-new.png)
### Internal Architecture
Zigbee2MQTT is made up of three modules, each developed in its own Github project. Starting from the hardware (adapter) and moving up; [zigbee-herdsman](https://github.com/koenkk/zigbee-herdsman) connects to your Zigbee adapter and makes an API available to the higher levels of the stack. For e.g. Texas Instruments hardware, zigbee-herdsman uses the [TI zStack monitoring and test API](https://github.com/koenkk/zigbee-herdsman/raw/master/docs/Z-Stack%20Monitor%20and%20Test%20API.pdf) to communicate with the adapter. Zigbee-herdsman handles the core Zigbee communication. The module [zigbee-herdsman-converters](https://github.com/koenkk/zigbee-herdsman-converters) handles the mapping from individual device models to the Zigbee clusters they support. [Zigbee clusters](https://github.com/Koenkk/zigbee-herdsman/blob/master/docs/07-5123-08-Zigbee-Cluster-Library.pdf) are the layers of the Zigbee protocol on top of the base protocol that define things like how lights, sensors and switches talk to each other over the Zigbee network. Finally, the Zigbee2MQTT module drives zigbee-herdsman and maps the zigbee messages to MQTT messages. Zigbee2MQTT also keeps track of the state of the system. It uses a `database.db` file to store this state; a text file with a JSON database of connected devices and their capabilities. Zigbee2MQTT provides a [web-based interface](https://github.com/nurikk/zigbee2mqtt-frontend) that allows monitoring and configuration.
Zigbee2MQTT is made up of three modules, each developed in its own Github project. Starting from the hardware (adapter) and moving up; [zigbee-herdsman](https://github.com/koenkk/zigbee-herdsman) connects to your adapter to handle Zigbee communication and makes an API available to the higher levels of the stack. For e.g. Texas Instruments hardware, zigbee-herdsman uses the [TI zStack monitoring and test API](https://github.com/Koenkk/zigbee-herdsman/wiki/References#texas-instruments-zstack) to communicate with the adapter. The module [zigbee-herdsman-converters](https://github.com/koenkk/zigbee-herdsman-converters) handles the mapping from individual device models to the Zigbee clusters they support. [Zigbee clusters](https://github.com/Koenkk/zigbee-herdsman/wiki/References#csa-zigbee-alliance-spec) are the layers of the Zigbee protocol on top of the base protocol that define things like how lights, sensors and switches talk to each other over the Zigbee network. Finally, the Zigbee2MQTT module drives zigbee-herdsman and maps the zigbee messages to MQTT messages. Zigbee2MQTT also keeps track of the state of the system. It uses a `database.db` file to store this state; a text file with a JSON database of connected devices and their capabilities. Zigbee2MQTT provides several web-based interfaces ([zigbee2mqtt-frontend](https://github.com/nurikk/zigbee2mqtt-frontend), [zigbee2mqtt-windfront](https://github.com/Nerivec/zigbee2mqtt-windfront)) that allows monitoring and configuration.
### Developing
Zigbee2MQTT uses TypeScript (partially for now). Therefore after making changes to files in the `lib/` directory you need to recompile Zigbee2MQTT. This can be done by executing `pnpm run build`. For faster development instead of running `pnpm run build` you can run `pnpm run build-watch` in another terminal session, this will recompile as you change files.
Zigbee2MQTT uses TypeScript. Therefore after making changes to files in the `lib/` directory you need to recompile Zigbee2MQTT. This can be done by executing `pnpm run build`. For faster development instead of running `pnpm run build` you can run `pnpm run build-watch` in another terminal session, this will recompile as you change files.
Before running any of the commands, you'll first need to run `pnpm install --include=dev`.
Before submitting changes run `pnpm run check:w` then `pnpm run test:coverage`.
+204
View File
@@ -0,0 +1,204 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0" version="28.0.7">
<diagram name="Page-1" id="5aOtyeW3WFGjET9FUBBM">
<mxGraphModel dx="1722" dy="926" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="900" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-1" target="AiRs1-JiV6ekzLb-Xg2S-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-76" value="ZigBee" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-12" vertex="1" connectable="0">
<mxGeometry x="0.3" relative="1" as="geometry">
<mxPoint y="30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-1" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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 truncated
<mxGeometry x="1275" y="650" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-2" target="AiRs1-JiV6ekzLb-Xg2S-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-72" value="ZigBee" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-10" vertex="1" connectable="0">
<mxGeometry x="0.3" relative="1" as="geometry">
<mxPoint y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-2" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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 truncated
<mxGeometry x="1275" y="100" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-3" target="AiRs1-JiV6ekzLb-Xg2S-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-73" value="ZigBee" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-11" vertex="1" connectable="0">
<mxGeometry x="-0.1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-3" target="AiRs1-JiV6ekzLb-Xg2S-1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1550" y="363" />
<mxPoint x="1550" y="725" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-70" value="ZigBee Binding" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-68" vertex="1" connectable="0">
<mxGeometry x="0.1431" relative="1" as="geometry">
<mxPoint y="60" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-3" target="AiRs1-JiV6ekzLb-Xg2S-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-71" value="ZigBee Binding" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-69" vertex="1" connectable="0">
<mxGeometry x="0.0914" relative="1" as="geometry">
<mxPoint y="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-3" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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 truncated
<mxGeometry x="1325" y="250" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-4" target="AiRs1-JiV6ekzLb-Xg2S-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-75" value="ZigBee" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-13" vertex="1" connectable="0">
<mxGeometry x="-0.1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-4" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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 truncated
<mxGeometry x="1325" y="500" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-5" target="AiRs1-JiV6ekzLb-Xg2S-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-74" value="ZigBee" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-14" vertex="1" connectable="0">
<mxGeometry x="0.3" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-5" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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 truncated
<mxGeometry x="1375" y="375" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-6" target="AiRs1-JiV6ekzLb-Xg2S-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-58" value="USB/TCP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-15" vertex="1" connectable="0">
<mxGeometry x="-0.12" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-6" value="&lt;div&gt;ZigBee&lt;/div&gt;&lt;div&gt;Coordinator&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 12px;&quot;&gt;(zStack, EmberZNet...)&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;fontSize=14;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="1075" y="375" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-7" target="AiRs1-JiV6ekzLb-Xg2S-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-66" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-7" target="AiRs1-JiV6ekzLb-Xg2S-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="noYyFCg1ujQSA3bEYM9j-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-7" target="noYyFCg1ujQSA3bEYM9j-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-7" value="zigbee-herdsman" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;fontSize=14;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="825" y="375" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-9" target="AiRs1-JiV6ekzLb-Xg2S-25" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-77" value="MQTT" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-38" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-9" target="AiRs1-JiV6ekzLb-Xg2S-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="noYyFCg1ujQSA3bEYM9j-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-9" target="noYyFCg1ujQSA3bEYM9j-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="noYyFCg1ujQSA3bEYM9j-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-9" target="noYyFCg1ujQSA3bEYM9j-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-9" value="zigbee2mqtt" style="rounded=1;whiteSpace=wrap;html=1;fillColor=light-dark(#E5E243,#FFFF00);fontColor=#ffffff;strokeColor=light-dark(#B2B049,#FFFF66);fontSize=14;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="575" y="375" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-20" value="Automation Software" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;whiteSpace=wrap;html=1;rounded=1;fillColor=light-dark(#6A00FF,#8C439D);fontColor=#ffffff;strokeColor=light-dark(#3700CC,#B762CB);fontSize=14;" parent="1" vertex="1">
<mxGeometry x="75" y="375" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-21" value="Home Assistant" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-20" vertex="1">
<mxGeometry y="30" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-22" value="ioBroker" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-20" vertex="1">
<mxGeometry y="60" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-23" value="Node-RED" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-20" vertex="1">
<mxGeometry y="90" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-32" value="..." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-20" vertex="1">
<mxGeometry y="120" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-25" value="MQTT Broker" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;whiteSpace=wrap;html=1;rounded=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;swimlaneLine=1;fontSize=14;" parent="1" vertex="1">
<mxGeometry x="325" y="375" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-26" value="Mosquitto" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-25" vertex="1">
<mxGeometry y="30" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-27" value="NanoMQ" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-25" vertex="1">
<mxGeometry y="60" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-28" value="EMQX" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-25" vertex="1">
<mxGeometry y="90" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-31" value="..." style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" parent="AiRs1-JiV6ekzLb-Xg2S-25" vertex="1">
<mxGeometry y="120" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;" parent="1" source="AiRs1-JiV6ekzLb-Xg2S-27" target="AiRs1-JiV6ekzLb-Xg2S-20" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-78" value="MQTT" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-39" vertex="1" connectable="0">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-52" value="Setup (bare-metal, containers...)" style="swimlane;whiteSpace=wrap;html=1;collapsible=0;rounded=1;" parent="1" vertex="1">
<mxGeometry x="50" y="60" width="950" height="780" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-53" value="NodeJS" style="swimlane;whiteSpace=wrap;html=1;collapsible=0;rounded=1;" parent="AiRs1-JiV6ekzLb-Xg2S-52" vertex="1">
<mxGeometry x="500" y="280" width="450" height="500" as="geometry" />
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;dashed=1;" parent="1" source="RcNovNbsYRP2Arzqsy6i-1" target="AiRs1-JiV6ekzLb-Xg2S-9" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="650" y="650" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-67" value="WebSocket" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="AiRs1-JiV6ekzLb-Xg2S-61" vertex="1" connectable="0">
<mxGeometry x="-0.4585" relative="1" as="geometry">
<mxPoint y="14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="AiRs1-JiV6ekzLb-Xg2S-8" value="zigbee-herdsman-converters" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d80073;fontColor=#ffffff;strokeColor=#A50040;fontSize=14;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="825" y="650" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="noYyFCg1ujQSA3bEYM9j-2" value="&lt;div&gt;Devices &amp;amp; Groups&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;database.db&lt;/i&gt;&lt;/div&gt;" style="rhombus;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="825" y="130" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="noYyFCg1ujQSA3bEYM9j-8" value="&lt;div&gt;Settings&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;configuration.yaml&lt;/i&gt;&lt;/div&gt;" style="rhombus;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="490" y="130" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="noYyFCg1ujQSA3bEYM9j-1" value="&lt;div&gt;State of Devices&lt;/div&gt;&lt;div&gt;&amp;amp; Groups&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;state.json&lt;/i&gt;&lt;/div&gt;" style="rhombus;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
<mxGeometry x="660" y="130" width="150" height="150" as="geometry" />
</mxCell>
<mxCell id="RcNovNbsYRP2Arzqsy6i-1" value="Frontend" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;whiteSpace=wrap;html=1;rounded=1;container=0;fillColor=#a0522d;fontColor=#ffffff;strokeColor=#6D1F00;expand=1;movable=1;" vertex="1" parent="1">
<mxGeometry x="575" y="650" width="150" height="90" as="geometry" />
</mxCell>
<mxCell id="RcNovNbsYRP2Arzqsy6i-2" value="zigbee2mqtt-frontend" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="575" y="680" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="RcNovNbsYRP2Arzqsy6i-3" value="zigbee2mqtt-windfront" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="575" y="710" width="150" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB