Git Product home page Git Product logo

zha-device-handlers's Introduction

zigpy

Build Coverage Status

zigpy is a hardware independent Zigbee protocol stack integration project to implement Zigbee standard specifications as a Python 3 library.

Zigbee integration via zigpy allows you to connect one of many off-the-shelf Zigbee Coordinator adapters using one of the available Zigbee radio library modules compatible with zigpy to control Zigbee based devices. There is currently support for controlling Zigbee device types such as binary sensors (e.g., motion and door sensors), sensors (e.g., temperature sensors), lights, switches, buttons, covers, fans, climate control equipment, locks, and intruder alarm system devices. Note that Zigbee Green Power devices currently are unsupported.

Zigbee stacks and hardware from many different hardware chip manufacturers are supported via radio libraries which translate their proprietary communication protocol into a common API which is shared among all radio libraries for zigpy. If some Zigbee stack or Zigbee Coordinator hardware for other manufacturers is not supported by yet zigpy it is possible for any independent developer to step-up and develop a new radio library for zigpy which translates its proprietary communication protocol into the common API that zigpy can understand.

zigpy contains common code implementing ZCL (Zigbee Cluster Library) and ZDO (Zigbee Device Object) application state management which is being used by various radio libraries implementing the actual interface with the radio modules from different manufacturers. The separate radio libraries interface with radio hardware adapters/modules over USB and GPIO using different native UART serial protocols.

The ZHA integration component for Home Assistant, the Zigbee Plugin for Domoticz, and the Zigbee Plugin for Jeedom (competing open-source home automation software) are all using zigpy libraries as dependencies, as such they could be used as references of different implementations if looking to integrate a Zigbee solution into your application.

Zigbee device OTA updates

zigpy have ability to download and perform Zigbee OTAU (Over-The-Air Updates) of Zigbee devices firmware. The Zigbee OTA update firmware image files should conform to standard Zigbee OTA format and OTA provider source URLs need to be published for public availability. Updates from a local OTA update directory also is also supported and can be used as an option for offline firmware updates if user provide correct Zigbee OTA formatted firmware files themselves.

Support for automatic download from existing online OTA providers in zigpy OTA provider code is currently only available for IKEA, Inovelli, LEDVANCE/OSRAM, SALUS/Computime, and SONOFF/ITEAD devices. Support for additional OTA providers for other manufacturers devices could be added to zigpy in the future, if device manufacturers publish their firmware images publicly and developers contribute the needed download code for them.

How to install and test, report bugs, or contribute to this project

For specific instructions on how-to install and test zigpy or contribute bug-reports and code to this project please see the guidelines in the CONTRIBUTING.md file:

This CONTRIBUTING.md file will contain information about using zigpy, testing new releases, troubleshooting and bug-reporting as, as well as library + code instructions for developers and more. This file also contain short summaries and links to other related projects that directly or indirectly depends in zigpy libraries.

You can contribute to this project either as an end-user, a tester (advanced user contributing constructive issue/bug-reports) or as a developer contributing code.

Compatible Zigbee coordinator hardware

Radio libraries for zigpy are separate projects with their own repositories and include bellows (for communicating with Silicon Labs EmberZNet based radios), zigpy-deconz (for communicating with deCONZ based radios from Dresden Elektronik), and zigpy-xbee (for communicating with XBee based Zigbee radios), zigpy-zigate for communicating with ZiGate based radios, zigpy-znp or zigpy-cc for communicating with Texas Instruments based radios that have Z-Stack ZNP coordinator firmware.

Note! Zigbee 3.0 support or not in zigpy depends primarily on your Zigbee coordinator hardware and its firmware. Some Zigbee coordinator hardware support Zigbee 3.0 but might be shipped with an older firmware which does not, in which case may want to upgrade the firmware manually yourself. Some other Zigbee coordinator hardware may not support a firmware that is capable of Zigbee 3.0 at all but can still be fully functional and feature complete for your needs, (this is very common as many if not most Zigbee devices do not yet Zigbee 3.0 or are backwards-compable with a Zigbee profile that is support by your Zigbee coordinator hardware and its firmware). As a general rule, newer Zigbee coordinator hardware released can normally support Zigbee 3.0 firmware and it is up to its manufacturer to make such firmware available for them.

Compatible zigpy radio libraries

  • Digi XBee based Zigbee radios via the zigpy-xbee library for zigpy.
  • dresden elektronik deCONZ based Zigbee radios via the zigpy-deconz library for zigpy.
  • Silicon Labs (EmberZNet) based Zigbee radios using the EZSP protocol via the bellows library for zigpy.
  • Texas Instruments based Zigbee radios with all compatible Z-Stack firmware via the zigpy-znp library for zigpy.
  • ZiGate based ZigBee radios via the zigpy-zigate library for zigpy.

Legacy or obsolete zigpy radio libraries

  • Texas Instruments with Z-Stack legacy firmware via the zigpy-cc library for zigpy.

Release packages available via PyPI

New packages of tagged versions are also released via the "zigpy" project on PyPI

Older packages of tagged versions are still available on the "zigpy-homeassistant" project on PyPI

Packages of tagged versions of the radio libraries are released via separate projects on PyPI

zha-device-handlers's People

Contributors

abmantis avatar adchevrier avatar adminiuga avatar brg468 avatar caius-bonus avatar claudegel avatar codyhackw avatar cydia2020 avatar dmulcahey avatar etiennemd avatar gamester17 avatar glassbase avatar hedda avatar javicalle avatar mattwestb avatar pdecat avatar pgrondek avatar prairiesnpr avatar presslab-us avatar puddly avatar rforro avatar roblandry avatar shogunman avatar shulyaka avatar smmoroz avatar thejulianjes avatar tropaion avatar tube0013 avatar w35l3y avatar weihuan1111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zha-device-handlers's Issues

Request for support for Sylvania/Osram Lightify Smart Switch

Hopefully you don't mind the request. Apologies if I'm over sharing here, but I wanted to make sure you have what you need. Information obtained from debug log in Home Assistant after pairing. Thanks!

2019-02-24 21:41:22 INFO (MainThread) [homeassistant.components.zha.api] Permitting joins for 60s
2019-02-24 21:41:25 INFO (MainThread) [zigpy.application] Device 0xc2ff (00:0d:6f:00:0e:c8:ff:33) joined the network
2019-02-24 21:41:25 INFO (MainThread) [zigpy.device] [0xc2ff] Discovering endpoints
2019-02-24 21:41:25 DEBUG (MainThread) [zigpy.zdo] [0xc2ff:zdo] ZDO request 0x0013: [49919, 00:0d:6f:00:0e:c8:ff:33, 128]
2019-02-24 21:41:26 INFO (MainThread) [zigpy.device] [0xc2ff] Discovered endpoints: [1, 2, 3, 4, 5, 6]
2019-02-24 21:41:26 INFO (MainThread) [zigpy.endpoint] [0xc2ff:1] Discovering endpoint information
2019-02-24 21:41:27 INFO (MainThread) [zigpy.endpoint] [0xc2ff:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=2064 device_version=2 input_clusters=[0, 1, 32, 4096, 64768] output_clusters=[3, 4, 5, 6, 8, 25, 768, 4096]>
2019-02-24 21:41:28 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:1] Manufacturer: OSRAM
2019-02-24 21:41:28 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:1] Model: Switch 4x-LIGHTIFY
2019-02-24 21:41:28 INFO (MainThread) [zigpy.endpoint] [0xc2ff:2] Discovering endpoint information
2019-02-24 21:41:29 INFO (MainThread) [zigpy.endpoint] [0xc2ff:2] Discovered endpoint information: <SimpleDescriptor endpoint=2 profile=260 device_type=2064 device_version=2 input_clusters=[0, 4096, 64768] output_clusters=[3, 4, 5, 6, 8, 768, 4096]>
2019-02-24 21:41:30 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:2] Manufacturer: OSRAM
2019-02-24 21:41:30 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:2] Model: Switch 4x-LIGHTIFY
2019-02-24 21:41:30 INFO (MainThread) [zigpy.endpoint] [0xc2ff:3] Discovering endpoint information
2019-02-24 21:41:31 INFO (MainThread) [zigpy.endpoint] [0xc2ff:3] Discovered endpoint information: <SimpleDescriptor endpoint=3 profile=260 device_type=2064 device_version=2 input_clusters=[0, 4096, 64768] output_clusters=[3, 4, 5, 6, 8, 768, 4096]>
2019-02-24 21:41:32 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:3] Manufacturer: OSRAM
2019-02-24 21:41:32 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:3] Model: Switch 4x-LIGHTIFY
2019-02-24 21:41:32 INFO (MainThread) [zigpy.endpoint] [0xc2ff:4] Discovering endpoint information
2019-02-24 21:41:33 INFO (MainThread) [zigpy.endpoint] [0xc2ff:4] Discovered endpoint information: <SimpleDescriptor endpoint=4 profile=260 device_type=2064 device_version=2 input_clusters=[0, 4096, 64768] output_clusters=[3, 4, 5, 6, 8, 768, 4096]>
2019-02-24 21:41:34 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:4] Manufacturer: OSRAM
2019-02-24 21:41:34 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:4] Model: Switch 4x-LIGHTIFY
2019-02-24 21:41:34 INFO (MainThread) [zigpy.endpoint] [0xc2ff:5] Discovering endpoint information
2019-02-24 21:41:35 INFO (MainThread) [zigpy.endpoint] [0xc2ff:5] Discovered endpoint information: <SimpleDescriptor endpoint=5 profile=260 device_type=2064 device_version=2 input_clusters=[0, 4096, 64768] output_clusters=[3, 4, 5, 6, 8, 768, 4096]>
2019-02-24 21:41:36 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:5] Manufacturer: OSRAM
2019-02-24 21:41:36 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:5] Model: Switch 4x-LIGHTIFY
2019-02-24 21:41:36 INFO (MainThread) [zigpy.endpoint] [0xc2ff:6] Discovering endpoint information
2019-02-24 21:41:37 INFO (MainThread) [zigpy.endpoint] [0xc2ff:6] Discovered endpoint information: <SimpleDescriptor endpoint=6 profile=260 device_type=2064 device_version=2 input_clusters=[0, 4096, 64768] output_clusters=[3, 4, 5, 6, 8, 768, 4096]>
2019-02-24 21:41:38 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:6] Manufacturer: OSRAM
2019-02-24 21:41:38 DEBUG (MainThread) [zigpy.endpoint] [0xc2ff:6] Model: Switch 4x-LIGHTIFY
2019-02-24 21:41:38 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zigpy.quirks.xiaomi.TemperatureHumiditySensor'>
2019-02-24 21:41:38 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2, 3]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:38 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zigpy.quirks.smartthings.SmartthingsTemperatureHumiditySensor'>
2019-02-24 21:41:38 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zigpy.quirks.kof.CeilingFan'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.3130.CentraLite3130'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.3300S.CentraLite3300S'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.3305S.CentraLite3305S'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.3315S.CentraLite3315S'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.3320.CentraLite3320'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.3326.CentraLite3326'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.centralite.motion.CentraLiteMotionSensor'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.philips.rwl021.PhilipsRWL021'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_body_sensor.AqaraBodySensor'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_button.AqaraButton'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_cube.AqaraCube'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2, 3]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_leak_sensor.AqaraLeakSensor'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_open_close_sensor.AqaraOpenCloseSensor'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_temperature_humidity_sensor.AqaraTemperatureHumiditySensor'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3, 4, 5, 6}
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Considering <class 'zhaquirks.xiaomi.aqara_vibration_sensor.AqaraVibrationSensor'>
2019-02-24 21:41:39 DEBUG (MainThread) [zigpy.quirks] Fail because endpoint list mismatch: dict_keys([1, 2]) {1, 2, 3, 4, 5, 6}

