zigpy / zha-device-handlers

ZHA device handlers bridge the functionality gap created when manufacturers deviate from the ZCL specification, handling deviations and exceptions by parsing custom messages to and from Zigbee devices.
Apache License 2.0
705 stars 651 forks source link

[Device Support Request] Aqara Presence Detector FP1 (RTCZCGQ11LM; lumi.motion.ac01) #1533

Closed Daniel-dev22 closed 2 years ago

Daniel-dev22 commented 2 years ago

Is your feature request related to a problem? Please describe. New Aqara FP1 sensor is only partially compatible with zigbee2mqtt at this time. I say partially because they haven't figured out how to expose the zone part of the sensor to zigbee2mqtt. I would rather stick with zha so it would be nice if we can get it to work with zha potentially piggybacking off what zigbee2mqtt did as a start.

https://github.com/Koenkk/zigbee2mqtt/issues/11019

https://www.aqara.com/cn/productDetail/Aqara-Presence-Detector-FP1

I don't have the device physically to paste anything here.

Everything Smart Home YouTube Video on this new device: https://youtu.be/Leru0rCS8b0

EverythingSmartHome commented 2 years ago

Let me know if I can provide anything from this sensor to help make a quirk for it - I can try and give the quirk a go myself but I've only done more basic ones before, this one is probably a bit out of my league!

Tropaion commented 2 years ago

@EverythingSmartHome You have to post pairing logs and device signature. Your issue could probably be solved together with this one: https://github.com/zigpy/zha-device-handlers/issues/1498

dmulcahey commented 2 years ago

Let me know if I can provide anything from this sensor to help make a quirk for it - I can try and give the quirk a go myself but I've only done more basic ones before, this one is probably a bit out of my league!

Do you have a reliable way to acquire them? I have been trying for a couple months to get my hands on them. Finally got an order placed on Ali Express a couple weeks ago and they cancelled it on me!

EverythingSmartHome commented 2 years ago

Let me know if I can provide anything from this sensor to help make a quirk for it - I can try and give the quirk a go myself but I've only done more basic ones before, this one is probably a bit out of my league!

Do you have a reliable way to acquire them? I have been trying for a couple months to get my hands on them. Finally got an order placed on Ali Express a couple weeks ago and they cancelled it on me!

I don't unfortunately, I wish I did - I would have bought a few more! I'll do some investigating see if I can get some more info from Aqara directly

EverythingSmartHome commented 2 years ago

@EverythingSmartHome You have to post pairing logs and device signature. Your issue could probably be solved together with this one: #1498

Here is the signature:

{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered: 140>, manufacturer_code=4660, maximum_buffer_size=108, maximum_incoming_transfer_size=127, server_mask=11264, maximum_outgoing_transfer_size=127, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0xfff0",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0xfcc0"
      ],
      "out_clusters": [
        "0x0003",
        "0x0019"
      ]
    }
  },
  "manufacturer": "aqara",
  "model": "lumi.motion.ac01",
  "class": "zigpy.device.Device"
}

