ZHA Zigbee Tested Devices...Please add your device results

Hi All,

Hoping for some help. Just got a set of 10 Ecolink 4655BC0-R door/window sensors with temporary monitoring. Looks like the sort from the isn’t exactly correctly and Home Assistants (ZHA) isn’t polling it correctly or something. Attached is the log from it being added to the zha network. There is an area where it is trying to consider it different sensor types, and fails since it doesn’t know how to class it. Ultimately, it shows up as a door, battery and temperature sensor. The battery is a ?, the door registers as closed always and the temperature doesn’t seem to update.

Going into manage cluster, selecting IasZone and then Zone Status gets it to update if the door is open or closed, but it doesn’t seem to do this automatically. Additionally, monitoring zha events doesn’t show it sending signals. But if I pull the battery and reinsert it, I have to readd it to the network, so I assume it isn’t fully joined correctly. I emailed Ecolink and they say they only test and officially support Smartthings. I have tried to pair to my Abode hub and it reports only as a temperature sensor. Is there any way to get this sensor setup as a class so that zha recognizes?

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x0000](ConBee II): started initialization
[0x0000:ZDO](ConBee II): 'async_initialize' stage succeeded
[0x0000](ConBee II): power source: Mains
[0x0000](ConBee II): completed initialization
[0x8209:1:0x0020] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=64 command_id=0>
[0x8209:1:0x0020] ZCL request 0x0000: []
[0x8209:1:0x0020] No handler for cluster command 0
[0x8209:1:0x0020]: Received 64 tsn command 'checkin': []
[0x8209] Extending timeout for 0x40 request
[0x8209:1:0x0020] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=64 command_id=Command.Default_Response>
[0x8209:1:0x0020]: executed 'checkin_response' command with args: '(True, 8)' kwargs: '{'tsn': 64}' result: [0, <Status.SUCCESS: 0>]
[0x8209] Extending timeout for 0xea request
[0x8209:1:0x0020] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=234 command_id=Command.Default_Response>
[0x8209:1:0x0020]: executed 'set_long_poll_interval' command with args: '(24,)' kwargs: '{}' result: [2, <Status.SUCCESS: 0>]
Device 0x81db (00:0d:6f:00:11:15:a8:7f) joined the network
[0x81db:zdo] ZDO request ZDOCmd.Device_annce: [0x81db, 00:0d:6f:00:11:15:a8:7f, 128]
[0x81db] Requesting 'Node Descriptor'
Tries remaining: 2
[0x81db] Extending timeout for 0xec request
[0x81db] Node Descriptor: <Optional byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4335 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=0 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
[0x81db] Discovering endpoints
Tries remaining: 3
[0x81db] Extending timeout for 0xee request
[0x81db] Discovered endpoints: [1]
[0x81db:1] Discovering endpoint information
Tries remaining: 3
[0x81db] Extending timeout for 0xf0 request
[0x81db:1] Discovered endpoint information: <Optional endpoint=1 profile=260 device_type=1026 device_version=0 input_clusters=[0, 1, 3, 32, 1026, 1280, 2821] output_clusters=[25]>
[0x81db] Extending timeout for 0xf2 request
[0x81db:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=242 command_id=Command.Read_Attributes_rsp>
[0x81db:1] Manufacturer: Ecolink
[0x81db:1] Model: 4655BC0-R
Checking quirks for Ecolink 4655BC0-R (00:0d:6f:00:11:15:a8:7f)
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1}
Considering <class 'zhaquirks.lutron.lzl4bwhl01remote.LutronLZL4BWHL01Remote2'>
Fail because profile_id mismatch on at least one endpoint
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because input cluster mismatch on at least one endpoint
Considering <class 'zhaquirks.osram.a19twhite.A19TunableWhite'>
Fail because endpoint list mismatch: {3} {1}
Considering <class 'zhaquirks.philips.rom001.PhilipsROM001'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.philips.rwl020.PhilipsRWL020'>
Fail because endpoint list mismatch: {1, 2} {1}
Considering <class 'zhaquirks.philips.rwl021.PhilipsRWL021'>
Fail because endpoint list mismatch: {1, 2} {1}
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because input cluster mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor'>
Fail because input cluster mismatch on at least one endpoint
device - 0x81db:00:0d:6f:00:11:15:a8:7f entering async_device_initialized - is_new_join: True
device - 0x81db:00:0d:6f:00:11:15:a8:7f has joined the ZHA zigbee network
[0x81db](4655BC0-R): started configuration
[0x81db:ZDO](4655BC0-R): 'async_configure' stage succeeded
[0x81db] Extending timeout for 0xf4 request
[0x81db] Extending timeout for 0xf6 request
[0x81db] Extending timeout for 0xf8 request
[0x81db:1:0x0001]: bound 'power' cluster: Status.SUCCESS
[0x81db] Extending timeout for 0xfa request
[0x81db:1:0x0020] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=246 command_id=Command.Write_Attributes_rsp>
[0x81db:1:0x0020]: 3300.0s check-in interval set: [[<WriteAttributesStatusRecord status=Status.SUCCESS>]]
[0x81db] Extending timeout for 0xfc request
[0x81db:1:0x0500] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=248 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0500]: started IASZoneChannel configuration
[0x81db] Extending timeout for 0xfe request
[0x81db:1:0x0001] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=250 command_id=Command.Configure_Reporting_rsp>
[0x81db:1:0x0001]: reporting 'battery_voltage' attr on 'power' cluster: 3600/10800/1: Result: '[[<ConfigureReportingResponseRecord status=Status.SUCCESS>]]'
[0x81db] Extending timeout for 0x00 request
[0x81db:1:0x0020]: bound 'poll_control' cluster: Status.SUCCESS
[0x81db:1:0x0020]: finished channel configuration
[0x81db] Extending timeout for 0x02 request
[0x81db:1:0x0500]: bound 'ias_zone' cluster: Status.SUCCESS
[0x81db] Extending timeout for 0x04 request
[0x81db:1:0x0000]: bound 'basic' cluster: Status.SUCCESS
[0x81db:1:0x0000]: finished channel configuration
[0x81db] Extending timeout for 0x06 request
[0x81db:1:0x0001] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=0 command_id=Command.Configure_Reporting_rsp>
[0x81db:1:0x0001]: reporting 'battery_percentage_remaining' attr on 'power' cluster: 3600/10800/1: Result: '[[<ConfigureReportingResponseRecord status=Status.UNSUPPORTED_ATTRIBUTE direction=ReportingDirection.SendReports attrid=33>]]'
[0x81db:1:0x0001]: finished channel configuration
[0x81db] Extending timeout for 0x08 request
[0x81db:1:0x0500] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=4 command_id=Command.Write_Attributes_rsp>
[0x81db:1:0x0500]: wrote cie_addr: 00:21:2e:ff:ff:05:46:83 to 'ias_zone' cluster: [<WriteAttributesStatusRecord status=Status.SUCCESS>]
[0x81db:1:0x0500]: finished IASZoneChannel configuration
[0x81db] Extending timeout for 0x0a request
[0x81db:1:0x0402]: bound 'temperature' cluster: Status.SUCCESS
[0x81db] Extending timeout for 0x0c request
[0x81db:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=6 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0000]: initializing channel: from_cache: False
[0x81db:1:0x0019]: bound 'ota' cluster: Status.SUCCESS
[0x81db:1:0x0019]: finished channel configuration
[0x81db:1:0x0402] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=12 command_id=Command.Configure_Reporting_rsp>
[0x81db:1:0x0402]: reporting 'measured_value' attr on 'temperature' cluster: 30/900/50: Result: '[[<ConfigureReportingResponseRecord status=Status.SUCCESS>]]'
[0x81db:1:0x0402]: finished channel configuration
[0x81db:1:0x0001]: 'async_configure' stage succeeded
[0x81db:1:0x0020]: 'async_configure' stage succeeded
[0x81db:1:0x0500]: 'async_configure' stage succeeded
[0x81db:1:0x0000]: 'async_configure' stage succeeded
[0x81db:1:0x0402]: 'async_configure' stage succeeded
[0x81db:1:0x0019]: 'async_configure' stage succeeded
[0x81db](4655BC0-R): completed configuration
[0x81db](4655BC0-R): stored in registry: ZhaDeviceEntry(name='Ecolink 4655BC0-R', ieee='00:0d:6f:00:11:15:a8:7f', last_seen=1594575295.8561785)
[0x81db] Extending timeout for 0x0e request
[0x81db:1:0x0003] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=14 command_id=Command.Default_Response>
[0x81db:1:0x0003]: executed 'trigger_effect' command with args: '(2, 0)' kwargs: '{}' result: [64, <Status.UNSUP_CLUSTER_COMMAND: 129>]
[0x81db](4655BC0-R): started initialization
[0x81db:ZDO](4655BC0-R): 'async_initialize' stage succeeded
[0x81db] Extending timeout for 0x10 request
[0x81db:1:0x0020]: initializing channel: from_cache: False
[0x81db] Extending timeout for 0x12 request
[0x81db] Extending timeout for 0x14 request
[0x81db:1:0x0001] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=16 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0001]: initializing channel: from_cache: False
[0x81db] Extending timeout for 0x16 request
[0x81db:1:0x0500] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=18 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0500]: initializing channel: from_cache: False
[0x81db:1:0x0402]: initializing channel: from_cache: False
[0x81db] Extending timeout for 0x18 request
[0x81db:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=20 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0000]: initializing channel: from_cache: False
[0x81db:1:0x0019]: initializing channel: from_cache: False
[0x81db:1:0x0001] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=22 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0402] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=24 command_id=Command.Read_Attributes_rsp>
[0x81db:1:0x0001]: 'async_initialize' stage succeeded
[0x81db:1:0x0020]: 'async_initialize' stage succeeded
[0x81db:1:0x0500]: 'async_initialize' stage succeeded
[0x81db:1:0x0000]: 'async_initialize' stage succeeded
[0x81db:1:0x0402]: 'async_initialize' stage succeeded
[0x81db:1:0x0019]: 'async_initialize' stage succeeded
[0x81db](4655BC0-R): power source: Battery or Unknown
[0x81db](4655BC0-R): completed initialization
[0x81db:zdo] ZDO request ZDOCmd.Match_Desc_req: [0xfffd, 260, [25], []]
[0x81db:1:0x0019] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=False> manufacturer=None tsn=5 command_id=1>
[0x81db:1:0x0019] ZCL request 0x0001: [1, 4335, 5, 538315041, 1]
[0x81db:1:0x0019] OTA query_next_image handler for 'Ecolink 4655BC0-R': field_control=1, manufacture_id=4335, image_type=5, current_file_version=538315041, hardware_version=1
[0x81db:1:0x0019] No OTA image is available
2 Likes