Hive motion sensor stuck on detected

Hopefully the right place to ask for help with this? I can pair to ZHA but seemingly with errors in the log. I think it works until triggered and then stays stuck on detected. Other Hive stuff is working fine. Not sure what info would be useful? Thanks

2019-03-30 22:31:22 WARNING (MainThread) [zigpy.zcl] Data remains after deserializing ZCL frame
2019-03-30 22:34:02 WARNING (MainThread) [zigpy_deconz.zigbee.application] Error while sending frame: 0xf0
2019-03-30 22:34:27 WARNING (MainThread) [homeassistant.components.zha.core.device] HiveHome.com MOT003 channel: zdo-HiveHome.com MOT003_ZDO async_configure stage failed ex:
2019-03-30 22:35:56 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.1835703632] Error handling message: {'ieee': '00:12:4b:00:11:7f:1a:61', 'endpoint_id': 6, 'cluster_id': 1026, 'cluster_type': 'in', 'attribute': 0, 'manufacturer': 4153, 'type': 'zha/devices/clusters/attributes/value', 'id': 38}
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/homeassistant/components/websocket_api/decorators.py", line 17, in _handle_async_response
await func(hass, connection, msg)
File "/usr/local/lib/python3.7/site-packages/homeassistant/components/zha/api.py", line 272, in websocket_read_zigbee_cluster_attributes
manufacturer=manufacturer
File "/usr/local/lib/python3.7/site-packages/zigpy/zcl/init.py", line 211, in read_attributes
result = await self.read_attributes_raw(to_read, manufacturer=manufacturer)
File "/usr/local/lib/python3.7/site-packages/zigpy/zcl/init.py", line 179, in read_attributes_raw
v = await self.request(True, 0x00, schema, attributes, manufacturer=manufacturer)
File "/usr/local/lib/python3.7/site-packages/zigpy/device.py", line 90, in request
expect_reply=expect_reply,
File "/usr/local/lib/python3.7/site-packages/zigpy_deconz/zigbee/application.py", line 118, in request
return await asyncio.wait_for(reply_fut, timeout)
File "/usr/local/lib/python3.7/asyncio/tasks.py", line 423, in wait_for
raise futures.TimeoutError()
concurrent.futures._base.TimeoutError

Support: ORVIBO - Motion Sensor - SN10ZW-1CO

Pairing
First time I tried to add the device to Home Assistant nothing showed up on the screen. Therefore I factory reset the device and pulled out my SmartThings hub to try it on there. It was found on the first try and worked flawlessly. Although I did not need to use the custom DHT, this was provided on the seller’s portal:
https://github.com/Kriskit/SmartThingsPublic/blob/master/devicetypes/kriskit/orvibo/orvibo-motion-sensor.groovy

Success?
After successfully removing the device from SmartThings I was able to successfully add the motion detector to Home Assistant using the built in ZHA support. I am not sure what I did differently this time, I was simply happy it “worked”. It “detects” movements and I can see the nwk, ieee, rssi and battery level statuses.

Issue
The device indicates that it is unavailable until a detects a motion
It will remain online for about 2 hours during which time it continues to indicate that motion is detected even if I hide it in a box. When the device finally times out ( or goes into sleep mode?) it will become once again unavailable. Once there is any kind of motion presented to the device, the status changes to "Detected" once again and the 2 hour wait starts all over again.

Of note in the SmarThings DHT file linked above line 33 of the groovy code states the following
https://github.com/Kriskit/SmartThingsPublic/blob/master/devicetypes/kriskit/orvibo/orvibo-motion-sensor.groovy

"These devices don't report when motion stops, so it's necessary to have a timer to report that motion has stopped. You can adjust how long this is below."

My guess it is this behavior that is causing the problem. Although my code / driver / device handler writing skills are terrible, I am assuming it should be an easy fix. I simply am not sure where to start.

The only time it shows that the device is in the “Clear” status is right after joining the zigbee network. Otherwise it will get stuck at “Detected” until it becomes “Unavailable” some 2hours and 20 minutes later.

Please note that I have already added a few Zigbee devices to HA including the Livingsmart Door/Windows Contact Sensor model SM10ZW (also rebranded from Orvibo) and a Multi Temperature White LED ceiling light. All of them worked right out of the box.

My Setup
Home Assistant 0.93.2 using Hass.io installed on Proxmox using whiskerz007 script
ZWave & Zigbee connectivity: Nortek HUSBZB-1

configuration.yaml (relevant section)

zha:
  usb_path: /dev/ttyUSB1
  database_path: /config/zigbee.db

Manufacturer: ORVIBO
Model: SN10ZW-1CO (Livingsmart rebrand of Orvibo device)

Logs
Not sure what information is going to be relevant, but here is some information from the logs that I believe might be important.