Logs:

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_rsp: [<Status.SUCCESS: 0>]
[0x0000:zdo] No handler for ZDO request:ZDOCmd.Mgmt_Permit_Joining_rsp([<Status.SUCCESS: 0>])
[0xa732:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_rsp: [<Status.SUCCESS: 0>]
[0xa732:zdo] No handler for ZDO request:ZDOCmd.Mgmt_Permit_Joining_rsp([<Status.SUCCESS: 0>])
[0xa732:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_rsp: [<Status.SUCCESS: 0>]
[0xa732:zdo] No handler for ZDO request:ZDOCmd.Mgmt_Permit_Joining_rsp([<Status.SUCCESS: 0>])
New device 0xf306 (54:ef:44:10:00:47:1a:5c) joined the network
[0xf306] Scheduling initialization
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 19: b'\x01\x06\xf3\\\x1aG\x00\x10D\xefT\x8c'
[0xf306:zdo] ZDO request ZDOCmd.Device_annce: [0xF306, 54:ef:44:10:00:47:1a:5c, 140]
Tries remaining: 3
[0xf306] Requesting 'Node Descriptor'
Tries remaining: 2
[0xf306] Extending timeout for 0xae request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 10: b'\x00\x00\x00\x00\x00'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0x000a id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=0, command_id=0, *is_reply=False), payload: b'\x00\x00'
[0xf306] Uninitialized device command '0' params: Read_Attributes(attribute_ids=[0])
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 0: b'\x18\x01\x0A\x05\x00\x42\x10\x6C\x75\x6D\x69\x2E\x6D\x6F\x74\x69\x6F\x6E\x2E\x61\x63\x30\x31\x01\x00\x20\x35'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0x0000 id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=1, command_id=10, *is_reply=True), payload: b'\x05\x00B\x10lumi.motion.ac01\x01\x00 5'
[0xf306] Uninitialized device command '10' params: Report_Attributes(attribute_reports=[Attribute(attrid=0x0005, value=TypeValue(type=CharacterString, value='lumi.motion.ac01')), Attribute(attrid=0x0001, value=TypeValue(type=uint8_t, value=53))])
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 64704: b'\x18\x02\x0A\xF7\x00\x41\x2D\x03\x28\x17\x05\x21\x01\x00\x08\x21\x35\x01\x0A\x21\x96\x90\x0C\x20\x14\x10\x20\x01\x12\x20\x00\x65\x20\xFF\x66\x20\x03\x67\x20\x00\x68\x20\x00\x69\x20\x01\x6A\x20\x01\x6B\x20\x03'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0xfcc0 id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=2, command_id=10, *is_reply=True), payload: b'\xf7\x00A-\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'
[0xf306] Uninitialized device command '10' params: Report_Attributes(attribute_reports=[Attribute(attrid=0x00F7, value=TypeValue(type=LVBytes, value=b'\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'))])
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 32770: b'\xae\x00\x06\xf3\x02@\x8c4\x12l\x7f\x00\x00,\x7f\x00\x00'
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 64704: b'\x18\x03\x0A\xF7\x00\x41\x2D\x03\x28\x17\x05\x21\x01\x00\x08\x21\x35\x01\x0A\x21\x96\x90\x0C\x20\x14\x10\x20\x01\x12\x20\x00\x65\x20\xFF\x66\x20\x03\x67\x20\x00\x68\x20\x00\x69\x20\x01\x6A\x20\x01\x6B\x20\x03'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0xfcc0 id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=3, command_id=10, *is_reply=True), payload: b'\xf7\x00A-\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'
[0xf306] Uninitialized device command '10' params: Report_Attributes(attribute_reports=[Attribute(attrid=0x00F7, value=TypeValue(type=LVBytes, value=b'\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'))])
[0xf306] Got Node Descriptor: NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered: 140>, manufacturer_code=4660, maximum_buffer_size=108, maximum_incoming_transfer_size=127, server_mask=11264, maximum_outgoing_transfer_size=127, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=False, *is_security_capable=False)
[0xf306] Discovering endpoints
Tries remaining: 3
[0xf306] Extending timeout for 0xaf request
[0x6AF0:1:0x0b04] Received ZCL frame: b'\x18\x10\x0A\x05\x05\x21\xFD\x00'
[0x6AF0:1:0x0b04] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=16, command_id=10, *is_reply=True)
[0x6AF0:1:0x0b04] Decoded ZCL frame: TuyaZBElectricalMeasurement:Report_Attributes(attribute_reports=[Attribute(attrid=0x0505, value=TypeValue(type=uint16_t, value=253))])
[0x6AF0:1:0x0b04] Received command 0x0A (TSN 16): Report_Attributes(attribute_reports=[Attribute(attrid=0x0505, value=TypeValue(type=uint16_t, value=253))])
[0x6AF0:1:0x0b04] Attribute report received: rms_voltage=253
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 32773: b'\xaf\x00\x06\xf3\x01\x01'
[0xf306] Discovered endpoints: [1]
[0xf306] Initializing endpoints [<Endpoint id=1 in=[] out=[] status=<Status.NEW: 0>>]
[0xf306:1] Discovering endpoint information
Tries remaining: 3
[0xf306] Extending timeout for 0xb0 request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 32772: b'\xb0\x00\x06\xf3\x12\x01\x04\x01\xf0\xff\x00\x03\x00\x00\x03\x00\xc0\xfc\x02\x03\x00\x19\x00'
[0xf306:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=65520, device_version=0, input_clusters=[0, 3, 64704], output_clusters=[3, 25])
[0xF306:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=177, command_id=<GeneralCommand.Read_Attributes: 0>, *is_reply=False)
[0xF306:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 5])
[0xf306] Extending timeout for 0xb1 request
[0xF306:1:0x0000] Received ZCL frame: b'\x18\xB1\x01\x04\x00\x00\x42\x05\x61\x71\x61\x72\x61\x05\x00\x00\x42\x10\x6C\x75\x6D\x69\x2E\x6D\x6F\x74\x69\x6F\x6E\x2E\x61\x63\x30\x31'
[0xF306:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=177, command_id=1, *is_reply=True)
[0xF306:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='aqara')), ReadAttributeRecord(attrid=0x0005, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='lumi.motion.ac01'))])
[0xf306] Read model 'lumi.motion.ac01' and manufacturer 'aqara' from <Endpoint id=1 in=[basic:0x0000, identify:0x0003, manufacturer_specific:0xFCC0] out=[identify:0x0003, ota:0x0019] status=<Status.ZDO_INIT: 1>>
[0xf306] Discovered basic device information for <Device model='lumi.motion.ac01' manuf='aqara' nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=True>
Device is initialized <Device model='lumi.motion.ac01' manuf='aqara' nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=True>
Checking quirks for aqara lumi.motion.ac01 (54:ef:44:10:00:47:1a:5c)
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1}
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because device_type mismatch on at least one endpoint
'button' component -> 'ZHAIdentifyButton' using ['identify']
'sensor' component -> 'RSSISensor' using ['basic']
'sensor' component -> 'LQISensor' using ['basic']
device - 0xF306:54:ef:44:10:00:47:1a:5c entering async_device_initialized - is_new_join: True
device - 0xF306:54:ef:44:10:00:47:1a:5c has joined the ZHA zigbee network
[0xF306](lumi.motion.ac01): started configuration
[0xF306:ZDO](lumi.motion.ac01): 'async_configure' stage succeeded
[0xF306:1:0x0000]: finished channel configuration
[0xF306:1:0x0003]: finished channel configuration
[0xf306] Extending timeout for 0xb2 request
[0xF306:1:0x0019]: finished channel configuration
Error handling '_save_attribute' event with (54:ef:44:10:00:47:1a:5c, 1, 0, 4, 'aqara') params: FOREIGN KEY constraint failed
Error handling '_save_attribute' event with (54:ef:44:10:00:47:1a:5c, 1, 0, 5, 'lumi.motion.ac01') params: FOREIGN KEY constraint failed
[0xF306:1:0xfcc0]: bound 'manufacturer_specific' cluster: Status.SUCCESS
[0xF306:1:0xfcc0]: finished channel configuration
[0xF306:1:0x0000]: 'async_configure' stage succeeded
[0xF306:1:0x0003]: 'async_configure' stage succeeded
[0xF306:1:0xfcc0]: 'async_configure' stage succeeded
[0xF306:1:0x0019]: 'async_configure' stage succeeded
[0xF306](lumi.motion.ac01): completed configuration
[0xF306](lumi.motion.ac01): stored in registry: ZhaDeviceEntry(name='aqara lumi.motion.ac01', ieee='54:ef:44:10:00:47:1a:5c', last_seen=1651005619.9039047)
[0xF306:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=False, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=179, command_id=64, *is_reply=False)
[0xF306:1:0x0003] Sending request: trigger_effect(effect_id=<EffectIdentifier.Okay: 2>, effect_variant=<EffectVariant.Default: 0>)
[0xf306] Extending timeout for 0xb3 request
[0xF306:1:0x0003] Received ZCL frame: b'\x18\xB3\x0B\x40\x00'
[0xF306:1:0x0003] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=179, command_id=11, *is_reply=True)
[0xF306:1:0x0003] Decoded ZCL frame: Identify:Default_Response(command_id=64, status=<Status.SUCCESS: 0>)
[0xF306:1:0x0003]: executed 'trigger_effect' command with args: '(2, 0)' kwargs: '{}' result: Default_Response(command_id=64, status=<Status.SUCCESS: 0>)
[0xF306](lumi.motion.ac01): started initialization
[0xF306:ZDO](lumi.motion.ac01): 'async_initialize' stage succeeded
[0xF306:1:0x0000]: initializing channel: from_cache: False
[0xF306:1:0x0000]: finished channel initialization
[0xF306:1:0x0003]: initializing channel: from_cache: False
[0xF306:1:0x0003]: finished channel initialization
[0xF306:1:0xfcc0]: initializing channel: from_cache: False
[0xF306:1:0xfcc0]: finished channel initialization
[0xF306:1:0x0019]: initializing channel: from_cache: False
[0xF306:1:0x0019]: finished channel initialization
[0xF306:1:0x0000]: 'async_initialize' stage succeeded
[0xF306:1:0x0003]: 'async_initialize' stage succeeded
[0xF306:1:0xfcc0]: 'async_initialize' stage succeeded
[0xF306:1:0x0019]: 'async_initialize' stage succeeded
[0xF306](lumi.motion.ac01): power source: Mains
[0xF306](lumi.motion.ac01): completed initialization