is there way to know if a device is end-device or also acts as repeater in the zigbee network?

is there way to know if a device is end-device or also acts as repeater in the zigbee network?

Yes, I find zha_map (custom component) very handy for this. It generates a text file for the coordinator and each router. In the file, are the neighboring devices each router sees, including End Devices. The generated files get saved to a directory named “neighbours” every few hours (you can also call a service to have the files built on-demand). If you have the standard HA setup, the neighbours dir is in the same dir as configuration.yaml.

$ less neighbours/neighbours_00124b0010123456.txt

    "device_type": "Router",
...
    "lqi": 166,
    "manufacturer": "LUMI",
...
    "neighbours": [
...
            "depth": 0,
            "device_type": "Coordinator",
...
            "lqi": 5,
            "manufacturer": "dresden elektronik",
            "model": "ConBee II",
...
            "depth": 2,
            "device_type": "End_Device",
...
            "lqi": 31,
            "manufacturer": "LUMI",
            "model": "lumi.vibration.aq1",

You are supposed to use the text files to generate a graphical map, but I just use the files alone. Does what I need.

1 Like

thanks! will try that out.

Hi I’ve added Sinope zigbee devices to HA via Elelabs usb dongle. It works great but I have a small proble. My Sinope dimmer are seen as switch. Is it possible to change device type so my dimmer is seen as a dimmer. Should I go via zha-device-handlers

A couple of Things.
Wyze Locks, ZHA compatible, fully working as expected.

My Guide for integrating Wyze Locks with Zigbee Home Assistant (ZHA)
image

This thread should probably be binned? idk, seems like a thread with a checks notes 250+ minute read time is a bit ooc.

Lastly, I love the ZHA map

Cheers

1 Like

search this topic. it was discussed a couple of times on how to override the device type. Wouldn’t require zha-device-handler changes. can you post the zigbee infromarion from zha integration device ?

Thank you for this but meanwhyle my Elelabs USB just busted I can’t set it up any more. I’ve to solve that isue first Than I’ll post my zigbee information. This is what I’ve found previously:

{
    "device_type": "Coordinator",
    "ieee": "cc:cc:cc:ff:fe:a5:f0:90",
    "lqi": 252,
    "manufacturer": "Silicon Labs",
    "model": "EZSP",
    "neighbours": [
        {
            "depth": 15,
            "device_type": "Router",
            "ieee": "00:0d:6f:00:15:66:1e:36",
            "lqi": 72,
            "manufacturer": "Sinope Technologies",
            "model": "SP2600ZB",
            "new_joins_accepted": "Unknown",
            "nwk": "0xa5ca",
            "offline": false,
            "pan_id": "4b:9c:a6:a4:03:ce:46:14",
            "relation": "Sibling",
            "rx_on_when_idle": "On",
            "supported": true
        },
        {
            "depth": 15,
            "device_type": "Router",
            "ieee": "50:0b:91:40:00:01:f5:77",
            "lqi": 183,
            "manufacturer": "Sinope Technologies",
            "model": "DM2500ZB",
            "new_joins_accepted": "Unknown",
            "nwk": "0x0d3b",
            "offline": false,
            "pan_id": "4b:9c:a6:a4:03:ce:46:14",
            "relation": "Sibling",
            "rx_on_when_idle": "On",
            "supported": true
        }
    ],
    "nwk": "0x0000",
    "offline": false
}

the dimmer is DM2500ZB

nah, you need to go to Config -> Integrations -> ZHA -> Devices, Pick the dimmer -> Zigbee Information. I need to see the device type reported by the endpoint

As I said my zha is no longer working as my USB Elelabs is not working properly. I need to reinstall ZHA but it keep telling me that it cannot connect to /dev/ttyUSB0
The devices was reported as a switch instead of a dimmer or ligth

I think I’ve found out why my Elelabs do not work
ther is no symlink between /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 and /dev/ttyUSB0

it should look like this when I do ls -l /dev/serial/by-id
usb-1a86_USB2.0-Serial-if00-port0 -> ../../ttyUSB0
but i get only
usb-1a86_USB2.0-Serial-if00-port0
How could I create that symlink

Super excited to see the ZHA group support for Hue bulbs in 113. I pulled my color lights and strips back off of HUE for testing. I can report groups work great as expected, Report status of being on, color changes, etc. One thing I did notice, and not sure if its a bug. If I change color of bulbs individually, it reports correctly. If I then change the color or brightness of a group, the group updates, but the individual lights to not update their state/color/brightness.

In my case I have two light strips. For some scenes they are set to the same color and brightness, and I enjoy it when then both change at the same time. But in other scenes they set to different colors, levels. So the UI fails to update individual lights if they are set by the group.

Edit: I take that back. The brightness reports correctly either scenario (group or individual), but color does not report back to HA correctly when changed via a group. Both the group and the individual lights are wrong

Edit2: Final status. When setting color and brightness via zha.group of hue lights. The colors change, the brightness changes correctly. The brightness is reported correctly,but the color does not update in HA. The color does change on the lights though.

Finally with the update to HA 0.113.0 Elelabs is back
My config for the dimmer is this

{
  "node_descriptor": "<NodeDescriptor byte1=17 byte2=64 mac_capability_flags=142 manufacturer_code=4508 maximum_buffer_size=71 maximum_incoming_transfer_size=43 server_mask=10752 maximum_outgoing_transfer_size=43 descriptor_capability_field=0>",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0104",
      "in_clusters": [
        "0x0000",
        "0x0002",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0702",
        "0x0b05",
        "0xff01"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0019"
      ]
    }
  },
  "manufacturer": "Sinope Technologies",
  "model": "DM2500ZB",
  "class": "zigpy.device.Device"
}

