# “HA over iHost” Open Source Project is Officially Live!

**URL:** <https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511>\
**Category:** HA over iHost\
**Tags:** zigbee, ihost\
**Created:** [April 18, 2025, 7:48am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511 "2025-04-18T07:48:01Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![yi.liu](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/yi.liu/32/8659_2.png) [@yi.liu](https://forum.ewelink.cc/u/yi.liu)\
**Post date:** [May 21, 2025, 9:08am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/72 "2025-05-21T09:08:09Z")

</div>

Thank you for your feedback!

We understand the issue and will be updating the **Supervisor to the latest official version shortly**.  
Once the update is ready, we’ll let you know in this thread.

Thanks again for your patience and support!

---

<div class="post-metadata">

**Author:** ![jam3](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/jam3/32/7918_2.png) [@jam3](https://forum.ewelink.cc/u/jam3)\
**Post date:** [May 21, 2025, 9:12am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/73 "2025-05-21T09:12:52Z")

</div>

> [@MichaelLearnsToCode](#):
>
> to develope products using or works with HA and its technologies

Really? Any examples of such products? How about your own projects? Cube? Rubik? How about bridging HA with eWeLink? Today, it is impossible to make Zigbee devices connected to a Sonoff gateway (e.g. NSPanel Pro) visible in HA without the intermediation of the eWeLink cloud. Today, it is impossible to make Zigbee devices connected to a Sonoff gateway (e.g. NSPanel Pro) visible in HA without the eWeLink cloud. Matter is not a solution because it does not work well.

---

<div class="post-metadata">

**Author:** ![MichaelLearnsToCode](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/michaellearnstocode/32/1668_2.png) [@MichaelLearnsToCode](https://forum.ewelink.cc/u/MichaelLearnsToCode)\
**Post date:** [May 21, 2025, 9:23am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/74 "2025-05-21T09:23:14Z")

</div>

Regarding to HA’s license and examples of commercial products built with HA. You can read them on Home Assistant’s website, here is one of them: [Apollo joins the Works With Home Assistant Program - Home Assistant](https://www.home-assistant.io/blog/2025/02/27/apollo-joins-wwha)

Regarding to bridging eWeLink and HA, you are absolutely right `it is impossible to make Zigbee devices connected to a Sonoff gateway (e.g. NSPanel Pro) visible in HA without the eWeLink cloud`. And I am totally agree with you that Matter is not good enough. But the question itself is not related to iHost Open Source Project, so I can’t promise what can we do and will do about it.

---

<div class="post-metadata">

**Author:** ![jam3](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/jam3/32/7918_2.png) [@jam3](https://forum.ewelink.cc/u/jam3)\
**Post date:** [May 21, 2025, 9:28am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/75 "2025-05-21T09:28:22Z")

</div>

> [@MichaelLearnsToCode](#):
>
> Read Home Assistant’s docs

I’ve already read it carefully. And have you read it carefully? Probably not. The _Works With Home Assistant_ Programme is about device compatibility, not HA commercialisation on hardware platforms.

---

<div class="post-metadata">

**Author:** ![MichaelLearnsToCode](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/michaellearnstocode/32/1668_2.png) [@MichaelLearnsToCode](https://forum.ewelink.cc/u/MichaelLearnsToCode)\
**Post date:** [May 21, 2025, 9:45am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/78 "2025-05-21T09:45:56Z")

</div>

Really? You don’t know what ESPHome is?

 ![4](https://europe1.discourse-cdn.com/flex005/uploads/ewelinkforum/original/2X/6/6417a997fc98b57af7cca9df6bc5400689ef9d44.png)  
 ![5](https://europe1.discourse-cdn.com/flex005/uploads/ewelinkforum/original/2X/4/452181d96dec6d1e5660bbcb8ce8d973db21e79c.png)  
 ![6](https://europe1.discourse-cdn.com/flex005/uploads/ewelinkforum/original/2X/b/b5fc9d278e882abf0b467203100725acc771bf82.png)

Apollo has also developed and sold [Apollo Odroid](https://wiki.apolloautomation.com/products/apolloodroid/introduction/) which is a SBC running HA.

---

<div class="post-metadata">

**Author:** ![yi.liu](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/yi.liu/32/8659_2.png) [@yi.liu](https://forum.ewelink.cc/u/yi.liu)\
**Post date:** [May 21, 2025, 11:14am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/82 "2025-05-21T11:14:56Z")

</div>

@ivan.v.babenko

We’ve updated the **Supervisor** to the latest version(2025.05.1).

You can try **updating the Supervisor first** , and then attempt the **backup restore** process again.  
If you encounter any further issues, please feel free to let us know — we’re here to help!

---

<div class="post-metadata">

**Author:** ![jam3](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/jam3/32/7918_2.png) [@jam3](https://forum.ewelink.cc/u/jam3)\
**Post date:** [May 21, 2025, 3:39pm UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/88 "2025-05-21T15:39:00Z")

</div>

> [@Booting issues of "HA over iHost"](https://forum.ewelink.cc/t/booting-issues-of-ha-over-ihost/175506/40):
>
> Finally, after 8 hours’ waiting

OMG! A spectacular achievement.

---

<div class="post-metadata">

**Author:** ![salvo80](https://avatars.discourse-cdn.com/v4/letter/s/3d9bf3/32.png) [@salvo80](https://forum.ewelink.cc/u/salvo80)\
**Post date:** [May 21, 2025, 4:39pm UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/89 "2025-05-21T16:39:31Z")

</div>

Hi, noob question, why isn’t it possible to enable automatic boot from USB? It would make everything much simpler, IMHO

---

<div class="post-metadata">

**Author:** ![Unnamedi](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/unnamedi/32/5677_2.png) [@Unnamedi](https://forum.ewelink.cc/u/Unnamedi)\
**Post date:** [May 21, 2025, 5:58pm UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/90 "2025-05-21T17:58:02Z")

</div>

If I’m not mistaken, they already said above that this chipset does not support booting via USB!

---

<div class="post-metadata">

**Author:** ![MichaelLearnsToCode](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/michaellearnstocode/32/1668_2.png) [@MichaelLearnsToCode](https://forum.ewelink.cc/u/MichaelLearnsToCode)\
**Post date:** [May 22, 2025, 5:05am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/93 "2025-05-22T05:05:31Z")

</div>

@Unnamedi Yes, you are exactly right. @salvo80 The SoC’s internal `BootRom` only supports system boot from the following device:

- FSPI Flash interface
- eMMC interface
- SDMMC interface
- Async Nand interface

To support booting from USB, we will need to modify 2nd stage bootloader which is [Das u-boot](https://github.com/u-boot/u-boot). Technically it’s possible, but it may not provide enough value to iHost Open Source Project users for the following reasons:

1. The current hardware version of iHost only has one USB 2.0 port whose speed is less than SD/MMC 4.5.1 interface (TF card slot) .
2. USB flash drive may still have compatibility problem.
3. Our ultimate goal would be to support flashing HA/ioBroker/openHAB/etc. into internal eMMC, and boot directly from there. This way should provide a lot more speed, stability, and compatibility improvements.

---

<div class="post-metadata">

**Author:** ![alyusuph](https://avatars.discourse-cdn.com/v4/letter/a/e47774/32.png) [@alyusuph](https://forum.ewelink.cc/u/alyusuph)\
**Post date:** [May 22, 2025, 5:26pm UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/94 "2025-05-22T17:26:36Z")

</div>

This is really really good news to come. Cant wait for the new 64 Bit IhostOpen Project with 5G Wifi, Zigbee radio, thread, in built speakers etc.

---

<div class="post-metadata">

**Author:** ![KwayLi99](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/kwayli99/32/7691_2.png) [@KwayLi99](https://forum.ewelink.cc/u/KwayLi99)\
**Post date:** [June 3, 2025, 7:36am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/95 "2025-06-03T07:36:39Z")

</div>



---

<div class="post-metadata">

**Author:** ![KwayLi99](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/kwayli99/32/7691_2.png) [@KwayLi99](https://forum.ewelink.cc/u/KwayLi99)\
**Post date:** [June 3, 2025, 7:36am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/96 "2025-06-03T07:36:51Z")

</div>



---

<div class="post-metadata">

**Author:** ![fabianoarruda](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/fabianoarruda/32/3048_2.png) [@fabianoarruda](https://forum.ewelink.cc/u/fabianoarruda)\
**Post date:** [June 19, 2025, 6:57pm UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/97 "2025-06-19T18:57:45Z")

</div>

That’s great news! I have been using the original project from Darkxs, and I’m glad to know that you guys are now officially supporting this. I’m looking forward to test on my own device.

A quick question: I noticed there is a official addon for the iHost specific hardware features. Is it in the plans to support the built in mic and speaker? That would be a nice addition to the Add-on. One of the possibilities I think is perhaps enabling the iHost itself as an HA voice satellite, so I could talk to HA Voice Assistant using the iHost hardware. Is this technically possible? In my limited understanding, the iHost may already have the necessary hardware for this: A mic, speaker and NPU to process wake word etc. Does it make sense?

My iHost is close to my desk at home. I imagine a lot of people also have the device sitting on an accessible place, instead of hidden inside a servers rack, so it’s easy to talk with it and use as a voice assistant, right?

---

<div class="post-metadata">

**Author:** ![MichaelLearnsToCode](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/michaellearnstocode/32/1668_2.png) [@MichaelLearnsToCode](https://forum.ewelink.cc/u/MichaelLearnsToCode)\
**Post date:** [June 20, 2025, 9:15am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/98 "2025-06-20T09:15:28Z")

</div>

Hi @fabianoarruda thank you for using iHost and your suggestions. We will be adding Speaker support in the next HA over iHost version which should be released on July 3rd.

As for the microphone, we have evaluated the current HA Voice Pipeline (openWakeWord, Piper, Whisper). We found out the performance was really poor on iHost (32 bit RV1126/1109 SoC). Actually, the performance of current HA Voice Pipeline is poor on many ARM devices, such as Raspberry Pi 4.

Home Assistant officially suggests [`leverage the voice providers (for speech-to-text and text-to-speech) included in Home Assistant Cloud`](https://www.home-assistant.io/voice_control/voice_remote_local_assistant/), and if users do want to go local, then `Intel NUC` is a better option.

We plan to make the new iHost (64 bit SoC, and other hardware upgrades) work better with HA Voice Pipline.

---

<div class="post-metadata">

**Author:** ![renatoyamane](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@renatoyamane](https://forum.ewelink.cc/u/renatoyamane)\
**Post date:** [June 28, 2025, 8:35am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/99 "2025-06-28T08:35:14Z")

</div>

Hi,

Is there any plan to make the “Detach Relay” from [Sonoff ZBM5](https://sonoff.tech/product/smart-wall-switches/zbm5/) to work on Home Assistant?  
@Daniel_Zhan

 ![Screenshot_20250628-092924](https://europe1.discourse-cdn.com/flex005/uploads/ewelinkforum/original/2X/9/90bf80c3dfa605d5eb36277822627afe50716437.jpeg)

---

<div class="post-metadata">

**Author:** ![renatoyamane](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@renatoyamane](https://forum.ewelink.cc/u/renatoyamane)\
**Post date:** [July 15, 2025, 11:53am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/100 "2025-07-15T11:53:14Z")

</div>

Hi @MichaelLearnsToCode,

I guess @Daniel_Zhan is not following this forum anymore.

Do you know the answer for the question above and how to proceed to update the Sonoff ZBM5 Smart Light Switches firmware on Home Assistant?  
It’s saying always “_Firmware unknown_”.

---

<div class="post-metadata">

**Author:** ![Daniel\_Zhan](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/daniel_zhan/32/622_2.png) [@Daniel\_Zhan](https://forum.ewelink.cc/u/Daniel_Zhan)\
**Post date:** [July 16, 2025, 11:12am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/101 "2025-07-16T11:12:41Z")

</div>

Hi @renatoyamane

This is not an error with your setup. The switch will work normally—only firmware info is missing as we did not upload any firmware to ZHA yet.

When Sonoff releases a new firmware version, we’ll submit it to the ZHA project. Once merged:

- OTA updates will appear automatically in Home Assistant.
- The firmware version will display correctly.

---

<div class="post-metadata">

**Author:** ![Daniel\_Zhan](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.ewelink.cc/daniel_zhan/32/622_2.png) [@Daniel\_Zhan](https://forum.ewelink.cc/u/Daniel_Zhan)\
**Post date:** [July 16, 2025, 11:16am UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/102 "2025-07-16T11:16:38Z")

</div>

We have implemented the Detach Relay feature on ZBMINIR2 ZHA quirk, unfortunately, we are facing the issue as the link below.

> <https://github.com/zigpy/zha-device-handlers/issues/3579>
>
> \### Bug description
> 
> I’ve been having issues using the detached relay mode on …the Sonoff ZBMINIR2. I'm currently using the quirk as it was merged in #3428.
> 
> It functions fine without the detached relay feature, but with that feature turned on the behaviour is erratic and unusable. I’m using a pulse switch (as opposed to a rocker switch). Here’s some symptoms:
> 
> \- Often after pressing the switch, its LED blinks in a pattern that \[the manual\](https://sonoff.tech/wp-content/uploads/2024/09/User-Manual-ZBMINIR2EN-V1.1.pdf) explains as a “Abnormal connection with the gateway”
> \- Instead of firing a ‘toggle’ event or action, presses on the physical switch turn on the switch inside Home Assistant’s device page on, then turns if off a second or two later. Sometimes repeating this action an extra time. Often followed by \_the blinking\_
> - This makes testing for things like double tapping useless. 
> \- The “sensor” it exposes in the HA UI never changes state
> \- It seems to merge the state of the relay and the state of the button into one ‘switch’ in the UI, even though these should be considered separately (i.e. you should be able to toggle the physical relay from HA)
> 
> It’s worth noting that today I tried to see how the switch worked with Zigbee2MQTT, and it worked without a hitch:
> \- The state of the physical relay turns into a switch in the HA UI
> \- It fires actions for each toggle, and doesn’t touch the state of the relay 
> \- The switch does not blink after sending an event
> \- Events seem to arrive instantly
> 
> This was also brought up in #3428, but not in this detail. See the video below for an example of the different behaviours in ZHA vs Z2M
> 
> \### Steps to reproduce
> 
> 1. Turn on the pulse switch mode and detached relay mode
> 2. press the switch
> 3. Notice the events received by HA, see that the switch toggles off and on by itself after pressing the buttons
> 
> \### Expected behavior
> 
> \- In detached relay mode, the physical switch should trigger events inside HA without changing HA's perception of the state of the physical relay
> \- Pulse mode switches should either send a simple 'press' event or something like a 'press/release"event
> 
> \### Screenshots/Video
> 
> \<details\>\<summary\>Video\</summary\>
> 
> https://github.com/user-attachments/assets/09f45562-e03a-4f86-984e-ec9a0985e519
> 
> \</details\>
> 
> 
> \### Device signature
> 
> \<details\>\<summary\>Device signature\</summary\>
> 
> \`\`\`json
> {
> "node\_descriptor": {
> "logical\_type": 1,
> "complex\_descriptor\_available": 0,
> "user\_descriptor\_available": 0,
> "reserved": 0,
> "aps\_flags": 0,
> "frequency\_band": 8,
> "mac\_capability\_flags": 142,
> "manufacturer\_code": 4742,
> "maximum\_buffer\_size": 82,
> "maximum\_incoming\_transfer\_size": 255,
> "server\_mask": 11264,
> "maximum\_outgoing\_transfer\_size": 255,
> "descriptor\_capability\_field": 0
> },
> "endpoints": {
> "1": {
> "profile\_id": "0x0104",
> "device\_type": "0x0002",
> "input\_clusters": \[
> "0x0000",
> "0x0003",
> "0x0004",
> "0x0006",
> "0x0b05",
> "0xfc11",
> "0xfc57"
> \],
> "output\_clusters": \[
> "0x0003",
> "0x0006",
> "0x0019"
> \]
> },
> "242": {
> "profile\_id": "0xa1e0",
> "device\_type": "0x0061",
> "input\_clusters": \[\],
> "output\_clusters": \[
> "0x0021"
> \]
> }
> },
> "manufacturer": "SONOFF",
> "model": "ZBMINIR2",
> "class": "zigpy.quirks.v2.CustomDeviceV2"
> }
> \`\`\`
> 
> \</details\>
> 
> 
> \### Diagnostic information
> 
> \<details\>\<summary\>Diagnostic information\</summary\>
> 
> \`\`\`json
> {
> "home\_assistant": {
> "installation\_type": "Home Assistant OS",
> "version": "2024.11.3",
> "dev": false,
> "hassio": true,
> "virtualenv": false,
> "python\_version": "3.12.4",
> "docker": true,
> "arch": "x86\_64",
> "timezone": "Europe/Berlin",
> "os\_name": "Linux",
> "os\_version": "6.6.46-haos",
> "supervisor": "2024.11.4",
> "host\_os": "Home Assistant OS 13.1",
> "docker\_version": "26.1.4",
> "chassis": "embedded",
> "run\_as\_root": true
> },
> "custom\_components": {
> "lastfm\_scrobbler": {
> "documentation": "https://github.com/valentin-gosselin/lastfm-scrobbler-ha-integration/blob/main/README.md",
> "version": "1.2.0",
> "requirements": \[
> "requests",
> "pylast"
> \]
> },
> "thermal\_comfort": {
> "documentation": "https://github.com/dolezsa/thermal\_comfort/blob/master/README.md",
> "version": "2.2.2",
> "requirements": \[\]
> },
> "trakt\_tv": {
> "documentation": "https://github.com/dylandoamaral/trakt-integration",
> "version": "0.9.0",
> "requirements": \[\]
> },
> "slack\_user": {
> "documentation": "https://github.com/GeorgeSG/ha-slack-user",
> "version": "0.6",
> "requirements": \[
> "slackclient==2.9.4"
> \]
> },
> "mass": {
> "documentation": "https://music-assistant.io",
> "version": "2024.11.4",
> "requirements": \[
> "music-assistant-client==1.0.6"
> \]
> },
> "cluster\_player\_scrobbler": {
> "documentation": null,
> "version": "1.0.1",
> "requirements": \[
> "requests",
> "pylast"
> \]
> },
> "scene\_presets": {
> "documentation": "https://github.com/Hypfer/hass-scene\_presets",
> "version": "2.2.1",
> "requirements": \[\]
> },
> "hacs": {
> "documentation": "https://hacs.xyz/docs/configuration/start",
> "version": "2.0.1",
> "requirements": \[
> "aiogithubapi\>=22.10.1"
> \]
> },
> "ics\_calendar": {
> "documentation": "https://github.com/franc6/ics\_calendar",
> "version": "5.0.4",
> "requirements": \[
> "icalendar\>=6.0.0",
> "python-dateutil\>=2.9.0.post0",
> "pytz\>=2024.1",
> "recurring\_ical\_events\>=3.3.2",
> "ics\>=0.7.2",
> "arrow"
> \]
> }
> },
> "integration\_manifest": {
> "domain": "zha",
> "name": "Zigbee Home Automation",
> "after\_dependencies": \[
> "hassio",
> "onboarding",
> "usb"
> \],
> "codeowners": \[
> "dmulcahey",
> "adminiuga",
> "puddly",
> "TheJulianJES"
> \],
> "config\_flow": true,
> "dependencies": \[
> "file\_upload"
> \],
> "documentation": "https://www.home-assistant.io/integrations/zha",
> "iot\_class": "local\_polling",
> "loggers": \[
> "aiosqlite",
> "bellows",
> "crccheck",
> "pure\_pcapy3",
> "zhaquirks",
> "zigpy",
> "zigpy\_deconz",
> "zigpy\_xbee",
> "zigpy\_zigate",
> "zigpy\_znp",
> "zha",
> "universal\_silabs\_flasher"
> \],
> "requirements": \[
> "universal-silabs-flasher==0.0.25",
> "zha==0.0.39"
> \],
> "usb": \[
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*2652\*",
> "known\_devices": \[
> "slae.sh cc2652rb stick"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*slzb-07\*",
> "known\_devices": \[
> "smlight slzb-07"
> \]
> },
> {
> "vid": "1A86",
> "pid": "55D4",
> "description": "\*sonoff\*plus\*",
> "known\_devices": \[
> "sonoff zigbee dongle plus v2"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*sonoff\*plus\*",
> "known\_devices": \[
> "sonoff zigbee dongle plus"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*tubeszb\*",
> "known\_devices": \[
> "TubesZB Coordinator"
> \]
> },
> {
> "vid": "1A86",
> "pid": "7523",
> "description": "\*tubeszb\*",
> "known\_devices": \[
> "TubesZB Coordinator"
> \]
> },
> {
> "vid": "1A86",
> "pid": "7523",
> "description": "\*zigstar\*",
> "known\_devices": \[
> "ZigStar Coordinators"
> \]
> },
> {
> "vid": "1CF1",
> "pid": "0030",
> "description": "\*conbee\*",
> "known\_devices": \[
> "Conbee II"
> \]
> },
> {
> "vid": "0403",
> "pid": "6015",
> "description": "\*conbee\*",
> "known\_devices": \[
> "Conbee III"
> \]
> },
> {
> "vid": "10C4",
> "pid": "8A2A",
> "description": "\*zigbee\*",
> "known\_devices": \[
> "Nortek HUSBZB-1"
> \]
> },
> {
> "vid": "0403",
> "pid": "6015",
> "description": "\*zigate\*",
> "known\_devices": \[
> "ZiGate+"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*zigate\*",
> "known\_devices": \[
> "ZiGate"
> \]
> },
> {
> "vid": "10C4",
> "pid": "8B34",
> "description": "\*bv 2010/10\*",
> "known\_devices": \[
> "Bitron Video AV2010/10"
> \]
> }
> \],
> "zeroconf": \[
> {
> "type": "\_esphomelib.\_tcp.local.",
> "name": "tube\*"
> },
> {
> "type": "\_zigate-zigbee-gateway.\_tcp.local.",
> "name": "\*zigate\*"
> },
> {
> "type": "\_zigstar\_gw.\_tcp.local.",
> "name": "\*zigstar\*"
> },
> {
> "type": "\_uzg-01.\_tcp.local.",
> "name": "uzg-01\*"
> },
> {
> "type": "\_slzb-06.\_tcp.local.",
> "name": "slzb-06\*"
> },
> {
> "type": "\_xzg.\_tcp.local.",
> "name": "xzg\*"
> },
> {
> "type": "\_czc.\_tcp.local.",
> "name": "czc\*"
> }
> \],
> "is\_built\_in": true,
> "overwrites\_built\_in": false
> },
> "setup\_times": {
> "null": {
> "setup": 9.081605821847916e-05
> },
> "01J2KNBP7SN295GGS0KQ2V5H58": {
> "wait\_import\_platforms": -0.029656579019501805,
> "wait\_base\_component": -0.001775671960785985,
> "config\_entry\_setup": 12.813472521025687
> }
> },
> "data": {
> "ieee": "\*\*REDACTED\*\*",
> "nwk": 60937,
> "manufacturer": "SONOFF",
> "model": "ZBMINIR2",
> "name": "SONOFF ZBMINIR2",
> "quirk\_applied": true,
> "quirk\_class": "zigpy.quirks.v2.CustomDeviceV2",
> "quirk\_id": null,
> "manufacturer\_code": 4742,
> "power\_source": "Mains",
> "lqi": null,
> "rssi": null,
> "last\_seen": "2024-12-03T16:49:13",
> "available": true,
> "device\_type": "Router",
> "signature": {
> "node\_descriptor": {
> "logical\_type": 1,
> "complex\_descriptor\_available": 0,
> "user\_descriptor\_available": 0,
> "reserved": 0,
> "aps\_flags": 0,
> "frequency\_band": 8,
> "mac\_capability\_flags": 142,
> "manufacturer\_code": 4742,
> "maximum\_buffer\_size": 82,
> "maximum\_incoming\_transfer\_size": 255,
> "server\_mask": 11264,
> "maximum\_outgoing\_transfer\_size": 255,
> "descriptor\_capability\_field": 0
> },
> "endpoints": {
> "1": {
> "profile\_id": "0x0104",
> "device\_type": "0x0002",
> "input\_clusters": \[
> "0x0000",
> "0x0003",
> "0x0004",
> "0x0006",
> "0x0b05",
> "0xfc11",
> "0xfc57"
> \],
> "output\_clusters": \[
> "0x0003",
> "0x0006",
> "0x0019"
> \]
> },
> "242": {
> "profile\_id": "0xa1e0",
> "device\_type": "0x0061",
> "input\_clusters": \[\],
> "output\_clusters": \[
> "0x0021"
> \]
> }
> },
> "manufacturer": "SONOFF",
> "model": "ZBMINIR2"
> },
> "active\_coordinator": false,
> "entities": \[
> {
> "entity\_id": "binary\_sensor.sonoff\_zbminir2\_opening",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "button.sonoff\_zbminir2\_identify",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "select.sonoff\_zbminir2\_external\_trigger\_mode",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "switch.sonoff\_zbminir2\_switch",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "switch.sonoff\_zbminir2\_turbo\_mode",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "switch.sonoff\_zbminir2\_detach\_relay",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "update.sonoff\_zbminir2\_firmware",
> "name": "SONOFF ZBMINIR2"
> }
> \],
> "neighbors": \[\],
> "routes": \[
> {
> "dest\_nwk": "0x0000",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0x74D8"
> },
> {
> "dest\_nwk": "0xDA0D",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0xDA0D"
> },
> {
> "dest\_nwk": "0x2E3D",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0x2E3D"
> },
> {
> "dest\_nwk": "0xB721",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0xB721"
> }
> \],
> "endpoint\_names": \[
> {
> "name": "ON\_OFF\_OUTPUT"
> },
> {
> "name": "PROXY\_BASIC"
> }
> \],
> "user\_given\_name": null,
> "device\_reg\_id": "fabba91b96619b3616cb1a83d63f4ab8",
> "area\_id": null,
> "cluster\_details": {
> "1": {
> "device\_type": {
> "name": "ON\_OFF\_OUTPUT",
> "id": 2
> },
> "profile\_id": 260,
> "in\_clusters": {
> "0x0000": {
> "endpoint\_attribute": "basic",
> "attributes": {
> "0x0013": {
> "attribute": "ZCLAttributeDef(id=0x0013, name='alarm\_mask', type=\<flag 'AlarmMask'\>, zcl\_type=\<DataTypeId.map8: 24\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0001": {
> "attribute": "ZCLAttributeDef(id=0x0001, name='app\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0006": {
> "attribute": "ZCLAttributeDef(id=0x0006, name='date\_code', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0012": {
> "attribute": "ZCLAttributeDef(id=0x0012, name='device\_enabled', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0014": {
> "attribute": "ZCLAttributeDef(id=0x0014, name='disable\_local\_config', type=\<flag 'DisableLocalConfig'\>, zcl\_type=\<DataTypeId.map8: 24\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0008": {
> "attribute": "ZCLAttributeDef(id=0x0008, name='generic\_device\_class', type=\<enum 'GenericDeviceClass'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0009": {
> "attribute": "ZCLAttributeDef(id=0x0009, name='generic\_device\_type', type=\<enum 'GenericLightingDeviceType'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0003": {
> "attribute": "ZCLAttributeDef(id=0x0003, name='hw\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0010": {
> "attribute": "ZCLAttributeDef(id=0x0010, name='location\_desc', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0004": {
> "attribute": "ZCLAttributeDef(id=0x0004, name='manufacturer', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": "SONOFF"
> },
> "0x000c": {
> "attribute": "ZCLAttributeDef(id=0x000C, name='manufacturer\_version\_details', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0005": {
> "attribute": "ZCLAttributeDef(id=0x0005, name='model', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": "ZBMINIR2"
> },
> "0x0011": {
> "attribute": "ZCLAttributeDef(id=0x0011, name='physical\_env', type=\<enum 'PhysicalEnvironment'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0007": {
> "attribute": "ZCLAttributeDef(id=0x0007, name='power\_source', type=\<enum 'PowerSource'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000a": {
> "attribute": "ZCLAttributeDef(id=0x000A, name='product\_code', type=\<class 'zigpy.types.basic.LVBytes'\>, zcl\_type=\<DataTypeId.octstr: 65\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000e": {
> "attribute": "ZCLAttributeDef(id=0x000E, name='product\_label', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000b": {
> "attribute": "ZCLAttributeDef(id=0x000B, name='product\_url', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000d": {
> "attribute": "ZCLAttributeDef(id=0x000D, name='serial\_number', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0002": {
> "attribute": "ZCLAttributeDef(id=0x0002, name='stack\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4000": {
> "attribute": "ZCLAttributeDef(id=0x4000, name='sw\_build\_id', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='zcl\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0003": {
> "endpoint\_attribute": "identify",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='identify\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0004": {
> "endpoint\_attribute": "groups",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='name\_support', type=\<flag 'NameSupport'\>, zcl\_type=\<DataTypeId.map8: 24\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0006": {
> "endpoint\_attribute": "on\_off",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4000": {
> "attribute": "ZCLAttributeDef(id=0x4000, name='global\_scene\_control', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4002": {
> "attribute": "ZCLAttributeDef(id=0x4002, name='off\_wait\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='on\_off', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Report|Scene: 25\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4001": {
> "attribute": "ZCLAttributeDef(id=0x4001, name='on\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4003": {
> "attribute": "ZCLAttributeDef(id=0x4003, name='start\_up\_on\_off', type=\<enum 'StartUpOnOff'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0b05": {
> "endpoint\_attribute": "diagnostic",
> "attributes": {
> "0x0116": {
> "attribute": "ZCLAttributeDef(id=0x0116, name='aps\_decrypt\_failures', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0113": {
> "attribute": "ZCLAttributeDef(id=0x0113, name='aps\_fc\_failure', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0106": {
> "attribute": "ZCLAttributeDef(id=0x0106, name='aps\_rx\_bcast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0108": {
> "attribute": "ZCLAttributeDef(id=0x0108, name='aps\_rx\_ucast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0107": {
> "attribute": "ZCLAttributeDef(id=0x0107, name='aps\_tx\_bcast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010b": {
> "attribute": "ZCLAttributeDef(id=0x010B, name='aps\_tx\_ucast\_fail', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010a": {
> "attribute": "ZCLAttributeDef(id=0x010A, name='aps\_tx\_ucast\_retry', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0109": {
> "attribute": "ZCLAttributeDef(id=0x0109, name='aps\_tx\_ucast\_success', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0114": {
> "attribute": "ZCLAttributeDef(id=0x0114, name='aps\_unauthorized\_key', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011b": {
> "attribute": "ZCLAttributeDef(id=0x011B, name='average\_mac\_retry\_per\_aps\_message\_sent', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0111": {
> "attribute": "ZCLAttributeDef(id=0x0111, name='child\_moved', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0110": {
> "attribute": "ZCLAttributeDef(id=0x0110, name='join\_indication', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011c": {
> "attribute": "ZCLAttributeDef(id=0x011C, name='last\_message\_lqi', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011d": {
> "attribute": "ZCLAttributeDef(id=0x011D, name='last\_message\_rssi', type=\<class 'zigpy.types.basic.int8s'\>, zcl\_type=\<DataTypeId.int8: 40\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0100": {
> "attribute": "ZCLAttributeDef(id=0x0100, name='mac\_rx\_bcast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0102": {
> "attribute": "ZCLAttributeDef(id=0x0102, name='mac\_rx\_ucast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0101": {
> "attribute": "ZCLAttributeDef(id=0x0101, name='mac\_tx\_bcast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0103": {
> "attribute": "ZCLAttributeDef(id=0x0103, name='mac\_tx\_ucast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0105": {
> "attribute": "ZCLAttributeDef(id=0x0105, name='mac\_tx\_ucast\_fail', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0104": {
> "attribute": "ZCLAttributeDef(id=0x0104, name='mac\_tx\_ucast\_retry', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010d": {
> "attribute": "ZCLAttributeDef(id=0x010D, name='neighbor\_added', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010e": {
> "attribute": "ZCLAttributeDef(id=0x010E, name='neighbor\_removed', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010f": {
> "attribute": "ZCLAttributeDef(id=0x010F, name='neighbor\_stale', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='number\_of\_resets', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0115": {
> "attribute": "ZCLAttributeDef(id=0x0115, name='nwk\_decrypt\_failures', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0112": {
> "attribute": "ZCLAttributeDef(id=0x0112, name='nwk\_fc\_failure', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0117": {
> "attribute": "ZCLAttributeDef(id=0x0117, name='packet\_buffer\_allocate\_failures', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011a": {
> "attribute": "ZCLAttributeDef(id=0x011A, name='packet\_validate\_drop\_count', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0001": {
> "attribute": "ZCLAttributeDef(id=0x0001, name='persistent\_memory\_writes', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0119": {
> "attribute": "ZCLAttributeDef(id=0x0119, name='phy\_to\_mac\_queue\_limit\_reached', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0118": {
> "attribute": "ZCLAttributeDef(id=0x0118, name='relayed\_ucast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010c": {
> "attribute": "ZCLAttributeDef(id=0x010C, name='route\_disc\_initiated', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0xfc57": {
> "endpoint\_attribute": "manufacturer\_specific",
> "attributes": {},
> "unsupported\_attributes": \[\]
> },
> "0xfc11": {
> "endpoint\_attribute": null,
> "attributes": {
> "0x0017": {
> "attribute": "ZCLAttributeDef(id=0x0017, name='detach\_relay', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Write|Report: 11\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0016": {
> "attribute": "ZCLAttributeDef(id=0x0016, name='external\_trigger\_mode', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read|Write|Report: 11\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0012": {
> "attribute": "ZCLAttributeDef(id=0x0012, name='turbo\_mode', type=\<class 'zigpy.types.basic.int16s'\>, zcl\_type=\<DataTypeId.int16: 41\>, access=\<ZCLAttributeAccess.Read|Write|Report: 11\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> }
> },
> "out\_clusters": {
> "0x0003": {
> "endpoint\_attribute": "identify",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='identify\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0006": {
> "endpoint\_attribute": "on\_off",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4000": {
> "attribute": "ZCLAttributeDef(id=0x4000, name='global\_scene\_control', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4002": {
> "attribute": "ZCLAttributeDef(id=0x4002, name='off\_wait\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='on\_off', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Report|Scene: 25\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4001": {
> "attribute": "ZCLAttributeDef(id=0x4001, name='on\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4003": {
> "attribute": "ZCLAttributeDef(id=0x4003, name='start\_up\_on\_off', type=\<enum 'StartUpOnOff'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0019": {
> "endpoint\_attribute": "ota",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0002": {
> "attribute": "ZCLAttributeDef(id=0x0002, name='current\_file\_version', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0003": {
> "attribute": "ZCLAttributeDef(id=0x0003, name='current\_zigbee\_stack\_version', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0004": {
> "attribute": "ZCLAttributeDef(id=0x0004, name='downloaded\_file\_version', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0005": {
> "attribute": "ZCLAttributeDef(id=0x0005, name='downloaded\_zigbee\_stack\_version', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0001": {
> "attribute": "ZCLAttributeDef(id=0x0001, name='file\_offset', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000a": {
> "attribute": "ZCLAttributeDef(id=0x000A, name='image\_stamp', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0008": {
> "attribute": "ZCLAttributeDef(id=0x0008, name='image\_type\_id', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0006": {
> "attribute": "ZCLAttributeDef(id=0x0006, name='image\_upgrade\_status', type=\<enum 'ImageUpgradeStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0007": {
> "attribute": "ZCLAttributeDef(id=0x0007, name='manufacturer\_id', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0009": {
> "attribute": "ZCLAttributeDef(id=0x0009, name='minimum\_block\_req\_delay', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000b": {
> "attribute": "ZCLAttributeDef(id=0x000B, name='upgrade\_activation\_policy', type=\<enum 'UpgradeActivationPolicy'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='upgrade\_server\_id', type=\<class 'zigpy.types.named.EUI64'\>, zcl\_type=\<DataTypeId.EUI64: 240\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000c": {
> "attribute": "ZCLAttributeDef(id=0x000C, name='upgrade\_timeout\_policy', type=\<enum 'UpgradeTimeoutPolicy'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> }
> }
> },
> "242": {
> "device\_type": {
> "name": "PROXY\_BASIC",
> "id": 97
> },
> "profile\_id": 41440,
> "in\_clusters": {},
> "out\_clusters": {
> "0x0021": {
> "endpoint\_attribute": "green\_power",
> "attributes": {},
> "unsupported\_attributes": \[\]
> }
> }
> }
> }
> }
> }
> \`\`\`
> 
> \</details\>
> 
> 
> \### Logs
> 
> \<details\>\<summary\>Logs\</summary\>
> 
> \`\`\`python
> \[Paste the logs here\]
> \`\`\`
> 
> \</details\>
> 
> 
> \### Additional information
> 
> \_No response\_

As this issue is fixed, we will apply to more devices with Detach Relay feature in ZHA.

---

<div class="post-metadata">

**Author:** ![renatoyamane](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@renatoyamane](https://forum.ewelink.cc/u/renatoyamane)\
**Post date:** [July 16, 2025, 10:41pm UTC](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511/103 "2025-07-16T22:41:15Z")

</div>

> [@Daniel\_Zhan](#):
>
> As this issue is fixed, we will apply to more devices with Detach Relay feature in ZHA.

Thanks. It seems it will be fixed on HA 2025.8.0 Beta

> <https://github.com/zigpy/zha-device-handlers/issues/3579#issuecomment-3081283410>
>
> \### Bug description
> 
> I’ve been having issues using the detached relay mode on …the Sonoff ZBMINIR2. I'm currently using the quirk as it was merged in #3428.
> 
> It functions fine without the detached relay feature, but with that feature turned on the behaviour is erratic and unusable. I’m using a pulse switch (as opposed to a rocker switch). Here’s some symptoms:
> 
> \- Often after pressing the switch, its LED blinks in a pattern that \[the manual\](https://sonoff.tech/wp-content/uploads/2024/09/User-Manual-ZBMINIR2EN-V1.1.pdf) explains as a “Abnormal connection with the gateway”
> \- Instead of firing a ‘toggle’ event or action, presses on the physical switch turn on the switch inside Home Assistant’s device page on, then turns if off a second or two later. Sometimes repeating this action an extra time. Often followed by \_the blinking\_
> - This makes testing for things like double tapping useless. 
> \- The “sensor” it exposes in the HA UI never changes state
> \- It seems to merge the state of the relay and the state of the button into one ‘switch’ in the UI, even though these should be considered separately (i.e. you should be able to toggle the physical relay from HA)
> 
> It’s worth noting that today I tried to see how the switch worked with Zigbee2MQTT, and it worked without a hitch:
> \- The state of the physical relay turns into a switch in the HA UI
> \- It fires actions for each toggle, and doesn’t touch the state of the relay 
> \- The switch does not blink after sending an event
> \- Events seem to arrive instantly
> 
> This was also brought up in #3428, but not in this detail. See the video below for an example of the different behaviours in ZHA vs Z2M
> 
> \### Steps to reproduce
> 
> 1. Turn on the pulse switch mode and detached relay mode
> 2. press the switch
> 3. Notice the events received by HA, see that the switch toggles off and on by itself after pressing the buttons
> 
> \### Expected behavior
> 
> \- In detached relay mode, the physical switch should trigger events inside HA without changing HA's perception of the state of the physical relay
> \- Pulse mode switches should either send a simple 'press' event or something like a 'press/release"event
> 
> \### Screenshots/Video
> 
> \<details\>\<summary\>Video\</summary\>
> 
> https://github.com/user-attachments/assets/09f45562-e03a-4f86-984e-ec9a0985e519
> 
> \</details\>
> 
> 
> \### Device signature
> 
> \<details\>\<summary\>Device signature\</summary\>
> 
> \`\`\`json
> {
> "node\_descriptor": {
> "logical\_type": 1,
> "complex\_descriptor\_available": 0,
> "user\_descriptor\_available": 0,
> "reserved": 0,
> "aps\_flags": 0,
> "frequency\_band": 8,
> "mac\_capability\_flags": 142,
> "manufacturer\_code": 4742,
> "maximum\_buffer\_size": 82,
> "maximum\_incoming\_transfer\_size": 255,
> "server\_mask": 11264,
> "maximum\_outgoing\_transfer\_size": 255,
> "descriptor\_capability\_field": 0
> },
> "endpoints": {
> "1": {
> "profile\_id": "0x0104",
> "device\_type": "0x0002",
> "input\_clusters": \[
> "0x0000",
> "0x0003",
> "0x0004",
> "0x0006",
> "0x0b05",
> "0xfc11",
> "0xfc57"
> \],
> "output\_clusters": \[
> "0x0003",
> "0x0006",
> "0x0019"
> \]
> },
> "242": {
> "profile\_id": "0xa1e0",
> "device\_type": "0x0061",
> "input\_clusters": \[\],
> "output\_clusters": \[
> "0x0021"
> \]
> }
> },
> "manufacturer": "SONOFF",
> "model": "ZBMINIR2",
> "class": "zigpy.quirks.v2.CustomDeviceV2"
> }
> \`\`\`
> 
> \</details\>
> 
> 
> \### Diagnostic information
> 
> \<details\>\<summary\>Diagnostic information\</summary\>
> 
> \`\`\`json
> {
> "home\_assistant": {
> "installation\_type": "Home Assistant OS",
> "version": "2024.11.3",
> "dev": false,
> "hassio": true,
> "virtualenv": false,
> "python\_version": "3.12.4",
> "docker": true,
> "arch": "x86\_64",
> "timezone": "Europe/Berlin",
> "os\_name": "Linux",
> "os\_version": "6.6.46-haos",
> "supervisor": "2024.11.4",
> "host\_os": "Home Assistant OS 13.1",
> "docker\_version": "26.1.4",
> "chassis": "embedded",
> "run\_as\_root": true
> },
> "custom\_components": {
> "lastfm\_scrobbler": {
> "documentation": "https://github.com/valentin-gosselin/lastfm-scrobbler-ha-integration/blob/main/README.md",
> "version": "1.2.0",
> "requirements": \[
> "requests",
> "pylast"
> \]
> },
> "thermal\_comfort": {
> "documentation": "https://github.com/dolezsa/thermal\_comfort/blob/master/README.md",
> "version": "2.2.2",
> "requirements": \[\]
> },
> "trakt\_tv": {
> "documentation": "https://github.com/dylandoamaral/trakt-integration",
> "version": "0.9.0",
> "requirements": \[\]
> },
> "slack\_user": {
> "documentation": "https://github.com/GeorgeSG/ha-slack-user",
> "version": "0.6",
> "requirements": \[
> "slackclient==2.9.4"
> \]
> },
> "mass": {
> "documentation": "https://music-assistant.io",
> "version": "2024.11.4",
> "requirements": \[
> "music-assistant-client==1.0.6"
> \]
> },
> "cluster\_player\_scrobbler": {
> "documentation": null,
> "version": "1.0.1",
> "requirements": \[
> "requests",
> "pylast"
> \]
> },
> "scene\_presets": {
> "documentation": "https://github.com/Hypfer/hass-scene\_presets",
> "version": "2.2.1",
> "requirements": \[\]
> },
> "hacs": {
> "documentation": "https://hacs.xyz/docs/configuration/start",
> "version": "2.0.1",
> "requirements": \[
> "aiogithubapi\>=22.10.1"
> \]
> },
> "ics\_calendar": {
> "documentation": "https://github.com/franc6/ics\_calendar",
> "version": "5.0.4",
> "requirements": \[
> "icalendar\>=6.0.0",
> "python-dateutil\>=2.9.0.post0",
> "pytz\>=2024.1",
> "recurring\_ical\_events\>=3.3.2",
> "ics\>=0.7.2",
> "arrow"
> \]
> }
> },
> "integration\_manifest": {
> "domain": "zha",
> "name": "Zigbee Home Automation",
> "after\_dependencies": \[
> "hassio",
> "onboarding",
> "usb"
> \],
> "codeowners": \[
> "dmulcahey",
> "adminiuga",
> "puddly",
> "TheJulianJES"
> \],
> "config\_flow": true,
> "dependencies": \[
> "file\_upload"
> \],
> "documentation": "https://www.home-assistant.io/integrations/zha",
> "iot\_class": "local\_polling",
> "loggers": \[
> "aiosqlite",
> "bellows",
> "crccheck",
> "pure\_pcapy3",
> "zhaquirks",
> "zigpy",
> "zigpy\_deconz",
> "zigpy\_xbee",
> "zigpy\_zigate",
> "zigpy\_znp",
> "zha",
> "universal\_silabs\_flasher"
> \],
> "requirements": \[
> "universal-silabs-flasher==0.0.25",
> "zha==0.0.39"
> \],
> "usb": \[
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*2652\*",
> "known\_devices": \[
> "slae.sh cc2652rb stick"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*slzb-07\*",
> "known\_devices": \[
> "smlight slzb-07"
> \]
> },
> {
> "vid": "1A86",
> "pid": "55D4",
> "description": "\*sonoff\*plus\*",
> "known\_devices": \[
> "sonoff zigbee dongle plus v2"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*sonoff\*plus\*",
> "known\_devices": \[
> "sonoff zigbee dongle plus"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*tubeszb\*",
> "known\_devices": \[
> "TubesZB Coordinator"
> \]
> },
> {
> "vid": "1A86",
> "pid": "7523",
> "description": "\*tubeszb\*",
> "known\_devices": \[
> "TubesZB Coordinator"
> \]
> },
> {
> "vid": "1A86",
> "pid": "7523",
> "description": "\*zigstar\*",
> "known\_devices": \[
> "ZigStar Coordinators"
> \]
> },
> {
> "vid": "1CF1",
> "pid": "0030",
> "description": "\*conbee\*",
> "known\_devices": \[
> "Conbee II"
> \]
> },
> {
> "vid": "0403",
> "pid": "6015",
> "description": "\*conbee\*",
> "known\_devices": \[
> "Conbee III"
> \]
> },
> {
> "vid": "10C4",
> "pid": "8A2A",
> "description": "\*zigbee\*",
> "known\_devices": \[
> "Nortek HUSBZB-1"
> \]
> },
> {
> "vid": "0403",
> "pid": "6015",
> "description": "\*zigate\*",
> "known\_devices": \[
> "ZiGate+"
> \]
> },
> {
> "vid": "10C4",
> "pid": "EA60",
> "description": "\*zigate\*",
> "known\_devices": \[
> "ZiGate"
> \]
> },
> {
> "vid": "10C4",
> "pid": "8B34",
> "description": "\*bv 2010/10\*",
> "known\_devices": \[
> "Bitron Video AV2010/10"
> \]
> }
> \],
> "zeroconf": \[
> {
> "type": "\_esphomelib.\_tcp.local.",
> "name": "tube\*"
> },
> {
> "type": "\_zigate-zigbee-gateway.\_tcp.local.",
> "name": "\*zigate\*"
> },
> {
> "type": "\_zigstar\_gw.\_tcp.local.",
> "name": "\*zigstar\*"
> },
> {
> "type": "\_uzg-01.\_tcp.local.",
> "name": "uzg-01\*"
> },
> {
> "type": "\_slzb-06.\_tcp.local.",
> "name": "slzb-06\*"
> },
> {
> "type": "\_xzg.\_tcp.local.",
> "name": "xzg\*"
> },
> {
> "type": "\_czc.\_tcp.local.",
> "name": "czc\*"
> }
> \],
> "is\_built\_in": true,
> "overwrites\_built\_in": false
> },
> "setup\_times": {
> "null": {
> "setup": 9.081605821847916e-05
> },
> "01J2KNBP7SN295GGS0KQ2V5H58": {
> "wait\_import\_platforms": -0.029656579019501805,
> "wait\_base\_component": -0.001775671960785985,
> "config\_entry\_setup": 12.813472521025687
> }
> },
> "data": {
> "ieee": "\*\*REDACTED\*\*",
> "nwk": 60937,
> "manufacturer": "SONOFF",
> "model": "ZBMINIR2",
> "name": "SONOFF ZBMINIR2",
> "quirk\_applied": true,
> "quirk\_class": "zigpy.quirks.v2.CustomDeviceV2",
> "quirk\_id": null,
> "manufacturer\_code": 4742,
> "power\_source": "Mains",
> "lqi": null,
> "rssi": null,
> "last\_seen": "2024-12-03T16:49:13",
> "available": true,
> "device\_type": "Router",
> "signature": {
> "node\_descriptor": {
> "logical\_type": 1,
> "complex\_descriptor\_available": 0,
> "user\_descriptor\_available": 0,
> "reserved": 0,
> "aps\_flags": 0,
> "frequency\_band": 8,
> "mac\_capability\_flags": 142,
> "manufacturer\_code": 4742,
> "maximum\_buffer\_size": 82,
> "maximum\_incoming\_transfer\_size": 255,
> "server\_mask": 11264,
> "maximum\_outgoing\_transfer\_size": 255,
> "descriptor\_capability\_field": 0
> },
> "endpoints": {
> "1": {
> "profile\_id": "0x0104",
> "device\_type": "0x0002",
> "input\_clusters": \[
> "0x0000",
> "0x0003",
> "0x0004",
> "0x0006",
> "0x0b05",
> "0xfc11",
> "0xfc57"
> \],
> "output\_clusters": \[
> "0x0003",
> "0x0006",
> "0x0019"
> \]
> },
> "242": {
> "profile\_id": "0xa1e0",
> "device\_type": "0x0061",
> "input\_clusters": \[\],
> "output\_clusters": \[
> "0x0021"
> \]
> }
> },
> "manufacturer": "SONOFF",
> "model": "ZBMINIR2"
> },
> "active\_coordinator": false,
> "entities": \[
> {
> "entity\_id": "binary\_sensor.sonoff\_zbminir2\_opening",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "button.sonoff\_zbminir2\_identify",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "select.sonoff\_zbminir2\_external\_trigger\_mode",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "switch.sonoff\_zbminir2\_switch",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "switch.sonoff\_zbminir2\_turbo\_mode",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "switch.sonoff\_zbminir2\_detach\_relay",
> "name": "SONOFF ZBMINIR2"
> },
> {
> "entity\_id": "update.sonoff\_zbminir2\_firmware",
> "name": "SONOFF ZBMINIR2"
> }
> \],
> "neighbors": \[\],
> "routes": \[
> {
> "dest\_nwk": "0x0000",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0x74D8"
> },
> {
> "dest\_nwk": "0xDA0D",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0xDA0D"
> },
> {
> "dest\_nwk": "0x2E3D",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0x2E3D"
> },
> {
> "dest\_nwk": "0xB721",
> "route\_status": "Active",
> "memory\_constrained": false,
> "many\_to\_one": false,
> "route\_record\_required": false,
> "next\_hop": "0xB721"
> }
> \],
> "endpoint\_names": \[
> {
> "name": "ON\_OFF\_OUTPUT"
> },
> {
> "name": "PROXY\_BASIC"
> }
> \],
> "user\_given\_name": null,
> "device\_reg\_id": "fabba91b96619b3616cb1a83d63f4ab8",
> "area\_id": null,
> "cluster\_details": {
> "1": {
> "device\_type": {
> "name": "ON\_OFF\_OUTPUT",
> "id": 2
> },
> "profile\_id": 260,
> "in\_clusters": {
> "0x0000": {
> "endpoint\_attribute": "basic",
> "attributes": {
> "0x0013": {
> "attribute": "ZCLAttributeDef(id=0x0013, name='alarm\_mask', type=\<flag 'AlarmMask'\>, zcl\_type=\<DataTypeId.map8: 24\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0001": {
> "attribute": "ZCLAttributeDef(id=0x0001, name='app\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0006": {
> "attribute": "ZCLAttributeDef(id=0x0006, name='date\_code', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0012": {
> "attribute": "ZCLAttributeDef(id=0x0012, name='device\_enabled', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0014": {
> "attribute": "ZCLAttributeDef(id=0x0014, name='disable\_local\_config', type=\<flag 'DisableLocalConfig'\>, zcl\_type=\<DataTypeId.map8: 24\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0008": {
> "attribute": "ZCLAttributeDef(id=0x0008, name='generic\_device\_class', type=\<enum 'GenericDeviceClass'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0009": {
> "attribute": "ZCLAttributeDef(id=0x0009, name='generic\_device\_type', type=\<enum 'GenericLightingDeviceType'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0003": {
> "attribute": "ZCLAttributeDef(id=0x0003, name='hw\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0010": {
> "attribute": "ZCLAttributeDef(id=0x0010, name='location\_desc', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0004": {
> "attribute": "ZCLAttributeDef(id=0x0004, name='manufacturer', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": "SONOFF"
> },
> "0x000c": {
> "attribute": "ZCLAttributeDef(id=0x000C, name='manufacturer\_version\_details', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0005": {
> "attribute": "ZCLAttributeDef(id=0x0005, name='model', type=\<class 'zigpy.types.basic.LimitedCharString.\<locals\>.LimitedCharString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": "ZBMINIR2"
> },
> "0x0011": {
> "attribute": "ZCLAttributeDef(id=0x0011, name='physical\_env', type=\<enum 'PhysicalEnvironment'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0007": {
> "attribute": "ZCLAttributeDef(id=0x0007, name='power\_source', type=\<enum 'PowerSource'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000a": {
> "attribute": "ZCLAttributeDef(id=0x000A, name='product\_code', type=\<class 'zigpy.types.basic.LVBytes'\>, zcl\_type=\<DataTypeId.octstr: 65\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000e": {
> "attribute": "ZCLAttributeDef(id=0x000E, name='product\_label', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000b": {
> "attribute": "ZCLAttributeDef(id=0x000B, name='product\_url', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000d": {
> "attribute": "ZCLAttributeDef(id=0x000D, name='serial\_number', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0002": {
> "attribute": "ZCLAttributeDef(id=0x0002, name='stack\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4000": {
> "attribute": "ZCLAttributeDef(id=0x4000, name='sw\_build\_id', type=\<class 'zigpy.types.basic.CharacterString'\>, zcl\_type=\<DataTypeId.string: 66\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='zcl\_version', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0003": {
> "endpoint\_attribute": "identify",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='identify\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0004": {
> "endpoint\_attribute": "groups",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='name\_support', type=\<flag 'NameSupport'\>, zcl\_type=\<DataTypeId.map8: 24\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0006": {
> "endpoint\_attribute": "on\_off",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4000": {
> "attribute": "ZCLAttributeDef(id=0x4000, name='global\_scene\_control', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4002": {
> "attribute": "ZCLAttributeDef(id=0x4002, name='off\_wait\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='on\_off', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Report|Scene: 25\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4001": {
> "attribute": "ZCLAttributeDef(id=0x4001, name='on\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4003": {
> "attribute": "ZCLAttributeDef(id=0x4003, name='start\_up\_on\_off', type=\<enum 'StartUpOnOff'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0b05": {
> "endpoint\_attribute": "diagnostic",
> "attributes": {
> "0x0116": {
> "attribute": "ZCLAttributeDef(id=0x0116, name='aps\_decrypt\_failures', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0113": {
> "attribute": "ZCLAttributeDef(id=0x0113, name='aps\_fc\_failure', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0106": {
> "attribute": "ZCLAttributeDef(id=0x0106, name='aps\_rx\_bcast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0108": {
> "attribute": "ZCLAttributeDef(id=0x0108, name='aps\_rx\_ucast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0107": {
> "attribute": "ZCLAttributeDef(id=0x0107, name='aps\_tx\_bcast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010b": {
> "attribute": "ZCLAttributeDef(id=0x010B, name='aps\_tx\_ucast\_fail', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010a": {
> "attribute": "ZCLAttributeDef(id=0x010A, name='aps\_tx\_ucast\_retry', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0109": {
> "attribute": "ZCLAttributeDef(id=0x0109, name='aps\_tx\_ucast\_success', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0114": {
> "attribute": "ZCLAttributeDef(id=0x0114, name='aps\_unauthorized\_key', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011b": {
> "attribute": "ZCLAttributeDef(id=0x011B, name='average\_mac\_retry\_per\_aps\_message\_sent', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0111": {
> "attribute": "ZCLAttributeDef(id=0x0111, name='child\_moved', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0110": {
> "attribute": "ZCLAttributeDef(id=0x0110, name='join\_indication', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011c": {
> "attribute": "ZCLAttributeDef(id=0x011C, name='last\_message\_lqi', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011d": {
> "attribute": "ZCLAttributeDef(id=0x011D, name='last\_message\_rssi', type=\<class 'zigpy.types.basic.int8s'\>, zcl\_type=\<DataTypeId.int8: 40\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0100": {
> "attribute": "ZCLAttributeDef(id=0x0100, name='mac\_rx\_bcast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0102": {
> "attribute": "ZCLAttributeDef(id=0x0102, name='mac\_rx\_ucast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0101": {
> "attribute": "ZCLAttributeDef(id=0x0101, name='mac\_tx\_bcast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0103": {
> "attribute": "ZCLAttributeDef(id=0x0103, name='mac\_tx\_ucast', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0105": {
> "attribute": "ZCLAttributeDef(id=0x0105, name='mac\_tx\_ucast\_fail', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0104": {
> "attribute": "ZCLAttributeDef(id=0x0104, name='mac\_tx\_ucast\_retry', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010d": {
> "attribute": "ZCLAttributeDef(id=0x010D, name='neighbor\_added', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010e": {
> "attribute": "ZCLAttributeDef(id=0x010E, name='neighbor\_removed', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010f": {
> "attribute": "ZCLAttributeDef(id=0x010F, name='neighbor\_stale', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='number\_of\_resets', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0115": {
> "attribute": "ZCLAttributeDef(id=0x0115, name='nwk\_decrypt\_failures', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0112": {
> "attribute": "ZCLAttributeDef(id=0x0112, name='nwk\_fc\_failure', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0117": {
> "attribute": "ZCLAttributeDef(id=0x0117, name='packet\_buffer\_allocate\_failures', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x011a": {
> "attribute": "ZCLAttributeDef(id=0x011A, name='packet\_validate\_drop\_count', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0001": {
> "attribute": "ZCLAttributeDef(id=0x0001, name='persistent\_memory\_writes', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0119": {
> "attribute": "ZCLAttributeDef(id=0x0119, name='phy\_to\_mac\_queue\_limit\_reached', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0118": {
> "attribute": "ZCLAttributeDef(id=0x0118, name='relayed\_ucast', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x010c": {
> "attribute": "ZCLAttributeDef(id=0x010C, name='route\_disc\_initiated', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0xfc57": {
> "endpoint\_attribute": "manufacturer\_specific",
> "attributes": {},
> "unsupported\_attributes": \[\]
> },
> "0xfc11": {
> "endpoint\_attribute": null,
> "attributes": {
> "0x0017": {
> "attribute": "ZCLAttributeDef(id=0x0017, name='detach\_relay', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Write|Report: 11\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0016": {
> "attribute": "ZCLAttributeDef(id=0x0016, name='external\_trigger\_mode', type=\<class 'zigpy.types.basic.uint8\_t'\>, zcl\_type=\<DataTypeId.uint8: 32\>, access=\<ZCLAttributeAccess.Read|Write|Report: 11\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0012": {
> "attribute": "ZCLAttributeDef(id=0x0012, name='turbo\_mode', type=\<class 'zigpy.types.basic.int16s'\>, zcl\_type=\<DataTypeId.int16: 41\>, access=\<ZCLAttributeAccess.Read|Write|Report: 11\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> }
> },
> "out\_clusters": {
> "0x0003": {
> "endpoint\_attribute": "identify",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='identify\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0006": {
> "endpoint\_attribute": "on\_off",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4000": {
> "attribute": "ZCLAttributeDef(id=0x4000, name='global\_scene\_control', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4002": {
> "attribute": "ZCLAttributeDef(id=0x4002, name='off\_wait\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='on\_off', type=\<enum 'Bool'\>, zcl\_type=\<DataTypeId.bool\_: 16\>, access=\<ZCLAttributeAccess.Read|Report|Scene: 25\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4001": {
> "attribute": "ZCLAttributeDef(id=0x4001, name='on\_time', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x4003": {
> "attribute": "ZCLAttributeDef(id=0x4003, name='start\_up\_on\_off', type=\<enum 'StartUpOnOff'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read|Write: 3\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> },
> "0x0019": {
> "endpoint\_attribute": "ota",
> "attributes": {
> "0xfffd": {
> "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster\_revision', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0002": {
> "attribute": "ZCLAttributeDef(id=0x0002, name='current\_file\_version', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0003": {
> "attribute": "ZCLAttributeDef(id=0x0003, name='current\_zigbee\_stack\_version', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0004": {
> "attribute": "ZCLAttributeDef(id=0x0004, name='downloaded\_file\_version', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0005": {
> "attribute": "ZCLAttributeDef(id=0x0005, name='downloaded\_zigbee\_stack\_version', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0001": {
> "attribute": "ZCLAttributeDef(id=0x0001, name='file\_offset', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000a": {
> "attribute": "ZCLAttributeDef(id=0x000A, name='image\_stamp', type=\<class 'zigpy.types.basic.uint32\_t'\>, zcl\_type=\<DataTypeId.uint32: 35\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0008": {
> "attribute": "ZCLAttributeDef(id=0x0008, name='image\_type\_id', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0006": {
> "attribute": "ZCLAttributeDef(id=0x0006, name='image\_upgrade\_status', type=\<enum 'ImageUpgradeStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0007": {
> "attribute": "ZCLAttributeDef(id=0x0007, name='manufacturer\_id', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0009": {
> "attribute": "ZCLAttributeDef(id=0x0009, name='minimum\_block\_req\_delay', type=\<class 'zigpy.types.basic.uint16\_t'\>, zcl\_type=\<DataTypeId.uint16: 33\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0xfffe": {
> "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting\_status', type=\<enum 'AttributeReportingStatus'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000b": {
> "attribute": "ZCLAttributeDef(id=0x000B, name='upgrade\_activation\_policy', type=\<enum 'UpgradeActivationPolicy'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x0000": {
> "attribute": "ZCLAttributeDef(id=0x0000, name='upgrade\_server\_id', type=\<class 'zigpy.types.named.EUI64'\>, zcl\_type=\<DataTypeId.EUI64: 240\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=True, is\_manufacturer\_specific=False)",
> "value": null
> },
> "0x000c": {
> "attribute": "ZCLAttributeDef(id=0x000C, name='upgrade\_timeout\_policy', type=\<enum 'UpgradeTimeoutPolicy'\>, zcl\_type=\<DataTypeId.enum8: 48\>, access=\<ZCLAttributeAccess.Read: 1\>, mandatory=False, is\_manufacturer\_specific=False)",
> "value": null
> }
> },
> "unsupported\_attributes": \[\]
> }
> }
> },
> "242": {
> "device\_type": {
> "name": "PROXY\_BASIC",
> "id": 97
> },
> "profile\_id": 41440,
> "in\_clusters": {},
> "out\_clusters": {
> "0x0021": {
> "endpoint\_attribute": "green\_power",
> "attributes": {},
> "unsupported\_attributes": \[\]
> }
> }
> }
> }
> }
> }
> \`\`\`
> 
> \</details\>
> 
> 
> \### Logs
> 
> \<details\>\<summary\>Logs\</summary\>
> 
> \`\`\`python
> \[Paste the logs here\]
> \`\`\`
> 
> \</details\>
> 
> 
> \### Additional information
> 
> \_No response\_

[Previous page](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511.md?page=2)

[Next page](https://forum.ewelink.cc/t/ha-over-ihost-open-source-project-is-officially-live/164511.md?page=4)