Device 0x765d (00:15:xx:xx:xx:xx:xx:xx) left the network
Device 0x008e (00:15:xx:xx:xx:xx:xx:xx) joined the network
Device 00:15:xx:xx:xx:xx:xx:xx changed id (0x765d => 0x008e)
Canceling old initialize call
Failed ZDO request during device initialization: 
[0x008e] Requesting 'Node Descriptor'
[0x008e:zdo] ZDO request 0x0013: [142, 00:15:xx:xx:xx:xx:xx:xx, 128]
[0x008e] Node Descriptor: <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4151 maximum_buffer_size=127 maximum_incoming_transfer_size=100 server_mask=0 maximum_outgoing_transfer_size=100 descriptor_capability_field=0>
[0x008e] Discovering endpoints
[0x008e] Discovered endpoints: [1]
[0x008e:1] Discovering endpoint information
[0x008e:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=1026 device_version=1 input_clusters=[0, 3, 1280, 65535, 1] output_clusters=[0, 4, 3, 5, 1]>
[0x008e:1] Manufacturer: ORVIBO
[0x008e:1] Model: 895a2d80097f4ae2b2d40500d5e03dcc

ORVIBO 895a2d80097f4ae2b2d40500d5e03dcc: started configuration
node descriptor: [<Status.SUCCESS: 0>, 142, <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4151 maximum_buffer_size=127 maximum_incoming_transfer_size=100 server_mask=0 maximum_outgoing_transfer_size=100 descriptor_capability_field=0>]
ORVIBO 895a2d80097f4ae2b2d40500d5e03dcc: channel: zdo-ORVIBO 895a2d80097f4ae2b2d40500d5e03dcc_ZDO async_configure stage succeeded
0x008e:1:0x0000: finished channel configuration
0x008e:1:0x0500: started IASZoneChannel configuration
initializing channel: basic from_cache: False
ORVIBO 895a2d80097f4ae2b2d40500d5e03dcc: channel: basic-0x008e:1:0x0000 async_configure stage succeeded
0x008e:1:0x0500: bound  'ias_zone' cluster: Status.SUCCESS
0x008e:1:0x0500: wrote cie_addr: 00:0d:6f:00:12:00:b6:a4 to 'ias_zone' cluster: [<WriteAttributesStatusRecord status=Status.SUCCESS attrid=0>]
0x008e:1:0x0500: finished IASZoneChannel configuration
ORVIBO 895a2d80097f4ae2b2d40500d5e03dcc: channel: ias_zone-0x008e:1:0x0500 async_configure stage succeeded
Data remains after deserializing ZCL frame
[0x008e:1:0x0500] ZCL request 0x0101: []
Enroll requested
[0x008e:1:0x0500] No handler for cluster command 1
0x008e:1:0x0001: Failed to bind 'power' cluster: 
[0x008e:1:0x0500] ZCL request 0x0100: [1, 0, 0, 0]
Updated alarm state: 1
[0x008e:1:0x0500] No handler for cluster command 0
0x008e:1:0x0001: reporting 'battery_voltage' attr on 'power' cluster: 30/900/1: Result: '[[<ConfigureReportingResponseRecord status=140 direction=0 attrid=32>]]'

Conflict with Centralite 3325-s and 3326-l

Both devices have the same exact signature. In this case everything works but we need to handle this better before we have devices that match but function differently.

<not an issue> question about install/usage

Hi,

I am currently using a zigate device, which is ok, however I have a number of devices that I have brought that are not supported & it would appear that zigate -> home assistant support is limited, as there are only two contributors & I can't find out how to add new templates..
So I am going to be buying a conbee ii dongle & migrating to zha, now I have a number of devices that I believe quirks for (xiaomi, ikea etc), to be able to use the quirks do I :
setup zha in HA with my dongle
git clone the rep to a custom component
restart & thats it?

Or am I missing something simple like zha already has them baked in?
If zha does have them baked in, how would I create my own local quirk before submitting it for others? i.e. is there a set folder it goes into be picked up?

Sorry for the questions, I did read the contribute & tried the wiki, however the wiki links back to the front page.

Cheers

Lutron Auroa

So I pre-ordered 2 of these and just received them.

They pair by double clicking the button.

here is the debug log from pairing with HA 0.94.4, and some debug logging for actions after pairing. Let me know if I can do any more! thanks!

[0x0000:zdo] ZDO request 0x0036: [60, <Bool.false: 0>]
[0x14d3:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=65281 value=<TypeValue type=bytes, value=b'\x01!\xdb\x0b\x03(\x19\x04!\xa8\x13\x05!$\x01\x06$\x01\x00\x00\x00\x00\n!9\x0fd\x10\x00'>>]]
[0x14d3:1:0x0000] Attribute report received: 65281=b'\x01!\xdb\x0b\x03(\x19\x04!\xa8\x13\x05!$\x01\x06$\x01\x00\x00\x00\x00\n!9\x0fd\x10\x00'
0xb055:3:0x0b04 async_update
0xabfb:3:0x0b04 async_update
0x7bc5:3:0x0b04 async_update
Device 0x7129 (ff:ff:00:0f:e7:fe:e1:9d) joined the network
[0x7129] Requesting 'Node Descriptor'
Device 0x7129 (ff:ff:00:0f:e7:fe:e1:9d) joined the network
Skip initialization for existing device ff:ff:00:0f:e7:fe:e1:9d
[0x7129:zdo] ZDO request 0x0013: [28969, ff:ff:00:0f:e7:fe:e1:9d, 128]
[0x6ec4:zdo] ZDO request 0x0000: [00:0d:6f:00:0a:ff:73:23, 0, 0]
[0x6ec4:zdo] ZDO request 0x0013: [28356, 90:fd:9f:ff:fe:65:df:8e, 142]
[0xe189:zdo] ZDO request 0x0013: [57737, f0:d1:b8:00:00:02:32:96, 142]
[0xe189:1:0x0006] ZCL request 0x000a: [[<Attribute attrid=0 value=<TypeValue type=Bool, value=Bool.true>>]]
[0xe189:1:0x0006] Attribute report received: on_off=Bool.true
[0xe189:1:0x0008] ZCL request 0x000a: [[<Attribute attrid=0 value=<TypeValue type=uint8_t, value=94>>]]
[0xe189:1:0x0008] Attribute report received: current_level=94
0xe189:1:0x0008: received attribute: 0 update with value: 94
[0x7129:zdo] ZDO request 0x0002: [0]
[0x7129:zdo] Unsupported ZDO request 0x0002
[0x9591:1:0x0019] ZCL request 0x0101: [0, 4454, 260, 285409283, 0]
[0x9591:1:0x0019] No handler for cluster command 1
[0x7129:zdo] ZDO request 0x0002: [0]
[0x7129:zdo] Unsupported ZDO request 0x0002
[0x6ec4:zdo] ZDO request 0x0000: [00:0d:6f:00:0a:ff:73:23, 0, 0]
[0x6ec4:1:0x0006] ZCL request 0x000a: [[<Attribute attrid=0 value=<TypeValue type=Bool, value=Bool.false>>]]
[0x6ec4:1:0x0006] Attribute report received: on_off=Bool.false
[0x7129:zdo] ZDO request 0x0002: [0]
[0x7129:zdo] Unsupported ZDO request 0x0002
Unknown ZDO cluster 0x8038
[0x6ec4:zdo] Unexpected ZDO reply 0x8038: b'\x00\x00\xf8\xff\x07\x14\x00\x0c\x00\x10\xa9\xad\xb1\xa7\xa8\xa5\xae\xb1\xa7\xa6\xa2\xb2\xb7\x9e\x9c\x9c'
[0x6ec4:zdo] ZDO request 0x0000: [00:0d:6f:00:0a:ff:73:23, 0, 0]
[0x0000:zdo] ZDO request 0x0001: [28356, 0, 0]
[0x6ec4:zdo] Unexpected ZDO reply 0x8001: [<Status.SUCCESS: 0>, 90:fd:9f:ff:fe:65:df:8e, 28356, 0, 0, []]
[0x6ec4:1:0x0008] ZCL request 0x000a: [[<Attribute attrid=0 value=<TypeValue type=uint8_t, value=254>>]]
[0x6ec4:1:0x0008] Attribute report received: current_level=254
0xdd57:1:0x0008: received attribute: 0 update with value: 254
[0x7129] Requesting Node Descriptor failed: [0x7129:0:0x0002]: message send failure: EmberStatus.DELIVERY_FAILED
[0x7129] Discovering endpoints
[0x7129] Discovered endpoints: [1]
[0x7129:1] Discovering endpoint information
[0x7129:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=2080 device_version=1 input_clusters=[0, 1, 3, 4096, 64512] output_clusters=[3, 4, 6, 8, 25, 4096]>
[0x7129:1] Manufacturer: Lutron
[0x7129:1] Model: Z3-1BRL
Considering <class 'zigpy.quirks.smartthings.SmartthingsMultiPurposeSensor'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zigpy.quirks.kof.CeilingFan'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zigpy.quirks.keen.KeenTemperatureHumiditySensor'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zigpy.quirks.ikea.TradfriPlug'>
Fail because endpoint list mismatch: dict_keys([1, 2, 242]) {1}
Considering <class 'zhaquirks.centralite.3130.CentraLite3130'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.centralite.3300S.CentraLite3300S'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.centralite.3305S.CentraLite3305S'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.centralite.3310S.CentraLite3310S'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.centralite.3315S.CentraLite3315S'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.centralite.3320.CentraLite3320'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.centralite.3321S.CentraLite3321S'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.centralite.ias.CentraLiteIASSensor'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.centralite.motion.CentraLiteMotionSensor'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.gledopto.gls007z.GLS007Z'>
Fail because endpoint list mismatch: dict_keys([12, 11, 13]) {1}
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: dict_keys([11, 13]) {1}
Considering <class 'zhaquirks.hivehome.mot003V0.MOT003'>
Fail because endpoint list mismatch: dict_keys([6]) {1}
Considering <class 'zhaquirks.hivehome.mot003V6.MOT003'>
Fail because endpoint list mismatch: dict_keys([6]) {1}
Considering <class 'zhaquirks.innr.rs228t.RS228T'>
Fail because endpoint list mismatch: dict_keys([1, 242]) {1}
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.osram.a19rgbw.LIGHTIFYA19RGBW'>
Fail because endpoint list mismatch: dict_keys([3]) {1}
Considering <class 'zhaquirks.osram.a19twhite.A19TunableWhite'>
Fail because endpoint list mismatch: dict_keys([3]) {1}
Considering <class 'zhaquirks.osram.flexrgbw.FlexRGBW'>
Fail because endpoint list mismatch: dict_keys([3]) {1}
Considering <class 'zhaquirks.osram.lightifyx4.LightifyX4'>
Fail because endpoint list mismatch: dict_keys([1, 2, 3, 4, 5, 6]) {1}
Considering <class 'zhaquirks.philips.rwl021.PhilipsRWL021'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.samjin.button.SamjinButton'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.samjin.button2.SamjinButton'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.sinope.thermostat.SinopeTechnologiesThermostat'>
Fail because endpoint list mismatch: dict_keys([1, 196]) {1}
Considering <class 'zhaquirks.smartthings.motionv4.SmartThingsMotionV4'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.multiv4.SmartThingsMultiV4'>
Fail because device_type 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.visonic.mct340e.MCT340E'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.cube_aqgl01.CubeAQGL01'>
Fail because endpoint list mismatch: dict_keys([1, 2, 3]) {1}
Considering <class 'zhaquirks.xiaomi.aqara.magnet_aq2.MagnetAQ2'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.motion_aq2.MotionAQ2'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.motion_aq2b.MotionAQ2'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.remote_b286acn01.RemoteB286ACN01'>
Fail because endpoint list mismatch: dict_keys([1, 2, 3]) {1}
Considering <class 'zhaquirks.xiaomi.aqara.sensor_swit.SwitchAQ3V2'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.sensor_switch_aq3.SwitchAQ3'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.switch_aq2.SwitchAQ2'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.vibration_aq1.VibrationAQ1'>
Fail because endpoint list mismatch: dict_keys([1, 2]) {1}
Considering <class 'zhaquirks.xiaomi.aqara.weather.Weather'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.aqara.wleak_aq1.LeakAQ1'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.mija.motion.Motion'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.mija.sensor_ht.Weather'>
Fail because endpoint list mismatch: dict_keys([1, 2, 3]) {1}
Considering <class 'zhaquirks.xiaomi.mija.sensor_magnet.Magnet'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.mija.sensor_switch.MijaButton'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor'>
Fail because device_type mismatch on at least one endpoint
Lutron Z3-1BRL: started configuration
node descriptor: [<Status.SUCCESS: 0>, 28969, <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4420 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=11264 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>]
Lutron Z3-1BRL: channel: zdo-Lutron Z3-1BRL_ZDO async_configure stage succeeded
0x7129:1:0x0000: finished channel configuration
0x7129:1:0x1000: finished channel configuration
Lutron Z3-1BRL: channel: lightlink-0x7129:1:0x1000 async_configure stage succeeded
initializing channel: basic from_cache: False
Lutron Z3-1BRL: channel: basic-0x7129:1:0x0000 async_configure stage succeeded
0x7129:1:0x0001: bound  'power' cluster: Status.SUCCESS
0x7129:1:0x0006: bound  'on_off' cluster: Status.NOT_AUTHORIZED
0x7129:1:0x0006: finished channel configuration
Lutron Z3-1BRL: channel: on_off-0x7129:1:0x0006 async_configure stage succeeded
0x7129:1:0x0008: bound  'level' cluster: Status.SUCCESS
0x7129:1:0x0008: finished channel configuration
Lutron Z3-1BRL: channel: event_relay-0x7129:1:0x0008 async_configure stage succeeded
0x7129:1:0x0001: reporting 'battery_voltage' attr on 'power' cluster: 30/900/1: Result: '[[<ConfigureReportingResponseRecord status=140 direction=0 attrid=32>]]'
0x7129:1:0x0001: reporting 'battery_percentage_remaining' attr on 'power' cluster: 30/900/1: Result: '[[<ConfigureReportingResponseRecord status=0 direction=0 attrid=0>]]'
[0x7129:zdo] ZDO request 0x0000: [00:0d:6f:00:0a:ff:73:23, 0, 0]
[0x7129] Requesting 'Node Descriptor'
0x7129:1:0x0001: finished channel configuration
Lutron Z3-1BRL: channel: power-0x7129:1:0x0001 async_configure stage succeeded
Lutron Z3-1BRL: completed configuration
Lutron Z3-1BRL: stored in registry: ZhaDeviceEntry(name='Lutron Z3-1BRL', ieee='ff:ff:00:0f:e7:fe:e1:9d', power_source=0, manufacturer_code=4420, last_seen=1561224390.8405027)
Lutron Z3-1BRL: started initialization
entry loaded from storage: ZhaDeviceEntry(name='Lutron Z3-1BRL', ieee='ff:ff:00:0f:e7:fe:e1:9d', power_source=0, manufacturer_code=4420, last_seen=1561224390.8405027)
Lutron Z3-1BRL: channel: zdo-Lutron Z3-1BRL_ZDO async_initialize stage succeeded
initializing channel: lightlink from_cache: False
Lutron Z3-1BRL: channel: lightlink-0x7129:1:0x1000 async_initialize stage succeeded
0x7129:1:0x0006 is attempting to update onoff state - from cache: True
[0x7129:1:0x0004] ZCL request 0x0100: [1, b'']
[0x7129:1:0x0004] No handler for cluster command 0
initializing channel: basic from_cache: False
Lutron Z3-1BRL: channel: basic-0x7129:1:0x0000 async_initialize stage succeeded
initializing channel: event_relay from_cache: False
Lutron Z3-1BRL: channel: event_relay-0x7129:1:0x0006 async_initialize stage succeeded
initializing channel: event_relay from_cache: False
Lutron Z3-1BRL: channel: event_relay-0x7129:1:0x0008 async_initialize stage succeeded
initializing channel: on_off from_cache: False
Lutron Z3-1BRL: channel: on_off-0x7129:1:0x0006 async_initialize stage succeeded
[0x7129] Node Descriptor: <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4420 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=11264 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
[0xc515:zdo] ZDO request 0x0006: [65533, 260, [25], []]
initializing channel: power from_cache: False
Lutron Z3-1BRL: channel: power-0x7129:1:0x0001 async_initialize stage succeeded
Lutron Z3-1BRL: power source: Battery or Unknown
Lutron Z3-1BRL: completed initialization
[0xc515:zdo] ZDO request 0x0001: [0, 0, 0]
[0xf2d1:1:0x0001] ZCL request 0x000a: [[<Attribute attrid=33 value=<TypeValue type=uint8_t, value=166>>]]
[0xf2d1:1:0x0001] Attribute report received: battery_percentage_remaining=166
[0x9591:1:0x0019] ZCL request 0x0101: [0, 4454, 260, 285409283, 0]
[0x9591:1:0x0019] No handler for cluster command 1
0xa764:3:0x0b04 async_update
0xf85f:3:0x0b04 async_update
0x24c5:3:0x0b04 async_update
0xabfb:3:0x0b04 async_update
0x87b2:3:0x0b04 async_update
[0x6ec4:1:0x0300] ZCL request 0x000a: [[<Attribute attrid=3 value=<TypeValue type=uint16_t, value=30138>>, <Attribute attrid=4 value=<TypeValue type=uint16_t, value=26909>>, <Attribute attrid=7 value=<TypeValue type=uint16_t, value=250>>]]
[0x6ec4:1:0x0300] Attribute report received: current_x=30138, current_y=26909, color_temperature=250
0xeca2:3:0x0b04 async_update
0x7bc5:3:0x0b04 async_update
0xb055:3:0x0b04 async_update
[0xe189:1:0x0300] ZCL request 0x000a: [[<Attribute attrid=0 value=<TypeValue type=uint8_t, value=0>>, <Attribute attrid=1 value=<TypeValue type=uint8_t, value=254>>, <Attribute attrid=3 value=<TypeValue type=uint16_t, value=22806>>, <Attribute attrid=4 value=<TypeValue type=uint16_t, value=24116>>, <Attribute attrid=7 value=<TypeValue type=uint16_t, value=292>>]]
[0xe189:1:0x0300] Attribute report received: current_hue=0, current_saturation=254, current_x=22806, current_y=24116, color_temperature=292
[0xc515:1:0x0019] ZCL request 0x0101: [0, 4454, 260, 285409283, 0]
[0xc515:1:0x0019] No handler for cluster command 1
[0x9591:1:0x0019] ZCL request 0x0101: [0, 4454, 260, 285409283, 0]
[0x9591:1:0x0019] No handler for cluster command 1
[0xf2d1:zdo] ZDO request 0x0006: [65533, 260, [25], []]
[0xf2d1:1:0x0019] ZCL request 0x0101: [1, 4673, 64, 17, 0]
[0xf2d1:1:0x0019] No handler for cluster command 1
[0xf2d1:1:0x0019] ZCL request 0x0101: [1, 4673, 64, 17, 0]
[0xf2d1:1:0x0019] No handler for cluster command 1
[0xf2d1:1:0x0019] ZCL request 0x0101: [1, 4673, 64, 17, 0]
[0xf2d1:1:0x0019] No handler for cluster command 1
[0xf2d1:1:0x0019] ZCL request 0x0101: [1, 4673, 64, 17, 0]
[0xf2d1:1:0x0019] No handler for cluster command 1
[0x7129:zdo] ZDO request 0x0006: [65533, 260, [25], []]
[0xc515:1:0x0019] ZCL request 0x0101: [0, 4454, 260, 285409283, 0]
[0xc515:1:0x0019] No handler for cluster command 1
[0xf2d1:1:0x0019] ZCL request 0x0101: [1, 4673, 64, 17, 0]
[0xf2d1:1:0x0019] No handler for cluster command 1
0xb055:3:0x0b04 async_update
0xf85f:3:0x0b04 async_update
0xabfb:3:0x0b04 async_update
0xeca2:3:0x0b04 async_update
0x7bc5:3:0x0b04 async_update
[0x7129:zdo] ZDO request 0x0006: [65533, 260, [25], []]
[0xe40e:zdo] ZDO request 0x0006: [65533, 260, [25], []]
[0x7129:zdo] ZDO request 0x0006: [65533, 260, [25], []]
0xa764:3:0x0b04 async_update
0x87b2:3:0x0b04 async_update
0x24c5:3:0x0b04 async_update
[0x9591:zdo] ZDO request 0x0006: [65533, 260, [25], []]

Main toggle button a few times:

2019-06-22 13:46:42 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] ZCL request 0x0000: [[0]]
2019-06-22 13:46:42 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] No handler for general command 0
2019-06-22 13:46:48 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] ZCL request 0x0000: [[0]]
2019-06-22 13:46:48 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] No handler for general command 0
2019-06-22 13:46:52 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] ZCL request 0x0000: [[0]]
2019-06-22 13:46:52 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] No handler for general command 0