I've got a basic quirk loaded at the moment but not any further than that

Tropaion commented 2 years ago

@dmulcahey I also wanted to buy one, but according to what I read, they are sold out everywhere even in china. It looks like they have production problems because of the massive covid lockdowns and it will probably take a month+ for resupply.

dmulcahey commented 2 years ago

@dmulcahey I also wanted to buy one, but according to what I read, they are sold out everywhere even in china. It looks like they have production problems because of the massive covid lockdowns and it will probably take a month+ for resupply.

I managed to order them(subsequently canceled by the seller)… thing is they aren’t supposed to ship to the USA. My assumption was they messed up the Ali listing and it wasn’t supposed to be available for USA residents. Who knows though… the Covid issue could definitely be a factor

dmulcahey commented 2 years ago

@EverythingSmartHome You have to post pairing logs and device signature. Your issue could probably be solved together with this one: #1498

Here is the signature:

{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered: 140>, manufacturer_code=4660, maximum_buffer_size=108, maximum_incoming_transfer_size=127, server_mask=11264, maximum_outgoing_transfer_size=127, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0xfff0",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0xfcc0"
      ],
      "out_clusters": [
        "0x0003",
        "0x0019"
      ]
    }
  },
  "manufacturer": "aqara",
  "model": "lumi.motion.ac01",
  "class": "zigpy.device.Device"
}