This is what I have for light switch. It is also seenas a switch, not a light

{
  "node_descriptor": "<Optional byte1=17 byte2=64 mac_capability_flags=142 manufacturer_code=4508 maximum_buffer_size=71 maximum_incoming_transfer_size=43 server_mask=10752 maximum_outgoing_transfer_size=43 descriptor_capability_field=0>",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0103",
      "in_clusters": [
        "0x0000",
        "0x0002",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0702",
        "0x0b05",
        "0xff01"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0019"
      ]
    }
  },
  "manufacturer": "Sinope Technologies",
  "model": "SW2500ZB",
  "class": "zigpy.device.Device"
}

Where can we get all devices type

I was expecting better from Sinope. Device Types 0x0103 and 0x0104 from HA profile are for On/Off Switch and for Dimmer switch devices, which are supposed to be the remotes, as those device types are supposed to generate on/off and level control commands.
You would need to override device using configuration.yaml Search this thread, as this information was posted here a few times.

Ok thank you I’ll search for that

This is the behaviour I’m seeing too I’m sure this could be solved with software but not sure where to put a GitHub issue on this to.

Created a GitHub issue here:

2 Likes

What are the device type that should be used for Sinopé light and dimmer if it’s not 0x0103 and 0x0104. Should we use 0x0100 and 0x0101. I think that those are for just light bulb and dimmable light bulb. If so I can make a zhaquirks for those two

How do I locally test my zhaquirks for Sinopé light and dimmer. Should I just copy my file light.py to

/config/deps/lib/python3.7/site-packages/zhaquirks/sinope

I’m on Hassio

I haven’t tried like this. Usually was just getting Hass os SSH dev access and from there was getting a shell inside the HA container docker exec -ti homeassistant /bin/bash