Clockwise turn:

2019-06-22 13:50:04 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] ZCL request 0x0000: [[0]]
2019-06-22 13:50:04 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0006] No handler for general command 0
2019-06-22 13:50:10 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0000: [[0]]
2019-06-22 13:50:10 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for general command 0
2019-06-22 13:50:10 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [22, 2]
2019-06-22 13:50:10 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for cluster command 4
2019-06-22 13:50:10 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [30, 2]
2019-06-22 13:50:10 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [37, 2]
2019-06-22 13:50:11 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [51, 2]
2019-06-22 13:50:11 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for cluster command 4
2019-06-22 13:50:11 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [59, 2]
2019-06-22 13:50:11 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [66, 2]
2019-06-22 13:50:11 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [73, 2]
2019-06-22 13:50:11 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [81, 2]
2019-06-22 13:50:12 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [95, 2]
2019-06-22 13:50:12 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for cluster command 4
2019-06-22 13:50:12 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [110, 2]
2019-06-22 13:50:12 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [117, 2]
2019-06-22 13:50:12 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [132, 2]
2019-06-22 13:50:12 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [139, 2]
2019-06-22 13:50:13 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [153, 2]
2019-06-22 13:50:13 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for cluster command 4
2019-06-22 13:50:13 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [175, 2]
2019-06-22 13:50:13 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [190, 2]
2019-06-22 13:50:13 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [204, 2]
2019-06-22 13:50:13 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [219, 2]
2019-06-22 13:50:14 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [226, 2]
2019-06-22 13:50:14 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for cluster command 4
2019-06-22 13:50:14 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [234, 2]

Counterclockwise turn:

2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0000: [[0]]
2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for general command 0
2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [197, 2]
2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] No handler for cluster command 4
2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [124, 2]
2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [66, 2]
2019-06-22 13:54:29 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [22, 2]
2019-06-22 13:54:30 DEBUG (MainThread) [zigpy.zcl] [0x16e5:1:0x0008] ZCL request 0x0104: [2, 2]

Commercial Electric ETI Zigbee lights

I have a number of Zigbee ETI Downlights.

https://www.homedepot.com/p/Commercial-Electric-Wink-Compatible-5-in-and-6-in-65w-Equivalent-White-LED-Smart-Recessed-Trim-with-Color-Tunable-Feature-2700K-to-5000K-53166161/206029900

They worked perfectly for a bit, but recently I am having issues. The lights (in a fresh install) still pair and still show the color temp slider and brightness slider, but when I adjust the light brightness in the UI and instead of adjusting it snaps back (in the UI) to it's existing (physical) setting. I looked at the available quirks to see if the "quirks not getting applied" thread would apply, but I don't see those lights in there.

Any possibility of getting those working again??

Thanks.

Add guide on how to create ZHA Device Handlers similar to guide for Zigbee-Shepherd Converters

Background: Zigbee2mqtt project has written a great guide on how to add support for new devices by creating Zigbee-Shepherd Converters for the Zigbee2mqtt project, which I understand is a similar concept to that of ZHA Device Handlers for Home Assistant.

See http://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html

Suggestion: Maybe it could be a good idea to copy ideas from that guide to make a similar guide for how to go about step-by-step to create ZHA Device Handlers for Home Assistant and host that in this repo as part of its documentation?

Xiaomi Magic Cube Orientation

Currently the magic cube fires events knock_1, knock_2, etc through knock_6 depending on the cube orientation. Same for slide.

It may be better in the long run to just fire a simple knock or slide event and include an extra orientation key in the event_data - that way you only have 1 event to check for if you don't care about orientation

Support for lumi.lock.v1

It will be very fine to support Xiaomi lumi.lock.v1.
<SimpleDescriptor endpoint=1 profile=260 device_type=10 device_version=2 input_clusters=[0, 3, 1, 2, 25, 10] output_clusters=[25, 10]>
I can help if you explain me !
Thank you.

Missing instruction on how to contribute

I would love to contribute data for the following devices. Is it possible to come up with a guide on how to collect the needed data?

  • Xiaomi Mijia Temperature and Humidity sensor (the round one without air pressure)
  • Xiaomi Mijia Button (round)
  • Xiaomi Mijia Motion Detection

Xiaomi Aqara Wall Switch Wireless single button (WXKG03LM) recognized as Weather