Logs:

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_rsp: [<Status.SUCCESS: 0>]
[0x0000:zdo] No handler for ZDO request:ZDOCmd.Mgmt_Permit_Joining_rsp([<Status.SUCCESS: 0>])
[0xa732:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_rsp: [<Status.SUCCESS: 0>]
[0xa732:zdo] No handler for ZDO request:ZDOCmd.Mgmt_Permit_Joining_rsp([<Status.SUCCESS: 0>])
[0xa732:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_rsp: [<Status.SUCCESS: 0>]
[0xa732:zdo] No handler for ZDO request:ZDOCmd.Mgmt_Permit_Joining_rsp([<Status.SUCCESS: 0>])
New device 0xf306 (54:ef:44:10:00:47:1a:5c) joined the network
[0xf306] Scheduling initialization
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 19: b'\x01\x06\xf3\\\x1aG\x00\x10D\xefT\x8c'
[0xf306:zdo] ZDO request ZDOCmd.Device_annce: [0xF306, 54:ef:44:10:00:47:1a:5c, 140]
Tries remaining: 3
[0xf306] Requesting 'Node Descriptor'
Tries remaining: 2
[0xf306] Extending timeout for 0xae request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 10: b'\x00\x00\x00\x00\x00'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0x000a id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=0, command_id=0, *is_reply=False), payload: b'\x00\x00'
[0xf306] Uninitialized device command '0' params: Read_Attributes(attribute_ids=[0])
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 0: b'\x18\x01\x0A\x05\x00\x42\x10\x6C\x75\x6D\x69\x2E\x6D\x6F\x74\x69\x6F\x6E\x2E\x61\x63\x30\x31\x01\x00\x20\x35'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0x0000 id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=1, command_id=10, *is_reply=True), payload: b'\x05\x00B\x10lumi.motion.ac01\x01\x00 5'
[0xf306] Uninitialized device command '10' params: Report_Attributes(attribute_reports=[Attribute(attrid=0x0005, value=TypeValue(type=CharacterString, value='lumi.motion.ac01')), Attribute(attrid=0x0001, value=TypeValue(type=uint8_t, value=53))])
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 64704: b'\x18\x02\x0A\xF7\x00\x41\x2D\x03\x28\x17\x05\x21\x01\x00\x08\x21\x35\x01\x0A\x21\x96\x90\x0C\x20\x14\x10\x20\x01\x12\x20\x00\x65\x20\xFF\x66\x20\x03\x67\x20\x00\x68\x20\x00\x69\x20\x01\x6A\x20\x01\x6B\x20\x03'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0xfcc0 id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=2, command_id=10, *is_reply=True), payload: b'\xf7\x00A-\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'
[0xf306] Uninitialized device command '10' params: Report_Attributes(attribute_reports=[Attribute(attrid=0x00F7, value=TypeValue(type=LVBytes, value=b'\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'))])
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 32770: b'\xae\x00\x06\xf3\x02@\x8c4\x12l\x7f\x00\x00,\x7f\x00\x00'
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 1 to ep 1, cluster 64704: b'\x18\x03\x0A\xF7\x00\x41\x2D\x03\x28\x17\x05\x21\x01\x00\x08\x21\x35\x01\x0A\x21\x96\x90\x0C\x20\x14\x10\x20\x01\x12\x20\x00\x65\x20\xFF\x66\x20\x03\x67\x20\x00\x68\x20\x00\x69\x20\x01\x6A\x20\x01\x6B\x20\x03'
[0xf306] Received ZCL while uninitialized on endpoint id 1, cluster 0xfcc0 id, hdr: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=3, command_id=10, *is_reply=True), payload: b'\xf7\x00A-\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'
[0xf306] Uninitialized device command '10' params: Report_Attributes(attribute_reports=[Attribute(attrid=0x00F7, value=TypeValue(type=LVBytes, value=b'\x03(\x17\x05!\x01\x00\x08!5\x01\n!\x96\x90\x0c \x14\x10 \x01\x12 \x00e \xfff \x03g \x00h \x00i \x01j \x01k \x03'))])
[0xf306] Got Node Descriptor: NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered: 140>, manufacturer_code=4660, maximum_buffer_size=108, maximum_incoming_transfer_size=127, server_mask=11264, maximum_outgoing_transfer_size=127, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=False, *is_security_capable=False)
[0xf306] Discovering endpoints
Tries remaining: 3
[0xf306] Extending timeout for 0xaf request
[0x6AF0:1:0x0b04] Received ZCL frame: b'\x18\x10\x0A\x05\x05\x21\xFD\x00'
[0x6AF0:1:0x0b04] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=16, command_id=10, *is_reply=True)
[0x6AF0:1:0x0b04] Decoded ZCL frame: TuyaZBElectricalMeasurement:Report_Attributes(attribute_reports=[Attribute(attrid=0x0505, value=TypeValue(type=uint16_t, value=253))])
[0x6AF0:1:0x0b04] Received command 0x0A (TSN 16): Report_Attributes(attribute_reports=[Attribute(attrid=0x0505, value=TypeValue(type=uint16_t, value=253))])
[0x6AF0:1:0x0b04] Attribute report received: rms_voltage=253
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 32773: b'\xaf\x00\x06\xf3\x01\x01'
[0xf306] Discovered endpoints: [1]
[0xf306] Initializing endpoints [<Endpoint id=1 in=[] out=[] status=<Status.NEW: 0>>]
[0xf306:1] Discovering endpoint information
Tries remaining: 3
[0xf306] Extending timeout for 0xb0 request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=False> from ep 0 to ep 0, cluster 32772: b'\xb0\x00\x06\xf3\x12\x01\x04\x01\xf0\xff\x00\x03\x00\x00\x03\x00\xc0\xfc\x02\x03\x00\x19\x00'
[0xf306:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=65520, device_version=0, input_clusters=[0, 3, 64704], output_clusters=[3, 25])
[0xF306:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=177, command_id=<GeneralCommand.Read_Attributes: 0>, *is_reply=False)
[0xF306:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 5])
[0xf306] Extending timeout for 0xb1 request
[0xF306:1:0x0000] Received ZCL frame: b'\x18\xB1\x01\x04\x00\x00\x42\x05\x61\x71\x61\x72\x61\x05\x00\x00\x42\x10\x6C\x75\x6D\x69\x2E\x6D\x6F\x74\x69\x6F\x6E\x2E\x61\x63\x30\x31'
[0xF306:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=177, command_id=1, *is_reply=True)
[0xF306:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='aqara')), ReadAttributeRecord(attrid=0x0005, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='lumi.motion.ac01'))])
[0xf306] Read model 'lumi.motion.ac01' and manufacturer 'aqara' from <Endpoint id=1 in=[basic:0x0000, identify:0x0003, manufacturer_specific:0xFCC0] out=[identify:0x0003, ota:0x0019] status=<Status.ZDO_INIT: 1>>
[0xf306] Discovered basic device information for <Device model='lumi.motion.ac01' manuf='aqara' nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=True>
Device is initialized <Device model='lumi.motion.ac01' manuf='aqara' nwk=0xF306 ieee=54:ef:44:10:00:47:1a:5c is_initialized=True>
Checking quirks for aqara lumi.motion.ac01 (54:ef:44:10:00:47:1a:5c)
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because device_type mismatch on at least one endpoint
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1}
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because device_type mismatch on at least one endpoint
'button' component -> 'ZHAIdentifyButton' using ['identify']
'sensor' component -> 'RSSISensor' using ['basic']
'sensor' component -> 'LQISensor' using ['basic']
device - 0xF306:54:ef:44:10:00:47:1a:5c entering async_device_initialized - is_new_join: True
device - 0xF306:54:ef:44:10:00:47:1a:5c has joined the ZHA zigbee network
[0xF306](lumi.motion.ac01): started configuration
[0xF306:ZDO](lumi.motion.ac01): 'async_configure' stage succeeded
[0xF306:1:0x0000]: finished channel configuration
[0xF306:1:0x0003]: finished channel configuration
[0xf306] Extending timeout for 0xb2 request
[0xF306:1:0x0019]: finished channel configuration
Error handling '_save_attribute' event with (54:ef:44:10:00:47:1a:5c, 1, 0, 4, 'aqara') params: FOREIGN KEY constraint failed
Error handling '_save_attribute' event with (54:ef:44:10:00:47:1a:5c, 1, 0, 5, 'lumi.motion.ac01') params: FOREIGN KEY constraint failed
[0xF306:1:0xfcc0]: bound 'manufacturer_specific' cluster: Status.SUCCESS
[0xF306:1:0xfcc0]: finished channel configuration
[0xF306:1:0x0000]: 'async_configure' stage succeeded
[0xF306:1:0x0003]: 'async_configure' stage succeeded
[0xF306:1:0xfcc0]: 'async_configure' stage succeeded
[0xF306:1:0x0019]: 'async_configure' stage succeeded
[0xF306](lumi.motion.ac01): completed configuration
[0xF306](lumi.motion.ac01): stored in registry: ZhaDeviceEntry(name='aqara lumi.motion.ac01', ieee='54:ef:44:10:00:47:1a:5c', last_seen=1651005619.9039047)
[0xF306:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=False, is_reply=0, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=179, command_id=64, *is_reply=False)
[0xF306:1:0x0003] Sending request: trigger_effect(effect_id=<EffectIdentifier.Okay: 2>, effect_variant=<EffectVariant.Default: 0>)
[0xf306] Extending timeout for 0xb3 request
[0xF306:1:0x0003] Received ZCL frame: b'\x18\xB3\x0B\x40\x00'
[0xF306:1:0x0003] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=179, command_id=11, *is_reply=True)
[0xF306:1:0x0003] Decoded ZCL frame: Identify:Default_Response(command_id=64, status=<Status.SUCCESS: 0>)
[0xF306:1:0x0003]: executed 'trigger_effect' command with args: '(2, 0)' kwargs: '{}' result: Default_Response(command_id=64, status=<Status.SUCCESS: 0>)
[0xF306](lumi.motion.ac01): started initialization
[0xF306:ZDO](lumi.motion.ac01): 'async_initialize' stage succeeded
[0xF306:1:0x0000]: initializing channel: from_cache: False
[0xF306:1:0x0000]: finished channel initialization
[0xF306:1:0x0003]: initializing channel: from_cache: False
[0xF306:1:0x0003]: finished channel initialization
[0xF306:1:0xfcc0]: initializing channel: from_cache: False
[0xF306:1:0xfcc0]: finished channel initialization
[0xF306:1:0x0019]: initializing channel: from_cache: False
[0xF306:1:0x0019]: finished channel initialization
[0xF306:1:0x0000]: 'async_initialize' stage succeeded
[0xF306:1:0x0003]: 'async_initialize' stage succeeded
[0xF306:1:0xfcc0]: 'async_initialize' stage succeeded
[0xF306:1:0x0019]: 'async_initialize' stage succeeded
[0xF306](lumi.motion.ac01): power source: Mains
[0xF306](lumi.motion.ac01): completed initialization

