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
719 stars 663 forks source link

Device Support Request: Smartthings Presence sensor #326

Open ocalvo opened 4 years ago

ocalvo commented 4 years ago

Is your feature request related to a problem? Please describe. No.

Describe the solution you'd like Smartthings presence sensor does not expose any entities to homeassistant. Model: SmartThings PGC410EU

Device signature - this can be acquired by removing the device from ZHA and pairing it again from the add devices screen. Be sure to add the entire content of the log panel after pairing the device to a code block below this line.

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x0000](EZSP): started initialization
[0x0000:ZDO](EZSP): 'async_initialize' stage succeeded
[0x0000](EZSP): power source: Mains
[0x0000](EZSP): completed initialization
[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
Device 0x7877 (d0:52:a8:1e:92:c6:00:05) joined the network
[0x7877:zdo] ZDO request ZDOCmd.Device_annce: [0x7877, d0:52:a8:1e:92:c6:00:05, 128]
[0x7877] Requesting 'Node Descriptor'
[0x7877] Extending timeout for 0x07 request
[0x7877] Node Descriptor: <Optional byte1=2 byte2=64 mac_capability_flags=128 manufacturer_code=4362 maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=0 maximum_outgoing_transfer_size=82 descriptor_capability_field=0>
[0x7877] Discovering endpoints
[0x7877] Extending timeout for 0x09 request
Ignoring message (b'1d0a115e01') on cluster 64517: unknown endpoint or cluster id: 2
[0x7877] Discovered endpoints: [1, 2]
[0x7877:1] Discovering endpoint information
[0x7877] Extending timeout for 0x0b request
[0x7877:1] Discovered endpoint information: <SimpleDescriptor endpoint=1 profile=260 device_type=410 device_version=0 input_clusters=[0] output_clusters=[]>
[0x7877] Extending timeout for 0x0d request
[0x7877:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=13 command_id=Command.Read_Attributes_rsp>
[0x7877:1] Manufacturer: SmartThings
[0x7877:1] Model: PGC410EU
[0x7877:2] Discovering endpoint information
[0x7877] Extending timeout for 0x0f request
[0x7877:2] Discovered endpoint information: <SimpleDescriptor endpoint=2 profile=64513 device_type=410 device_version=0 input_clusters=[] output_clusters=[]>
Checking quirks for SmartThings PGC410EU (d0:52:a8:1e:92:c6:00:05)
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1, 2}
Considering <class 'zhaquirks.lutron.lzl4bwhl01remote.LutronLZL4BWHL01Remote2'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.osram.a19twhite.A19TunableWhite'>
Fail because endpoint list mismatch: {3} {1, 2}
Considering <class 'zhaquirks.philips.rom001.PhilipsROM001'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.philips.rwl020.PhilipsRWL020'>
Fail because profile_id mismatch on at least one endpoint
Considering <class 'zhaquirks.philips.rwl021.PhilipsRWL021'>
Fail because profile_id mismatch on at least one endpoint
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because endpoint list mismatch: {1} {1, 2}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2}
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2}
Considering <class 'zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor'>
Fail because endpoint list mismatch: {1} {1, 2}
device - 0x7877:d0:52:a8:1e:92:c6:00:05 entering async_device_initialized - is_new_join: True
device - 0x7877:d0:52:a8:1e:92:c6:00:05 has joined the ZHA zigbee network
[0x7877](PGC410EU): started configuration
[0x7877:ZDO](PGC410EU): 'async_configure' stage succeeded
[0x7877] Extending timeout for 0x11 request
Ignoring message (b'1d0a115f01') on cluster 64517: unknown endpoint or cluster id: 'No cluster ID 0xfc05 on (d0:52:a8:1e:92:c6:00:05, 2)'
[0x7877:1:0x0000]: bound 'basic' cluster: Status.NOT_SUPPORTED
[0x7877:1:0x0000]: finished channel configuration
[0x7877] Extending timeout for 0x13 request
[0x7877:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=19 command_id=Command.Read_Attributes_rsp>
[0x7877:1:0x0000]: initializing channel: from_cache: False
[0x7877:1:0x0000]: 'async_configure' stage succeeded
[0x7877](PGC410EU): completed configuration
[0x7877](PGC410EU): stored in registry: ZhaDeviceEntry(name='SmartThings PGC410EU', ieee='d0:52:a8:1e:92:c6:00:05', last_seen=1587405039.1616018)
[0x7877](PGC410EU): started initialization
[0x7877:ZDO](PGC410EU): 'async_initialize' stage succeeded
[0x7877] Extending timeout for 0x15 request
[0x7877:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=21 command_id=Command.Read_Attributes_rsp>
[0x7877:1:0x0000]: initializing channel: from_cache: False
[0x7877:1:0x0000]: 'async_initialize' stage succeeded
[0x7877](PGC410EU): power source: Battery or Unknown
[0x7877](PGC410EU): completed initialization
Ignoring message (b'1d0a116001') on cluster 64517: unknown endpoint or cluster id: 'No cluster ID 0xfc05 on (d0:52:a8:1e:92:c6:00:05, 2)'
Ignoring message (b'1d0a116001') on cluster 64517: unknown endpoint or cluster id: 'No cluster ID 0xfc05 on (d0:52:a8:1e:92:c6:00:05, 2)'
Ignoring message (b'1d0a116101') on cluster 64517: unknown endpoint or cluster id: 'No cluster ID 0xfc05 on (d0:52:a8:1e:92:c6:00:05, 2)'
dmulcahey commented 4 years ago

That’s not the signature. Please remove the device and repair it and provide the correct data.

dmulcahey commented 4 years ago

Bump... are you able to provide this info?

dmulcahey commented 4 years ago

@ocalvo since you have other issues since this (that have been resolved) I'll wait until Friday for the requested info then I am going to close this.

ocalvo commented 4 years ago

I will get this data today EOD.

ocalvo commented 4 years ago

Done, updated issue description with the info

dmulcahey commented 4 years ago

Thanks. This is going to be interesting... not sure how this works TBH

ocalvo commented 4 years ago

Thanks. This is going to be interesting... not sure how this works TBH

How can I help?

g-enzo commented 4 years ago

I have this same issue, is there any further help on this?

ocalvo commented 3 years ago

Any update on this?

I have development environment that I can use to hack something around, but I would love to have some place to start.

Is there another ZigBee presence device that works that I could use as baseline?

andyjenkinson commented 3 years ago

To add another datapoint, I’d quite like to get this working but depends if ZHA itself supports presence as a possible entity, I don’t really want to get into modifying ZHA. I don’t need it that badly :)

As far as I can tell the device has 2 endpoints, one only has a simple basic info (0x0000) in cluster; the second has a proprietary profile but I expect this is used to play a sound on the device from the SmartThings app. You may find the smartthings handler useful: https://github.com/SmartThingsCommunity/SmartThingsPublic/blob/master/devicetypes/smartthings/arrival-sensor.src/arrival-sensor.groovy

My expectation of this device is that presence is purely based on whether the device is online and reporting messages or not. I don’t think smartthings ever reports the device as being offline (I think this is what registering it to the devicewatch service as “untracked” means), but listens for periodic status messages to update either battery/RSSI/LQI or the presence state (think it’s two types of message content). Whilst to the handler they look like parsing incoming messages I’m not 100% sure if they are really push events or responses to polling the info endpoint though.

I think it should be possible to work out how it works based on the smartthings handler, but aside from masking the offline state with a static value, what should the quirk expose to ZHA to support presence?

andyjenkinson commented 3 years ago

To add: seems like this message, wherever it comes from, looks simply like this:

presence: 1 or presence: 0

I am a little perplexed though. I was thinking perhaps they do this (ie the device keeps track of its presence rather than just poll it’s status frequently) to save power - it only sends the message when rejoining the network - but I cannot work out how it can possibly send a “I am not present” message that the hub is guaranteed to receive. That makes no sense to me so must be missing something.

github-actions[bot] commented 3 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

ChrisHardie commented 3 years ago

I would still find this a valuable feature to add. SmartThings presence sensors are the only thing keeping me active on that platform.

github-actions[bot] commented 2 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

Hedda commented 2 years ago

There looks to be a device handler for smartthings tagV4 sensors (samsung smartthings tag V4) but maybe not newer PGC410?

https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/smartthings/tag_v4.py

Does anyone know if the European / United Kingdom version of these tags works with the ZHA integration in Home Assistant?

Follow-up question is if it can be made to use of the Device Tracker integration for Presence Detection or just as a binary sensor?

@roquemore92 mentioned in https://github.com/zigpy/zha-device-handlers/issues/533 that Tagv4 model variant work with device tracker entity but PGC410 model variants does not?

According to @JMan7777 posted in https://github.com/zigpy/zha-device-handlers/issues/533 it at least sounds as if the binary sensor work as "device_tracker" entity may work it(?).

(I don't own one yet but got an offer to buy a couple of unused and wondering if worth it to track the arrival of our two cars?).

Was sold as "SmartThings Presence Sensor" in the UK and rest of Europe (and "SmartThings Arrival Sensor" in North America).

github-actions[bot] commented 2 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

ChrisHardie commented 2 years ago

I believe there's still a lot of interest in this request for people migrating from SmartThings.

ocalvo commented 1 year ago

Keep alive

github-actions[bot] commented 1 year ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

Hedda commented 1 year ago

Unstale

github-actions[bot] commented 11 months ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

Hedda commented 11 months ago

Still wanted

github-actions[bot] commented 5 months ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

ChrisHardie commented 5 months ago

Still quite interested.