I opened this issue because I could not migrate the previous I opened in homeassistant bug tracker( #23628 )

Home Assistant release with the issue:
The release version is 0.92.1

Last working Home Assistant release (if known):
Unknown

Operating environment (Hass.io/Docker/Windows/etc.):
raspberry pi 3/ FreeBSD / aarch64 / python 3.6 virtualenv / Conbee II

Component/platform:
zha

Description of problem:
Xiaomi Aqara wireless switch (model WXKG03LM) is recongnized as a zhaquirks.xiaomi.mija.sensor_ht.Weather.
The nodename is LUMI lumi.remote.b186acn01

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

zha:
  usb_path: /dev/cuaZigbee
  database_path: /home/homeassistant/.homeassistant/zigbee.db
  radio_type: deconz

Traceback (if applicable):
Adding a new device prints this :

[0x0d8b:1] Discovering endpoint information
[0x0d8b:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=24321 device_version=1 input_clusters=[0, 3, 25, 65535, 18] output_clusters=[0, 4, 3, 5, 25, 65535, 18]>
[0x0d8b:1] Manufacturer: LUMI
[0x0d8b:1] Model: lumi.remote.b186acn01
[0x0d8b:2] Discovering endpoint information
[0x0d8b:2] Discovered endpoint information: <SimpleDescriptor endpoint=2 profile=260 device_type=24322 device_version=1 input_clusters=[3, 18] output_clusters=[4, 3, 5, 18]>
[0x0d8b:3] Discovering endpoint information
0xa707:3:0x0b04 async_update
0xe6a9:3:0x0b04 async_update
[0x0d8b:3] Discovered endpoint information: <SimpleDescriptor endpoint=3 profile=260 device_type=24323 device_version=1 input_clusters=[3, 12] output_clusters=[4, 3, 5, 12]>
Considering <class 'zigpy.quirks.smartthings.SmartthingsMultiPurposeSensor'>
Fail because endpoint list mismatch: dict_keys([1]) {1, 2, 3}
[...]
Considering <class 'zhaquirks.xiaomi.mija.sensor_ht.Weather'>
**Found custom device replacement for 00:15:8d:00:02:bf:ea:5e: <class 'zhaquirks.xiaomi.mija.sensor_ht.Weather'>**
LUMI lumi.remote.b186acn01: started configuration
node descriptor: [<Status.SUCCESS: 0>, 3467, <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4151 maximum_buffer_size=127 maximum_incoming_transfer_size=100 server_mask=0 maximum_outgoing_transfer_size=100 descriptor_capability_field=0>]
LUMI lumi.remote.b186acn01: channel: zdo-LUMI lumi.remote.b186acn01_ZDO async_configure stage succeeded
0x0d8b:2:0x0012: bound  'multistate_input' cluster: Status.SUCCESS
[0x0d8b:2:0x0012] 0 is not a valid attribute id
LUMI lumi.remote.b186acn01 channel: attribute-0x0d8b:2:0x0012 async_configure stage failed ex: object NoneType can't be used in 'await' expression
0x0d8b:1:0x0000: finished channel configuration
LUMI lumi.remote.b186acn01: channel: basic-0x0d8b:1:0x0000 async_configure stage succeeded
0x0d8b:3:0x000c: bound  'analog_input' cluster: Status.SUCCESS
[0x0d8b:3:0x000c] 0 is not a valid attribute id
LUMI lumi.remote.b186acn01 channel: attribute-0x0d8b:3:0x000c async_configure stage failed ex: object NoneType can't be used in 'await' expression
0x0d8b:1:0x0405: Failed to bind 'humidity' cluster:
0x0d8b:1:0x0001: bound  'power' cluster: Status.SUCCESS
0x0d8b:1:0x0012: Failed to bind 'multistate_input' cluster:
[0x0d8b:1:0x0012] 0 is not a valid attribute id
LUMI lumi.remote.b186acn01 channel: attribute-0x0d8b:1:0x0012 async_configure stage failed ex: object NoneType can't be used in 'await' expression
0x0d8b:1:0x0405: reporting 'measured_value' attr on 'humidity' cluster: 30/900/50: Result: '[6, <Status.UNSUP_GENERAL_COMMAND: 130>]'
0x0d8b:1:0x0001: reporting 'battery_voltage' attr on 'power' cluster: 30/900/1: Result: '[6, <Status.UNSUP_GENERAL_COMMAND: 130>]'
0x0d8b:1:0x0402: bound  'temperature' cluster: Status.SUCCESS
0x0d8b:1:0x0405: finished channel configuration
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:1:0x0405 async_configure stage succeeded
0x0d8b:1:0x0402: reporting 'measured_value' attr on 'temperature' cluster: 30/900/50: Result: '[6, <Status.UNSUP_GENERAL_COMMAND: 130>]'
0x0d8b:1:0x0402: finished channel configuration
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:1:0x0402 async_configure stage succeeded
0x0d8b:1:0x0001: reporting 'battery_percentage_remaining' attr on 'power' cluster: 30/900/1: Result: '[6, <Status.UNSUP_GENERAL_COMMAND: 130>]'
0x0d8b:1:0x0001: finished channel configuration
LUMI lumi.remote.b186acn01: channel: power-0x0d8b:1:0x0001 async_configure stage succeeded
LUMI lumi.remote.b186acn01: completed configuration
LUMI lumi.remote.b186acn01: stored in registry: ZhaDeviceEntry(name='LUMI lumi.remote.b186acn01', ieee='00:15:8d:00:02:bf:ea:5e', power_source=0, manufacturer_code=4151, last_seen=1556637448.5699582)
LUMI lumi.remote.b186acn01: started initialization
entry loaded from storage: ZhaDeviceEntry(name='LUMI lumi.remote.b186acn01', ieee='00:15:8d:00:02:bf:ea:5e', power_source=0, manufacturer_code=4151, last_seen=1556637448.5699582)
LUMI lumi.remote.b186acn01: channel: zdo-LUMI lumi.remote.b186acn01_ZDO async_initialize stage succeeded
LUMI lumi.remote.b186acn01: channel: power-0x0d8b:1:0x0001 async_initialize stage succeeded
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:3:0x000c async_initialize stage succeeded
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:1:0x0012 async_initialize stage succeeded
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:1:0x0405 async_initialize stage succeeded
0xa707:3:0x0b04 async_update
0xe6a9:3:0x0b04 async_update
LUMI lumi.remote.b186acn01: channel: basic-0x0d8b:1:0x0000 async_initialize stage succeeded
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:2:0x0012 async_initialize stage succeeded
LUMI lumi.remote.b186acn01: channel: attribute-0x0d8b:1:0x0402 async_initialize stage succeeded
LUMI lumi.remote.b186acn01: power source: Battery or Unknown
LUMI lumi.remote.b186acn01: completed initialization
[0x1a37:1:0x0402] ZCL request 0x000a: [[<Attribute attrid=0 value=<zigpy.zcl.foundation.TypeValue object at 0x4a52c2b0>>]]
[0x1a37:1:0x0402] Attribute report received: 0=2147
[0x1a37:1:0x0405] ZCL request 0x000a: [[<Attribute attrid=0 value=<zigpy.zcl.foundation.TypeValue object at 0x4a52c7f0>>]]
[0x1a37:1:0x0405] Attribute report received: 0=5218
[0x1a37:1:0x0403] ZCL request 0x000a: [[<Attribute attrid=0 value=<zigpy.zcl.foundation.TypeValue object at 0x4a527e10>>, <Attribute attrid=20 value=<zigpy.zcl.foundation.TypeValue object at 0x4a508e48>>, <Attribute attrid=16 value=<zigpy.zcl.foundation.TypeValue object at 0x4a52c2b0>>]]
[0x1a37:1:0x0403] Attribute report received: 0=1019, 20=-1, 16=10195

Additional information:
I copied remote_b286acn01.py to remote_b186acn01.py and remplaced every occurence of b286acn01 by b186acn01 but the result is :

  • 3 binary_sensors (none working)
  • 4 sensors (only one working)
  • 1 temperature sensor ( which seems to work but the temperature is not accurate)

The working sensor sends those events:

  • left_single
  • left_double
  • left_long press ( there is no underscore between "long" and "press" )

Xiaomi Mijia Tempearature and Humidity sensor does not create any clusters

I am trying to gather all the data required to support this device. However my zigbee.db file only shows the following for the successfully paired device:

Devices shows nwk 12370 and status 2
Endpoints shows 3 entries with endpoint_id 1, 2 and 3 status 0 but no profile_id or profile_type
clusters, output_clusters and attributes does not contain anything for that node.

Is it possible that those devices are not using ZHA and are simply sending some zigbee messages to report temperature and humidity?
https://github.com/Koenkk/zigbee-shepherd-converters/blob/master/converters/fromZigbee.js#L348 seems to hint at that.

Request support for Quirky tripper door/window sensor

Information obtained from debug log in Home Assistant after pairing.

2019-02-20 21:54:02 INFO (MainThread) [zigpy.application] Device 0xba4f (7c:e5:24:00:00:09:34:aa) joined the network
2019-02-20 21:54:02 INFO (MainThread) [zigpy.device] [0xba4f] Discovering endpoints
2019-02-20 21:54:02 DEBUG (MainThread) [zigpy.zdo] [0xba4f:zdo] ZDO request 0x0013: [47695, 7c:e5:24:00:00:09:34:aa, 128]
2019-02-20 21:54:02 DEBUG (MainThread) [zigpy.zdo] [0xba4f:zdo] ZDO request 0x0006: [65533, 260, [25], []]
2019-02-20 21:54:03 INFO (MainThread) [zigpy.device] [0xba4f] Discovered endpoints: [1]
2019-02-20 21:54:03 INFO (MainThread) [zigpy.endpoint] [0xba4f:1] Discovering endpoint information
2019-02-20 21:54:03 INFO (MainThread) [zigpy.endpoint] [0xba4f:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=1026 device_version=0 input_clusters=[0, 1, 3, 1280, 32, 2821] output_clusters=[3, 25]>
2019-02-20 21:54:04 DEBUG (MainThread) [zigpy.endpoint] [0xba4f:1] Manufacturer: Sercomm Corp.
2019-02-20 21:54:04 DEBUG (MainThread) [zigpy.endpoint] [0xba4f:1] Model: Tripper

Hue Dimmer Long Press Events

Ive successfully joined a hue dimmer (RWL021) to ZHA. The basic events are present, these being single tap on/off, single tap dim up/down and hold dim up/down step. These can be mapped through to HA for automations.

Reading into the Zigbee2MQTT support for this dimmer, it appears that this device is also capable of providing discrete long press and multi-press events for all 4 buttons. To enable this, from reading the code and the related issue, it appears that when initialized, the dimmer needs an attribute written to it.

The relevant code reference is here: https://github.com/Koenkk/zigbee-shepherd-converters/blob/69befbcce5d744cf5f81e1cdf6f59cd5bcb5917e/devices.js#L909

The Issue link is here: Koenkk/zigbee2mqtt#585

Is this assumption correct, and how difficult is this to add to ZHA? Im happy to try and have a go at this, but want to get some validation on whats needed and any ZHA limitations that might prevent this?

Request for support for Lutron connected bulb remote

Issue was originally opened here zigpy/bellows#141 but was requested to be moved to the device handlers I believe the relevent information required is here.

2019-02-07 18:37:44 INFO (MainThread) [zigpy.device] [0x6e04] Discovered endpoints: [1]
2019-02-07 18:37:45 INFO (MainThread) [zigpy.endpoint] [0x6e04:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=49246 device_type=2080 device_version=2 input_clusters=[0, 4096, 65280, 64580] output_clusters=[4096, 3, 6, 8, 4, 5, 0, 65280]>
2019-02-07 18:37:45 DEBUG (MainThread) [zigpy.endpoint] [0x6e04:1] Manufacturer: Lutron
2019-02-07 18:37:45 DEBUG (MainThread) [zigpy.endpoint] [0x6e04:1] Model: LZL4BWHL01 Remote

Sengled Element A19NAE26 color temperature zha handler thingy

I've got several Sengled Element tunable white bulbs that I'd like to get working in HA with color temperature.

I haven't removed/rejoined the device so I don't have a "SimpleDescriptor" but I need it to match exactly for the quirk to work. I will get it.

That one time that I got a bellows description of the device:

Device:
NWK: 0xb94e
IEEE: b0:ce:18:14:03:01:43:a9
Endpoints:
1: profile=0x104, device_type=DeviceType.DIMMABLE_LIGHT
Input Clusters:
Basic (0)
Identify (3)
Groups (4)
Scenes (5)
On/Off (6)
Level control (8)
Color Control (768)
Metering (1794)
Diagnostic (2821)
Output Clusters:
Ota (25)

Current zigbee.db entry:

ieeeeeeeeeeeeee endpiont clust attrid value
b0:ce:18:14:03:01:43:a9 1 0 4 sengled
b0:ce:18:14:03:01:43:a9 1 0 5 Z01-A19NAE26
(how the crap do you format a table in here)

It seems like I should be able to modify the Osram A19 tunable white to work for the Sengled Element bulbs. I have no idea how to do that.

Everything is on endpoint 1.

bellows commands on the color cluster work:

bellows -v debug -d /dev/ttyUSB1 zcl -D /config/zigbee.db b0:ce:18:14:03:01:43:a9 1 768 command move_to_color_temp 300 5

The metering cluster puts out some kind of virtual watts, like the apparent wattage were the bulb an incandescent.

I have no idea what happens on the diagnostic cluster.

So I pretty much copy/pasted the OSRAM and made a sengled_element.py:

"""Sengled Element tunable white device."""
from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
Basic, Groups, Identify, LevelControl, OnOff, Ota, Scenes)
from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement
from zigpy.zcl.clusters.lighting import Color

class A19TunableWhite(CustomDevice):
"""Sengled A19 tunable white device."""

signature = {
    # <SimpleDescriptor endpoint=1 profile=260 device_type=257
    # device_version=1 input_clusters=[0, 3, 4, 5, 6, 8, 768, 1794, 2821]
    # output_clusters=[25]>
    1: {
        'manufacturer': 'sengled',
        'model': 'Z01-A19NAE26',
        'profile_id': zha.PROFILE_ID,
        'device_type': zha.DeviceType.DIMMABLE_LIGHT,
        'input_clusters': [
            Basic.cluster_id,
            Identify.cluster_id,
            Groups.cluster_id,
            Scenes.cluster_id,
            OnOff.cluster_id,
            LevelControl.cluster_id,
            Color.cluster_id,
            ElectricalMeasurement.cluster_id,
            Diagnostic.cluster_id
        ],
        'output_clusters': [
            Ota.cluster_id
        ],
    }
}

replacement = {
    'endpoints': {
        1: {
            'profile_id': zha.PROFILE_ID,
            'device_type': zha.DeviceType.COLOR_DIMMABLE_LIGHT,
            'input_clusters': [
                Basic.cluster_id,
                Identify.cluster_id,
                Groups.cluster_id,
                Scenes.cluster_id,
                OnOff.cluster_id,
                LevelControl.cluster_id,
                Color.cluster_id,
                ElectricalMeasurement.cluster_id,
                Diagnostic.cluster_id
            ],
            'output_clusters': [
                Ota.cluster_id
            ],
        },
    }
}

Do I have to coerce the device_type from DIMMABLE_LIGHT to COLOR_DIMMABLE_LIGHT so I have access to cluster 768?

Where do I put the .py file? /custom_components/zha_device_handlers/sengled/sengled_element.py?

Will it work?

P.S. I don't know where to put this other issue this so I'm hoping somebody can tell me:

If I try to issue the color cluster command in the HA service tab or using the ZHA integration page, I get the following error:

zha/core/device.py", line 366, in issue_cluster_command
expect_reply=True)
ValueError: Wrong number of parameters for request, expected 2 argument(s)

The 768 color cluster is available on the integration page, but it takes two arguments: color temp and transition time. I can't input two arguments on the ZHA integrations page and the service call throws the same "expected two arguments failure"

{"ieee":"b0:ce:18:14:03:01:43:a9",
"endpoint_id":"1",
"cluster_id":"768",
"cluster_type":"in",
"command":"10",
"command_type":"client",
"args":"200 3",
"manufacturer":""
}

pps: Is it a client or server command?

Thanks for the help.

Add support for xiaomi lumi plug?

What to do if quirks do not get applied?

My comment from an issue over in HA github.

HA 0.88.1, Conbee stick.

What do we do to get the quirks to apply? I have 7 Xiaomi temp sensors (all the same version/model). 5 have quirks, 2 do not.

  1. I removed the 2 from HA / ZHA page
  2. Double checked the zigbee.db and they were removed.
  3. Restart HA
  4. Permit/Added one sensor to HA
  5. Shows as "None None" node but has the quirks (same as my other 5)
  6. Restart HA
  7. Node name is now "LUMI lumi.weather" but has quirks "zigpy.device.Device" (which I assume if default?)

I also have 2 vibration sensors with same issue.

Should this issue be here or HA or zigpy-deconz?

CentraLite 3320-L refusing to complete pairing

HASS.io version: 0.93.2 on VirtualBox host
Zigbee Hub Device: Conbee II, latest firmware version (verified)
Quirks mode manually specified in configuration.yaml as follows:

zha:
  enable_quirks: true

(I know it is enabled by default but did so just in case it made a difference.)

Hope someone can help; I've been struggling with this for weeks. I've tried at least 4 different sensors. The first was from an unsealed box so I tried a factory reset but no luck. Thinking it might be defective I then tried 3 from factory sealed boxes but got the same error sequence each time (only the addresses are different, obviously):

Device 0x12c4 (00:0d:6f:00:0b:be:55:cb) joined the network
[0x12c4:zdo] ZDO request 0x0013: [48725, 00:00:80:00:0d:6f:00:0b, 0]
[0x12c4] Requesting 'Node Descriptor'
[0x12c4] Requesting 'Node Descriptor'
[0x12c4] Node Descriptor: <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=49887 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=0 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
Error calling listener.node_descriptor_updated: FOREIGN KEY constraint failed
[0x12c4:zdo] ZDO request 0x0006: [65533, 260, [], [1280]]
[0x12c4] Node Descriptor: <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=49887 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=0 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
[0x12c4] Discovering endpoints
[0x12c4] Discovered endpoints: [1, 2]
[0x12c4:1] Discovering endpoint information
[0x12c4:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=1026 device_version=0 input_clusters=[0, 1, 3, 32, 1026, 1280, 2821] output_clusters=[25]>
[0x12c4:1] Manufacturer: CentraLite
[0x12c4:1] Model: 3320-L
[0x12c4:2] Discovering endpoint information
[0x12c4:2] Discovered endpoint information: <SimpleDescriptor endpoint=2 profile=49887 device_type=12 device_version=0 input_clusters=[0, 1, 3, 2821, 64527] output_clusters=[3]>
[0x12c4] Endpoint 2 initialization failure: 
Removing device 0x12c4 (00:0d:6f:00:0b:be:55:cb)
Device 0x4f9f (00:0d:6f:00:0b:be:55:cb) joined the network
Device 00:0d:6f:00:0b:be:55:cb changed id (0x12c4 => 0x4f9f)
[0x4f9f:zdo] ZDO request 0x0013: [48725, 00:00:80:00:0d:6f:00:0b, 0]
[0x4f9f:2] Discovering endpoint information
[0x4f9f:2] Discovered endpoint information: <SimpleDescriptor endpoint=2 profile=49887 device_type=12 device_version=0 input_clusters=[0, 1, 3, 2821, 64527] output_clusters=[3]>
[0x4f9f:zdo] ZDO request 0x0006: [65533, 260, [], [1280]]
Sending 'zdo_leave_req' failed: 
[0x4f9f] Endpoint 2 initialization failure: 
Device not found for removal: 00:0d:6f:00:0b:be:55:cb

I know the Conbee II is working as I am able to pair GE Link lights immediately and was also able to pair a Quirky Tripper - with both working well afterwards. I see that the 3320-L is listed as being supported so I am confused as to why it seems to attempt the pairing but in each case it seems to fail. I have the Conbee II attached via a USB extension as advised by the vendor and have placed each sensor right next to the Conbee II to eliminate reception issues.

I researched every source I could before posting the issue here so I've run out of resources and ideas. Any help or insight you might be able to provide would be greatly appreciated. Please let me know if I can provide any additional information.

Xiaomi Button state is inverted

I am using the xiaomi round button and its state reported is inverted. When not pushing the button it is showing as on and when pushing it it shows as off.

Additional model is necessary for the mija weather sensor

EDIT:

[0xe2ba:1] Manufacturer: LUMI
[0xe2ba:1] Model: lumi.sens

we have another partial model from Xiaomi.

Additional model is necessary for the mija weather sensor.

Device 0xe2ba (00:15:8d:00:03:3b:14:2c) joined the network
[0xe2ba] Requesting 'Node Descriptor'
[0xe2ba:zdo] ZDO request 0x0013: [0xe2ba, 00:15:8d:00:03:3b:14:2c, 128]
[0xe2ba] Node Descriptor: <Optional byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4151 maximum_buffer_size=127 maximum_incoming_transfer_size=100 server_mask=0 maximum_outgoing_transfer_size=100 descriptor_capability_field=0>
[0xe2ba] Discovering endpoints
[0xe2ba] Discovered endpoints: [1, 2, 3]
[0xe2ba:1] Discovering endpoint information
Ignoring unknown cluster ID 0x0000
[0xe2ba:1] Message on unknown cluster 0x0000
[0xe2ba:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=24321 device_version=1 input_clusters=[0, 3, 25, 65535, 18] output_clusters=[0, 4, 3, 5, 25, 65535, 18]>
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
[0xe2ba:1] Manufacturer: LUMI
[0xe2ba:1] Model: lumi.sens
[0xe2ba:2] Discovering endpoint information
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
[0xe2ba:2] Discovered endpoint information: <SimpleDescriptor endpoint=2 profile=260 device_type=24322 device_version=1 input_clusters=[3, 18] output_clusters=[4, 3, 5, 18]>
[0xe2ba:3] Discovering endpoint information
[0xe2ba:3] Discovered endpoint information: <SimpleDescriptor endpoint=3 profile=260 device_type=24323 device_version=1 input_clusters=[3, 12] output_clusters=[4, 3, 5, 12]>
Checking quirks for LUMI lumi.sens (00:15:8d:00:03:3b:14:2c)
Considering <class 'zigpy.quirks.smartthings.SmartthingsMultiPurposeSensor'>
Fail because endpoint list mismatch: {1} {1, 2, 3}
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1, 2, 3}
Considering <class 'zhaquirks.lutron.lzl4bwhl01remote.LutronLZL4BWHL01Remote2'>
Fail because endpoint list mismatch: {1} {1, 2, 3}
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because endpoint list mismatch: {1} {1, 2, 3}
Considering <class 'zhaquirks.osram.a19twhite.A19TunableWhite'>
Fail because endpoint list mismatch: {3} {1, 2, 3}
Considering <class 'zhaquirks.philips.rwl021.PhilipsRWL021'>
Fail because endpoint list mismatch: {1, 2} {1, 2, 3}
Considering <class 'zhaquirks.sinope.thermostat.SinopeTechnologiesThermostat'>
Fail because endpoint list mismatch: {1, 196} {1, 2, 3}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because endpoint list mismatch: {1} {1, 2, 3}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2, 3}
Considering <class 'zhaquirks.xbee.xbee_io.XbeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2, 3}
Considering <class 'zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor'>
Fail because endpoint list mismatch: {1} {1, 2, 3}
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because endpoint list mismatch: {1} {1, 2, 3}
LUMI lumi.sens: started configuration
LUMI lumi.sens: channel: zdo-LUMI lumi.sens_ZDO async_configure stage succeeded
0xe2ba:1:0x0000: finished channel configuration
0xe2ba:1:0x0012: finished channel configuration
LUMI lumi.sens: channel: attribute-0xe2ba:1:0x0012 async_configure stage succeeded
0xe2ba:1:0x0005: finished channel configuration
LUMI lumi.sens: channel: scenes-0xe2ba:1:0x0005 async_configure stage succeeded
0xe2ba:2:0x0012: finished channel configuration
LUMI lumi.sens: channel: attribute-0xe2ba:2:0x0012 async_configure stage succeeded
0xe2ba:2:0x0005: finished channel configuration
LUMI lumi.sens: channel: scenes-0xe2ba:2:0x0005 async_configure stage succeeded
0xe2ba:3:0x000c: finished channel configuration
LUMI lumi.sens: channel: attribute-0xe2ba:3:0x000c async_configure stage succeeded
0xe2ba:3:0x0005: finished channel configuration
LUMI lumi.sens: channel: scenes-0xe2ba:3:0x0005 async_configure stage succeeded
Ignoring unknown cluster ID 0x0402
[0xe2ba:1] Message on unknown cluster 0x0402
Ignoring unknown cluster ID 0x0405
[0xe2ba:1] Message on unknown cluster 0x0405
initializing channel: basic from_cache: False
LUMI lumi.sens: channel: basic-0xe2ba:1:0x0000 async_configure stage succeeded
LUMI lumi.sens: completed configuration
LUMI lumi.sens: stored in registry: ZhaDeviceEntry(name='LUMI lumi.sens', ieee='00:15:8d:00:03:3b:14:2c', last_seen=1561924844.647569)
LUMI lumi.sens: started initialization
entry loaded from storage: ZhaDeviceEntry(name='LUMI lumi.sens', ieee='00:15:8d:00:03:3b:14:2c', last_seen=1561924844.647569)
LUMI lumi.sens: channel: zdo-LUMI lumi.sens_ZDO async_initialize stage succeeded
initializing channel: scenes from_cache: False
LUMI lumi.sens: channel: scenes-0xe2ba:1:0x0005 async_initialize stage succeeded
Ignoring unknown cluster ID 0x0402
[0xe2ba:1] Message on unknown cluster 0x0402
Ignoring unknown cluster ID 0x0405
[0xe2ba:1] Message on unknown cluster 0x0405
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
initializing channel: basic from_cache: False
LUMI lumi.sens: channel: basic-0xe2ba:1:0x0000 async_initialize stage succeeded
initializing channel: scenes from_cache: False
LUMI lumi.sens: channel: scenes-0xe2ba:2:0x0005 async_initialize stage succeeded
initializing channel: attribute from_cache: False
LUMI lumi.sens: channel: attribute-0xe2ba:1:0x0012 async_initialize stage succeeded
initializing channel: scenes from_cache: False
LUMI lumi.sens: channel: scenes-0xe2ba:3:0x0005 async_initialize stage succeeded
Ignoring unknown cluster ID 0x0402
[0xe2ba:1] Message on unknown cluster 0x0402
Ignoring unknown cluster ID 0x0405
[0xe2ba:1] Message on unknown cluster 0x0405
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
initializing channel: attribute from_cache: False
LUMI lumi.sens: channel: attribute-0xe2ba:2:0x0012 async_initialize stage succeeded
Ignoring unknown cluster ID 0x0402
[0xe2ba:1] Message on unknown cluster 0x0402
Ignoring unknown cluster ID 0x0405
[0xe2ba:1] Message on unknown cluster 0x0405
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
Ignoring unknown cluster ID 0x0402
[0xe2ba:1] Message on unknown cluster 0x0402
Ignoring unknown cluster ID 0x0405
[0xe2ba:1] Message on unknown cluster 0x0405
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
Ignoring unknown cluster ID 0x0402
[0xe2ba:1] Message on unknown cluster 0x0402
Ignoring unknown cluster ID 0x0405
[0xe2ba:1] Message on unknown cluster 0x0405
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht
[0xe2ba:1:0x0000] ZCL request 0x000a: [[<Attribute attrid=5 value=<TypeValue type=CharacterString, value=lumi.sensor_ht>>]]
[0xe2ba:1:0x0000] Attribute report received: model=lumi.sensor_ht

Xiaomi AQARA Switch aq3 with gyro (WXKG12LM) not well recognized

Hello,

This model is recognized as "lumi.sensor_swit", while it is a "lumi.sensor_switch.aq3".
Its signature is

[0x6497:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=24321 device_version=1 input_clusters=[0, 18, 6, 1] output_clusters=[0]>
[0x6497:1] Manufacturer: LUMI
[0x6497:1] Model: lumi.sensor_swit

In zhaquirks/xiaomi/aqara/sensor_switch_aq3.py, modifying the line
'model': 'lumi.sensor_switch.aq3',
to
'model': 'lumi.sensor_swit'
solves the issue.

I do not know if this is a good correction.
The model seems truncated for whatever reason and THIS is maybe the real problem.

Again, let me know if and how I could help.

Support for Centralite 3405-L

Hi there! Was wondering about support for the Centralite 3405-L Security Keypad.

This is known as the "Lowes Iris Keypad V2" (there is a V1, which is the proprietary Lowes Iris / AlertMe zigbee, and the v3, also from Centralite, which has different features).

Lowes Iris Keypad V2 Manual (pdf warning)

SmartThings Groovy Support Handler for the Keypad

Log output from adding the device via hassio / Home-Assistant 93.2 via a Nortek HUSBZB-1 (removed
most of the list of failures to match quirks).

[0x0000:zdo] ZDO request 0x0036: [60, <Bool.false: 0>]
Device 0xa734 (00:0d:6f:00:0b:63:2e:9f) joined the network
[0xa734] Requesting 'Node Descriptor'
[0xa734:zdo] ZDO request 0x0013: [42804, 00:0d:6f:00:0b:63:2e:9f, 128]
[0xa734] Node Descriptor: <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4174 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=0 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
[0xa734] Discovering endpoints
[0xa734] Discovered endpoints: [1]
[0xa734:1] Discovering endpoint information
[0xa734:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=1025 device_version=0 input_clusters=[0, 1, 3, 32, 1026, 1280, 1281, 2821, 64516, 64517] output_clusters=[25, 1281]>
[0xa734:1] Manufacturer: CentraLite
[0xa734:1] Model: 3405-L
Considering <class 'zigpy.quirks.smartthings.SmartthingsMultiPurposeSensor'>
Fail because device_type mismatch on at least one endpoint
...
Considering <class 'zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor'>
Fail because device_type mismatch on at least one endpoint
CentraLite 3405-L: started configuration
node descriptor: [<Status.SUCCESS: 0>, 42804, <NodeDescriptor byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4174 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=0 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>]
CentraLite 3405-L: channel: zdo-CentraLite 3405-L_ZDO async_configure stage succeeded
0xa734:1:0x0000: finished channel configuration
initializing channel: basic from_cache: False
CentraLite 3405-L: channel: basic-0xa734:1:0x0000 async_configure stage succeeded
[0xa734:1:0x0000] Unexpected ZCL reply 0x0001: [[<ReadAttributeRecord attrid=7 status=0 value=3>]]
0xa734:1:0x0500: started IASZoneChannel configuration
0xa734:1:0x0001: bound  'power' cluster: Status.SUCCESS
0xa734:1:0x0402: bound  'temperature' cluster: Status.SUCCESS
0xa734:1:0x0500: bound  'ias_zone' cluster: Status.SUCCESS
0xa734:1:0x0001: reporting 'battery_voltage' attr on 'power' cluster: 30/900/1: Result: '[[<ConfigureReportingResponseRecord status=0 direction=0 attrid=0>]]'
0xa734:1:0x0402: reporting 'measured_value' attr on 'temperature' cluster: 30/900/50: Result: '[[<ConfigureReportingResponseRecord status=0 direction=0 attrid=0>]]'
0xa734:1:0x0500: wrote cie_addr: 00:0d:6f:00:0a:ff:73:58 to 'ias_zone' cluster: [<WriteAttributesStatusRecord status=Status.SUCCESS attrid=0>]
0xa734:1:0x0500: finished IASZoneChannel configuration
CentraLite 3405-L: channel: ias_zone-0xa734:1:0x0500 async_configure stage succeeded
0xa734:1:0x0402: finished channel configuration
CentraLite 3405-L: channel: attribute-0xa734:1:0x0402 async_configure stage succeeded
0xa734:1:0x0001: reporting 'battery_percentage_remaining' attr on 'power' cluster: 30/900/1: Result: '[[<ConfigureReportingResponseRecord status=134 direction=0 attrid=33>]]'
0xa734:1:0x0001: finished channel configuration
CentraLite 3405-L: channel: power-0xa734:1:0x0001 async_configure stage succeeded
CentraLite 3405-L: completed configuration
CentraLite 3405-L: stored in registry: ZhaDeviceEntry(name='CentraLite 3405-L', ieee='00:0d:6f:00:0b:63:2e:9f', power_source=0, manufacturer_code=4174, last_seen=1559071414.6262376)
CentraLite 3405-L: started initialization
entry loaded from storage: ZhaDeviceEntry(name='CentraLite 3405-L', ieee='00:0d:6f:00:0b:63:2e:9f', power_source=0, manufacturer_code=4174, last_seen=1559071414.6262376)
CentraLite 3405-L: channel: zdo-CentraLite 3405-L_ZDO async_initialize stage succeeded
initializing channel: basic from_cache: False
CentraLite 3405-L: channel: basic-0xa734:1:0x0000 async_initialize stage succeeded
initializing channel: attribute from_cache: False
CentraLite 3405-L: channel: attribute-0xa734:1:0x0402 async_initialize stage succeeded
initializing channel: ias_zone from_cache: False
CentraLite 3405-L: channel: ias_zone-0xa734:1:0x0500 async_initialize stage succeeded
initializing channel: power from_cache: False
CentraLite 3405-L: channel: power-0xa734:1:0x0001 async_initialize stage succeeded
CentraLite 3405-L: power source: Battery or Unknown
CentraLite 3405-L: completed initialization
0x62b0:1:0x0b04 async_update
0x62b0:1:0x0b04 async_update
[0xa734:1:0x0501] ZCL request 0x0107: []
[0xa734:1:0x0501] No handler for cluster command 7
Data remains after deserializing ZCL frame
[0xa734:1:0x0501] ZCL request 0x0100: []
[0xa734:1:0x0501] No handler for cluster command 0
[0xa734:1:0x0501] ZCL request 0x0104: []
[0xa734:1:0x0501] No handler for cluster command 4
Device 0xa734 (00:0d:6f:00:0b:63:2e:9f) joined the network
Skip initialization for existing device 00:0d:6f:00:0b:63:2e:9f
[0xa734:zdo] ZDO request 0x0013: [42804, 00:0d:6f:00:0b:63:2e:9f, 128]
[0xa734:1:0x0501] ZCL request 0x0107: []
[0xa734:1:0x0501] No handler for cluster command 7
[0xa734:1:0x0501] ZCL request 0x0107: []
[0xa734:1:0x0501] No handler for cluster command 7
[0xa734:1:0x0501] ZCL request 0x0107: []
[0xa734:1:0x0501] No handler for cluster command 7
[0xa734:1:0x0501] ZCL request 0x0104: []
[0xa734:1:0x0501] No handler for cluster command 4
[0x448c:1:0x0001] ZCL request 0x000a: [[<Attribute attrid=32 value=<TypeValue type=uint8_t, value=28>>]]
[0x448c:1:0x0001] Attribute report received: battery_voltage=28

Hitting buttons will pop up the No handler... messages. Eventually I'll get 2019-05-28 15:24:21 WARNING (MainThread) [zigpy.zcl] Data remains after deserializing ZCL frame in the Home Assistant log and stop receiving reports.

Did I miss any required info? What can I do to help?

battery level incorrect for Xiaomi Aqara Door/Window Sensor

Reported Battery level is always 100% (same as Phoscon/deCONZ) when Xiaomi Aqara hub reports (what I think is) the correct value of 41%.
In addition reported battery type is CR2016 when actual battery is CR2032.
Actual battery has been on shelf several years and in use in Aqara sensor for 6+ months hence my belief the value reported by Aqara hub is correct (and defo not 100%)
I use a ConbeeII with the latest firmware (deCONZ_ConBeeII_0x264a0700) on Ubuntu 16.04
Home-Assistant 0.94.3
Hope I've given you everything you need.

AduroSmart ERIA Smart Wireless Dimming Switch Remote

https://www.amazon.com/gp/product/B07HJHJWGT/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1

Is this enough info to create a quirk for this remote? If not let me know and I can look for more logs. I'm @ tube on discord.

[zigpy.endpoint] [0x1d0f:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=2080 device_version=2 input_clusters=[0, 3, 8, 4096, 64716] output_clusters=[3, 4, 6, 8, 4096, 64716]>

On:

2019-05-03 09:33:43 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0006] ZCL request 0x0101: []
2019-05-03 09:33:43 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0006] No handler for cluster command 1
2019-05-03 09:33:43 WARNING (MainThread) [zigpy.zcl] Unknown cluster-specific command 0
2019-05-03 09:33:43 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] ZCL request 0x0100: b'\x00\x00\x00'
2019-05-03 09:33:43 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] No handler for cluster command 0

Up:

2019-05-03 09:32:44 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0008] ZCL request 0x0102: [0, 16, 9]
2019-05-03 09:32:44 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0008] No handler for cluster command 2
2019-05-03 09:32:44 WARNING (MainThread) [zigpy.zcl] Unknown cluster-specific command 0
2019-05-03 09:32:44 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] ZCL request 0x0100: b'\x00\x01\x00'
2019-05-03 09:32:44 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] No handler for cluster command 0