I've got a basic quirk loaded at the moment but not any further than that

When you have time / if you want to: hit me up on discord and we can reverse engineer the z2m support for it. I can help but you will have to test it.

dmulcahey commented 2 years ago

I've got a basic quirk loaded at the moment but not any further than that

Stay tuned… working on quirk stub generation from diagnostics data.

EverythingSmartHome commented 2 years ago

I've got a basic quirk loaded at the moment but not any further than that

Stay tuned… working on quirk stub generation from diagnostics data.

Message incoming..

Tropaion commented 2 years ago

@dmulcahey A bit offtopic but if you are interested in mmWave presence detection, I found a similar device: https://de.aliexpress.com/item/1005003796368221.html Though pretty expensive.

dmulcahey commented 2 years ago

@dmulcahey A bit offtopic but if you are interested in mmWave presence detection, I found a similar device: https://de.aliexpress.com/item/1005003796368221.html Though pretty expensive.

Thx! Although I don’t wanna support the mess tuya makes. I’ll take a look at how it’s implemented 😃

Tropaion commented 2 years ago

Nice, then I can save the money until I know from you that it works 😄

Hedda commented 2 years ago

Everything Smart Home YouTube Video on this new device: https://www.youtube.com/watch?v=Leru0rCS8b0

@EverythingSmartHome When using Aqara FP1 with their gateway/app does it have sensor configuration to make it ignore pets?

(Some motion sensors have settings allowing sensitivity configurations based on size or similar if you have cats or other animals).

EverythingSmartHome commented 2 years ago

Everything Smart Home YouTube Video on this new device: https://www.youtube.com/watch?v=Leru0rCS8b0

@EverythingSmartHome When using Aqara FP1 with their gateway/app does it have sensor configuration to make it ignore pets?

(Some motion sensors have settings allowing sensitivity configurations based on size or similar if you have cats or other animals).

No option for that at least at the moment!

BradleyShaner commented 2 years ago

They are in-stock right now on Aliexpress - https://www.aliexpress.com/item/3256803596744231.html?spm=a2g0o.order_list.0.0.21ef1802r8ZVZH

Tropaion commented 2 years ago

Dawn, I was too slow -.-

SeraphimSerapis commented 2 years ago

Dawn, I was too slow -.-

Check again. I was just able to order 2 of them!

Hedda commented 2 years ago

FYI, Tuya also has several "Zigbee Human Presence Detector" using similar microwave/millimeter wave motion sensor technology.

These are used for either smart human body presence (a.k.a. occupancy/vacancy detection), breathing sensor, or fall-down sensor.

See example Tuya product models: MSA050-Z1, MIR-HE200-ZB, MYQ-ZHFD02, MSA042D-Z1, MSA035-Z1, and MYQ-ZHFD01:

https://expo.tuya.com/smart/sensors/infrared-sensor/occupancy---vacancy-sensor/CT9cn94ki9rh36-CT9cn9la1lzi8j-CT9cndvh3x4xle

https://expo.tuya.com/product/842246

https://expo.tuya.com/product/952001

https://expo.tuya.com/product/1031059

https://expo.tuya.com/product/902056

https://expo.tuya.com/product/804011

https://expo.tuya.com/product/1031058

PS: Note that those are listed for global worldwide sale, unlike this competing Aqara FP1 product.

blakadder commented 2 years ago

New stock available: https://s.click.aliexpress.com/e/_AmTlud (*affiliate link)

dmulcahey commented 2 years ago

New stock available: https://s.click.aliexpress.com/e/_AmTlud (*affiliate link)

Awesome. Thanks. I have one arriving today and just grabbed 4 more!

blakadder commented 2 years ago

Are they that good?

Sebas- commented 2 years ago

Are they that good?