Down:

2019-05-03 09:34:52 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0008] ZCL request 0x0102: [1, 16, 9]
2019-05-03 09:34:52 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0008] No handler for cluster command 2
2019-05-03 09:34:52 WARNING (MainThread) [zigpy.zcl] Unknown cluster-specific command 0
2019-05-03 09:34:52 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] ZCL request 0x0100: b'\x00\x02\x00'
2019-05-03 09:34:52 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] No handler for cluster command 0

Off:

2019-05-03 09:35:15 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0006] ZCL request 0x0100: []
2019-05-03 09:35:15 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0x0006] No handler for cluster command 0
2019-05-03 09:35:15 WARNING (MainThread) [zigpy.zcl] Unknown cluster-specific command 0
2019-05-03 09:35:15 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] ZCL request 0x0100: b'\x00\x03\x00'
2019-05-03 09:35:15 DEBUG (MainThread) [zigpy.zcl] [0x1d0f:1:0xfccc] No handler for cluster command 0

Overriding the response to match descriptor

Is there a way to override the response to the match descriptor request from a quirk? The Iris SmartPlugs (V1), require custom response to join the network. I modified handle_match_desc in zigpy/zdo/init.py, but feel like this should be possible from a quirk. Example below.

def handle_match_desc(self, addr, profile, in_clusters, out_clusters):                                                           
        local_addr = self._device.application.nwk                                                                                    
        self.debug('Match Desc %s' % profile)                                                                                        
        if profile == 260:                                                                                                           
            response = (0x8006, 0, local_addr, [t.uint8_t(1)])                                                                       
        elif profile == 0xc216:                                                                                                      
            response = (0x8006, 0, local_addr, [t.uint16_t(258)])                                                                    
        else:                                                                                                                        
            response = (0x8006, 0, local_addr, [])                                                                                   
        self.reply(*response) 