Yes (in my opinion) , currently using them in a few rooms, no more need to create "smart" automations (for me at least). Using PIR sensor for initial detection, and then the FP1 to keep the state of the room as occupied until it says otherwise. No more problem with sitting still in front of the tv or when I'm working in front of a computer (pretty much sitting still).

dmulcahey commented 2 years ago

Are they that good?

Yes (in my opinion) , currently using them in a few rooms, no more need to create "smart" automations (for me at least). Using PIR sensor for initial detection, and then the FP1 to keep the state of the room as occupied until it says otherwise. No more problem with sitting still in front of the tv or when I'm working in front of a computer (pretty much sitting still).

This is the promise right here… true presence

Tropaion commented 2 years ago

I'm not sure if I should order one since I'm in a small financial crisis and I'm not sure if it will be supported by ZHA. @dmulcahey Are you working on an implementation?

dmulcahey commented 2 years ago

Just pushed the first parts of support

Tropaion commented 2 years ago

@dmulcahey nice, what does this implement? Since you didn't write anything in your pull request. What I'm interested in, as far as I know, in the tuya app it's possible to define "action zones", how will this look like in ZHA/HA?

eatoff8 commented 2 years ago

Just pushed the first parts of support

Well, seeing that made the purchase decision easy for me. Thanks @blakadder too for the link, some reason it didn't come up in a search.

Looking forward to seeing it supported in zha

Hedda commented 2 years ago

dmulcahey nice, what does this implement? Since you didn't write anything in your pull request. What I'm interested in, as far as I know, in the tuya app it's possible to define "action zones", how will this look like in ZHA/HA?

See pictures in PR from dmulcahey for ZHA to HA’s core as reference on how configuration could look like for a sensor like this -> https://github.com/home-assistant/core/pull/72466

... The triggering time, Visual feedback and sensitivity are all configurable.

image

eatoff8 commented 2 years ago

How can we see what version of HA this is merged into? The tags just say home-assistant:dev

I just had a couple delivered, so keen to find out when support will be arriving

Daniel-dev22 commented 2 years ago

How can we see what version of HA this is merged into? The tags just say home-assistant:dev

I just had a couple delivered, so keen to find out when support will be arriving

It hasn't been released yet. You can download the .py and put it in a custom quirks file and add the path to your configuration. With that you will only have the ability to use the device until the configuration stuff is merged into core.

eatoff8 commented 2 years ago

How can we see what version of HA this is merged into? The tags just say home-assistant:dev I just had a couple delivered, so keen to find out when support will be arriving

It hasn't been released yet. You can download the .py and put it in a custom quirks file and add the path to your configuration. With that you will only have the ability to use the device until the configuration stuff is merged into core.

So how can I tell which HA version it will go into?

This just says dev, is there a way to see ahead of time what version it's going into? If it's going into 2022.6.7 I'll wait, but if it's not until 2022.11.0 or whatever I'll workaround https://github.com/home-assistant/core/pull/72466

Daniel-dev22 commented 2 years ago

How can we see what version of HA this is merged into? The tags just say home-assistant:dev I just had a couple delivered, so keen to find out when support will be arriving

It hasn't been released yet. You can download the .py and put it in a custom quirks file and add the path to your configuration. With that you will only have the ability to use the device until the configuration stuff is merged into core.

So how can I tell which HA version it will go into?

This just says dev, is there a way to see ahead of time what version it's going into? If it's going into 2022.6.7 I'll wait, but if it's not until 2022.11.0 or whatever I'll workaround home-assistant/core#72466

Put this

https://github.com/zigpy/zha-device-handlers/blob/851e784207160645b108e78c577cde2b5704a722/zhaquirks/xiaomi/aqara/motion_ac01.py

Into /config/zha_quirks Then in your configuration.yaml add

zha:
  enable_quirks: true
  custom_quirks_path: /config/zha_quirks
eatoff8 commented 2 years ago

Put this

https://github.com/zigpy/zha-device-handlers/blob/851e784207160645b108e78c577cde2b5704a722/zhaquirks/xiaomi/aqara/motion_ac01.py

Into /config/zha_quirks Then in your configuration.yaml add

zha:
  custom_quirks: true
  custom_quirks_path: /config/zha_quirks

Thanks for the pointers, but this doesnt work. Just gets stuck in "interviewing device". I put the file you linked in the zha_quirks folder, and no love for me.

image

And the zha custom quirks is actually "enable_quirks: true" just for anyone else thats reading along, or you can remove it completely as the default is true anyway. It gives me an error using "custom_quirks".

Daniel-dev22 commented 2 years ago

Put this https://github.com/zigpy/zha-device-handlers/blob/851e784207160645b108e78c577cde2b5704a722/zhaquirks/xiaomi/aqara/motion_ac01.py Into /config/zha_quirks Then in your configuration.yaml add

zha:
  custom_quirks: true
  custom_quirks_path: /config/zha_quirks

Thanks for the pointers, but this doesnt work. Just gets stuck in "interviewing device". I put the file you linked in the zha_quirks folder, and no love for me.

image

And the zha custom quirks is actually "enable_quirks: true" just for anyone else thats reading along, or you can remove it completely as the default is true anyway. It gives me an error using "custom_quirks".

Your right it is enable_quirks not sure how I misread what I have in my configuration lol. Just to clarify the file is a .py file that you added?

Hedda commented 2 years ago

How can we see what version of HA this is merged into? The tags just say home-assistant:dev

I just had a couple delivered, so keen to find out when support will be arriving

If you are asking when Aqara FP1 support will be available in the stable release of Home Assistant then the answer is that you have to first wait until pull request https://github.com/zigpy/zha-device-handlers/pull/1600 with the FP1 "quirk" is merged into zha-device-handlers before waiting until there is a new release:

https://github.com/zigpy/zha-device-handlers/releases

(for dev of zha-device-handlers / zha-quirks see https://github.com/zigpy/zha-device-handlers/pulls?q=is%3Apr+is%3Aclosed ).

Then you have to wait until that "zha-quirks" (zha-device-handlers) is bumped in Home Assistant core (as a separate pull request) and pull request https://github.com/home-assistant/core/pull/73027 is merged into Home Assistant core:

https://github.com/home-assistant/core/releases

(for dev of Home Assistant core see https://github.com/home-assistant/core/pulls?q=is%3Apr+is%3Aclosed ).

After that you have to wait for next major release of Home Assistant which contain both "zha-quirks" with FP1 quirk and that PR.

eatoff8 commented 2 years ago

Just to clarify the file is a .py file that you added?

Yes, it was. I did some other reading, and it was the same procedure recommended elsewhere too, but doesnt work for me.

I put the .py file in a folder called /config/zha_quirks (no subfolders within that).

eatoff8 commented 2 years ago

After that you have to wait for next major release of Home Assistant which contain both "zha-quirks" with FP1 quirk and that PR.

Thanks for the super detailed response. Looks like its going to be a few weeks away, so I'll try get the custom quirks working in the meantime.

zeltak commented 2 years ago

Hi all

I have added the custom quick as @Danny2100 suggested, it does pick up the sensor but the sensor dosent seem to do anything and looks strange with just a clear state:

CleanShot 2022-07-01 at 09 27 29

am I missing a step (I also added of course the entries to my YAML):


# ZHA
zha:
  enable_quirks: true
  custom_quirks_path: /config/zha_quirks

thx

Z

TheJulianJES commented 2 years ago

@zeltak I'd just upgrade to the latest Home Assistant beta and remove the custom quirk.

zeltak commented 2 years ago

ahh I see @TheJulianJES , need to explore how to do this

thx!

TheJulianJES commented 2 years ago

If you're using Home Assistant OS, you can join the beta under Settings -> System -> Updates -> click on the three dots at the top right corner -> join beta channel.

Then, you can check for updates and (backup +) install the latest update.

zeltak commented 2 years ago

cool thx!

zeltak commented 2 years ago

@TheJulianJES !

I updated today to 2022.7 and the fp-1 device is still not working. is there a new beta I should try it with or was this support planed for 2022.7?

thx

Z

Daniel-dev22 commented 2 years ago

I should probably close this now that it has been merged?

Draghmar commented 2 years ago

@TheJulianJES !

I updated today to 2022.7 and the fp-1 device is still not working. is there a new beta I should try it with or was this support planed for 2022.7?

thx

Z

Not sure if you already try that but Z2M says there are some additional things FP1 requires in order to work (channel and firmware). Maybe it's the same for ZHA?

TyzzyT commented 2 years ago

Put this https://github.com/zigpy/zha-device-handlers/blob/851e784207160645b108e78c577cde2b5704a722/zhaquirks/xiaomi/aqara/motion_ac01.py Into /config/zha_quirks Then in your configuration.yaml add

zha:
  custom_quirks: true
  custom_quirks_path: /config/zha_quirks

Thanks for the pointers, but this doesnt work. Just gets stuck in "interviewing device". I put the file you linked in the zha_quirks folder, and no love for me.

image

I'm having the same issue. Sonoff Zigbee Bridge with Tasmota firmware, using ZHA to connect to the bridge. But Aqara FP1 is stuck in 'Starting Interview'. Any clue what to try/do?

dmulcahey commented 2 years ago

Take a network backup and restore it using the option to use hashed link keys

TheJulianJES commented 2 years ago

@zeltak What stick are you using? Do you also know what firmware version is on it? Like Draghmar mentioned, there are some minimum firmware requirements: https://www.zigbee2mqtt.io/devices/RTCZCGQ11LM.html Otherwise, try to re-pair the device.

zeltak commented 2 years ago

hi again @TheJulianJES

im suing the Sonoff zigbee stick ( Sonoff3pro) and flashed a few weeks ago when I got it with the latest firmware, ie

C1352P2_CC2652P_launchpad_coordinator_20220219.zip

which according to the link should work?

as with @TyzzyT I get the stuck in 'Starting Interview'. thing

thx for the help!

Z