Thanks

Xiaomi Aqara Wall Switch Wireless single button (WXKG03LM) not working

Hello,

As my previous issue was closed [issue 70(https://github.com//issues/70), I did not know what to do, except opening this new bug. If this is not the right way, please tell me.

My comments in issue 70 are still valid. To summarize:

  • I manually applied your patch and there are now 3 sensors, but their status is "unknown" .
  • I created the fileremote_b186acn01.py from remote_b286acn01.py and while there are too many sensors, one is properly reporting events. Those events are misnamed (left_single, double_single etc) but that is not the most important.

I do not see "zha_event in the event tool in HA.". But I will search.

Again, let me know if you need more informations or if I can help in any way.

Mija temperature sensor only reports 0.5 degree intervals

When running the sensor zhaquirks.xiaomi.mija.sensor_ht.Weather on a xiaomi gateway it will report on 0.1 degrees Celsius intervals when running on ZHA it only pushes an update once it diverted 0.5 degrees from the previous value.

I was unable to manually configure the sensor to behave the same as on a xiaomi gateway and think that the default behavior should be similar as it took me some time to realize that it is just not publishing if there is only a slight temperature change and it not completely broken.

Object has no attribute 'cluster_command'

I am attempting to get the Iris Smart Plug V1 sensors working. So far, I have the switch portion working, but still have work to do on the usage reporting. However, the logs are full of the following:

Error calling 'listener.cluster_command': Sensor object has no attribute 'cluster_command' ‎18‎:‎17 __main__.py (WARNING)

Error calling 'listener.cluster_command': Switch object has no attribute 'cluster_command' ‎18‎:‎17 __main__.py (WARNING)

Any ideas what I am doing wrong here?

<SimpleDescriptor endpoint=2 profile=49686 device_type=7 device_version=0 input_clusters=[240, 239, 238] output_clusters=[]>                                            
<SimpleDescriptor endpoint=240 profile=49686 device_type=7 device_version=0 input_clusters=[2941] output_clusters=[]>
class StatusBool(bytes):
    def serialize(self):
        _LOGGER.debug("Serialize not implemented.")

    @classmethod
    def deserialize(cls, data):
        bytes = int.from_bytes(data[:1], 'little')
        s = data[1:bytes + 1]
        r = int.from_bytes(s, 'little') & 1
        return bool(r), b''


class IrisPlug(CustomDevice):
    class IrisSmartPlugUsageCluster(LocalDataCluster, ElectricalMeasurement):
        cluster_id = 0x00ef
        name = "Iris Smart Plug Usage"
        ep_attribute = 'analog_value'

        attributes = {
            0x0081: ('active_power', t.uint32_t),
            0x0082: ('cumlative_usage', (t.uint32_t, t.uint32_t, t.uint24_t, t.uint8_t,)),
        }
        client_commands = {
            0x0081: ('active_power', (t.uint32_t,), False),
            0x0082: ('cumlative_usage', (t.uint32_t, t.uint32_t, t.uint24_t, t.uint8_t,), False),
        }
        server_commands = {}

    class IrisSmartPlugUknCluster(CustomCluster):
        cluster_id = 0x00f0
        name = "Iris Smart Plug Ukn"
        ep_attribute = 'smartplug'
        void_input_commands = [0x00fb]
        attributes = {
            0x00fb: ('current_temp', (t.uint64_t, t.uint32_t, t.uint16_t,)),
        }
        client_commands = {
            0x00fb: ('current_temp', (t.uint64_t, t.uint32_t, t.uint16_t,), False),
        }
        server_commands = {}

    class IrisOnOff(EventableCluster, OnOff):
        """Attributes and commands for switching devices between
        ‘On’ and ‘Off’ states. """
        cluster_id = 0x00ee
        name = 'On/Off'
        ep_attribute = 'on_off'
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)


        def handle_cluster_request(self, tsn, command_id, args):
            self._update_attribute(self._attridx.get('on_off'), args[0])
            def __init__(self, *arg, **kwargs):
                super().__init__(*args, **kwargs)

        @util.retryable_request
        def request(self, general, command_id, schema, *args, manufacturer=None, expect_reply=True):
            def __init__(self, *args, **kwargs):
                super().__init__(*args, **kwargs)

            if command_id == 0:
                sequence = self._endpoint._device.application.get_sequence()
                asyncio.ensure_future(self._endpoint._device.request(0xc216, 0x00ee, 0, 2, sequence, b'\x11\x00\x01\x01', expect_reply=False))
                sequence = self._endpoint._device.application.get_sequence()
                return asyncio.ensure_future(self._endpoint._device.request(0xc216, 0x00ee, 0, 2, sequence, b'\x11\x00\x02\x01\x01', expect_reply=False))
            elif command_id == 1:
                sequence = self._endpoint._device.application.get_sequence()
                asyncio.ensure_future(self._endpoint._device.request(0xc216, 0x00ee, 0, 2, sequence, b'\x11\x00\x01\x01', expect_reply=False))
                sequence = self._endpoint._device.application.get_sequence()
                return asyncio.ensure_future(self._endpoint._device.request(0xc216, 0x00ee, 0, 2, sequence, b'\x11\x00\x02\x00\x01', expect_reply=False))
            return None

        attributes = {
            0x0000: ('on_off', t.Bool),
        }
        server_commands = {
            0x00: ('on',(), False),
            0x01: ('off',(), False),
        }
        client_commands = {
            0x0080: ('on_off', (StatusBool,), False),
        }


    signature = {
        2: {
            'profile_id': 0xc216,
            'device_type': 0x0007,
            'input_clusters': [0x00ee, 0x00ef, 0x00f0],
            'output_clusters': [],
        },
        240: {
            'profile_id': 0xc216,
            'device_type': 0x0007,
            'input_clusters': [2941],
            'output_clusters': [],
        },
    }
    replacement = {
        'endpoints': {
            2: {
                'manufacturer': 'Iris',
                'model': 'AlertMe',
                'input_clusters': [IrisOnOff, IrisSmartPlugUsageCluster, IrisSmartPlugUknCluster],
                'output_clusters': [IrisOnOff],
            }
        },

    }```


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.