[BUG] E1812 Ikea shortcut button does not fire zha_event

Describe the bug
Similar to #1516 but different context.
I'm using supervised HA where I confugured ZHA to access a ZigStar LAN Gateway.
I can succesfully bind a Sonoff SNZB-04 (door/window sensor) and a RSH-ZigBee-SC04 4-button scene switch. Both devices report events to HA.
But both the Ikea E1812 I tested seems to have troubles both during discovery and after binding. I once saw events while testing a CC2531-based bridge, but only for a short time. (Actually, while collecting debug info, one of the buttons started generating events... hope it continues)
To Reproduce
Steps to reproduce the behavior:

Go to ZHA integration
Put E1812 in pairing mode (4 clicks on bind button, red LED starts blinking)
Click on add device
The logs report:

[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>])
New device 0xd62c (8c:f6:81:ff:fe:2b:c6:6f) joined the network
[0xd62c] Scheduling initialization
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD62C ieee=8c:f6:81:ff:fe:2b:c6:6f is_initialized=False> from ep 0 to ep 0, cluster 19: b'\x81,\xd6o\xc6+\xfe\xff\x81\xf6\x8c\x80'
[0xd62c:zdo] ZDO request ZDOCmd.Device_annce: [0xD62C, 8c:f6:81:ff:fe:2b:c6:6f, 128]
Tries remaining: 3
[0xd62c] Requesting 'Node Descriptor'
Tries remaining: 2
[0xd62c] Extending timeout for 0x8d request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD62C ieee=8c:f6:81:ff:fe:2b:c6:6f is_initialized=False> from ep 0 to ep 0, cluster 32770: b'\x8d\x00,\xd6\x02@\x80|\x11RR\x00\x00,R\x00\x00'
[0xd62c] 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: 128>, manufacturer_code=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)
[0xd62c] Discovering endpoints
Tries remaining: 3
[0xd62c] Extending timeout for 0x8e request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD62C ieee=8c:f6:81:ff:fe:2b:c6:6f is_initialized=False> from ep 0 to ep 0, cluster 32773: b'\x8e\x00,\xd6\x01\x01'
[0xd62c] Discovered endpoints: [1]
[0xd62c] Initializing endpoints [<Endpoint id=1 in=[] out=[] status=<Status.NEW: 0>>]
[0xd62c:1] Discovering endpoint information
Tries remaining: 3
[0xd62c] Extending timeout for 0x8f request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD62C ieee=8c:f6:81:ff:fe:2b:c6:6f is_initialized=False> from ep 0 to ep 0, cluster 32772: b'\x8f\x00,\xd6"\x01\x04\x01 \x08\x01\x06\x00\x00\x01\x00\x03\x00\t\x00 \x00\x00\x10\x07\x03\x00\x04\x00\x06\x00\x08\x00\x19\x00\x02\x01\x00\x10'
[0xd62c:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=2080, device_version=1, input_clusters=[0, 1, 3, 9, 32, 4096], output_clusters=[3, 4, 6, 8, 25, 258, 4096])
[0xD62C:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=144, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD62C:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 5])
[0xd62c] Extending timeout for 0x90 request
[0xD62C:1:0x0000] Received ZCL frame: b'\x18\x90\x01\x04\x00\x00\x42\x0E\x49\x4B\x45\x41\x20\x6F\x66\x20\x53\x77\x65\x64\x65\x6E\x05\x00\x00\x42\x17\x54\x52\x41\x44\x46\x52\x49\x20\x53\x48\x4F\x52\x54\x43\x55\x54\x20\x42\x75\x74\x74\x6F\x6E'
[0xD62C:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=144, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD62C:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='IKEA of Sweden')), ReadAttributeRecord(attrid=0x0005, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='TRADFRI SHORTCUT Button'))])
[0xd62c] Read model 'TRADFRI SHORTCUT Button' and manufacturer 'IKEA of Sweden' from <Endpoint id=1 in=[basic:0x0000, power:0x0001, identify:0x0003, alarms:0x0009, poll_control:0x0020, lightlink:0x1000] out=[identify:0x0003, groups:0x0004, on_off:0x0006, level:0x0008, ota:0x0019, window_covering:0x0102, lightlink:0x1000] status=<Status.ZDO_INIT: 1>>
[0xd62c] Discovered basic device information for <Device model='TRADFRI SHORTCUT Button' manuf='IKEA of Sweden' nwk=0xD62C ieee=8c:f6:81:ff:fe:2b:c6:6f is_initialized=True>
Device is initialized <Device model='TRADFRI SHORTCUT Button' manuf='IKEA of Sweden' nwk=0xD62C ieee=8c:f6:81:ff:fe:2b:c6:6f is_initialized=True>
Checking quirks for IKEA of Sweden TRADFRI SHORTCUT Button (8c:f6:81:ff:fe:2b:c6:6f)
Considering <class 'zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn2'>
Fail because input cluster mismatch on at least one endpoint
Considering <class 'zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn'>
Found custom device replacement for 8c:f6:81:ff:fe:2b:c6:6f: <class 'zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn'>
'button' component -> 'ZHAIdentifyButton' using ['identify']
'sensor' component -> 'Battery' using ['power']
'sensor' component -> 'RSSISensor' using ['basic']
'sensor' component -> 'LQISensor' using ['basic']
device - 0xD62C:8c:f6:81:ff:fe:2b:c6:6f entering async_device_initialized - is_new_join: True
device - 0xD62C:8c:f6:81:ff:fe:2b:c6:6f has joined the ZHA zigbee network
[0xD62C](TRADFRI SHORTCUT Button): started configuration
[0xD62C:ZDO](TRADFRI SHORTCUT Button): 'async_configure' stage succeeded
[0xD62C:1:0x0000]: Configuring cluster attribute reporting
Error handling '_save_attribute' event with (8c:f6:81:ff:fe:2b:c6:6f, 1, 0, 5, 'TRADFRI SHORTCUT Button') params: FOREIGN KEY constraint failed
[0xD62C:1:0x1000] Received ZCL frame: b'\x19\x93\x41\x01\x00\x00'
[0xD62C:1:0x1000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=147, command_id=65, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD62C:1:0x1000] Decoded ZCL frame: LightLinkCluster:get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0x0000:2] Cannot add 0x0000 group, no groups cluster
[0x0000:1] Cannot add 0x0000 group, no groups cluster
[0xD62C:1:0x0001]: bound 'power' cluster: Status.SUCCESS
[0xD62C:1:0x0001] Received ZCL frame: b'\x08\x97\x07\x00'
[0xD62C:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=151, command_id=7, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD62C:1:0x0001] Decoded ZCL frame: PowerConfiguration1CRCluster:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)])
[0xD62C:1:0x0001]: Successfully configured reporting for '{'battery_voltage': (3600, 10800, 1), 'battery_percentage_remaining': (3600, 10800, 1)}' on 'power' cluster: [ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)]
[0xD62C:1:0x1000] Received ZCL frame: b'\x19\x93\x41\x01\x00\x00'
[0xD62C:1:0x1000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=147, command_id=65, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD62C:1:0x1000] Decoded ZCL frame: LightLinkCluster:get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0xD62C:1:0x1000] Received command 0x41 (TSN 147): get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0xD62C:1:0x1000] No explicit handler for cluster command 0x41: get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0xBF0E](TS0044): Device seen - marking the device available and resetting counter
[0xBF0E](TS0044): Update device availability -  device available: True - new availability: True - changed: False
[0xD62C:1:0x0020]: Failed to bind 'poll_control' cluster:
[0xD62C:1:0x0102]: Failed to bind 'window_covering' cluster:
[0xD62C:1:0x0008]: Failed to bind 'level' cluster:
[0xD62C:1:0x0006]: Failed to bind 'on_off' cluster:
[0x7F6A](DS01): Device seen - marking the device available and resetting counter
[0x7F6A](DS01): Update device availability -  device available: True - new availability: True - changed: False
[0x20D3](TRADFRI SHORTCUT Button): Device seen - marking the device available and resetting counter
[0x20D3](TRADFRI SHORTCUT Button): Update device availability -  device available: True - new availability: True - changed: False
[0xD62C:1:0x0020]: Couldn't set check-in interval: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0xD62C:1:0x0020]: finished channel configuration
[0xD62C:1:0x0000]: 'async_configure' stage succeeded
[0xD62C:1:0x0001]: 'async_configure' stage succeeded
[0xD62C:1:0x0003]: 'async_configure' stage succeeded
[0xD62C:1:0x0020]: 'async_configure' stage succeeded
[0xD62C:1:0x1000]: 'async_configure' stage succeeded
[0xD62C:1:0x0102]: 'async_configure' stage succeeded
[0xD62C:1:0x0008]: 'async_configure' stage succeeded
[0xD62C:1:0x0006]: 'async_configure' stage succeeded
[0xD62C:1:0x0019]: 'async_configure' stage succeeded
[0xD62C](TRADFRI SHORTCUT Button): completed configuration
[0xD62C:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=False), tsn=153, command_id=64, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD62C:1:0x0003] Sending request: trigger_effect(effect_id=<EffectIdentifier.Okay: 2>, effect_variant=<EffectVariant.Default: 0>)
[0xd62c] Extending timeout for 0x99 request
[0xD62C:1:0x0003]: command failed: 'trigger_effect' args: '(2, 0)' kwargs '{}' exception: 'Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>'
[0xD62C](TRADFRI SHORTCUT Button): started initialization
[0xD62C:ZDO](TRADFRI SHORTCUT Button): 'async_initialize' stage succeeded
[0xD62C:1:0x0000]: initializing channel: from_cache: False
[0xD62C:1:0x0000]: finished channel initialization
[0xD62C:1:0x0001]: initializing channel: from_cache: False
[0xD62C:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0xD62C:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0xD62C:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=154, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD62C:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0xd62c] Extending timeout for 0x9a request
[0xD62C:1:0x0003]: initializing channel: from_cache: False
[0xD62C:1:0x0003]: finished channel initialization
[0xD62C:1:0x0020]: initializing channel: from_cache: False
[0xD62C:1:0x0020]: finished channel initialization
[0xD62C:1:0x1000]: initializing channel: from_cache: False
[0xD62C:1:0x1000]: finished channel initialization
[0xD62C:1:0x0102]: initializing channel: from_cache: False
[0xD62C:1:0x0102]: finished channel initialization
[0xD62C:1:0x0008]: initializing channel: from_cache: False
[0xD62C:1:0x0008]: finished channel initialization
[0xD62C:1:0x0006]: initializing channel: from_cache: False
[0xD62C:1:0x0006]: finished channel initialization
[0xD62C:1:0x0019]: initializing channel: from_cache: False
[0xD62C:1:0x0019]: finished channel initialization
[0xD62C](TRADFRI SHORTCUT Button): Device seen - marking the device available and resetting counter
[0xD62C](TRADFRI SHORTCUT Button): Update device availability -  device available: True - new availability: True - changed: False
[0xD62C:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0xD62C:1:0x0001]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>. Retrying in 1.2s
[0xD62C:1:0x0001]: initializing channel: from_cache: False
[0xD62C:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0xD62C:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0xD62C:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=155, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD62C:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0xd62c] Extending timeout for 0x9b request
[0xD62C:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0xD62C:1:0x0001]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>. Retrying in 0.9s
[0xD62C:1:0x0001]: initializing channel: from_cache: False
[0xD62C:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0xD62C:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0xD62C:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=156, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD62C:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0xd62c] Extending timeout for 0x9c request
[0x7F6A](DS01): Device seen - marking the device available and resetting counter
[0x7F6A](DS01): Update device availability -  device available: True - new availability: True - changed: False
[0xD62C:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0xD62C:1:0x0001]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>. Retrying in 3.6s
[0xD62C:1:0x0001]: initializing channel: from_cache: False
[0xD62C:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0xD62C:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0xD62C:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=157, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD62C:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0xd62c] Extending timeout for 0x9d request
[0xBF0E](TS0044): Device seen - marking the device available and resetting counter
[0xBF0E](TS0044): Update device availability -  device available: True - new availability: True - changed: False

Note that the E1812 gets recognized twice, getting different addresses.
Expected behavior
E1812 gets recognized once and generates events when clicked.

Device 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: 128>, manufacturer_code=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0820",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x0009",
        "0x0020",
        "0x1000"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0006",
        "0x0008",
        "0x0019",
        "0x0102",
        "0x1000"
      ]
    }
  },
  "manufacturer": "IKEA of Sweden",
  "model": "TRADFRI SHORTCUT Button",
  "class": "zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn"
}

Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant Supervised",
    "version": "2022.9.2",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.5",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Rome",
    "os_name": "Linux",
    "os_version": "5.10.0-17-amd64",
    "supervisor": "2022.08.6",
    "host_os": "Debian GNU/Linux 11 (bullseye)",
    "docker_version": "20.10.17",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "tasmota_irhvac": {
      "version": "2021.12.0",
      "requirements": []
    },
    "scheduler": {
      "version": "v0.0.0",
      "requirements": []
    },
    "nodered": {
      "version": "1.0.9",
      "requirements": []
    },
    "remote_homeassistant": {
      "version": "3.6",
      "requirements": []
    },
    "sonoff": {
      "version": "3.2.0",
      "requirements": [
        "pycryptodome>=3.6.6"
      ]
    },
    "shelly": {
      "version": "1.0.2",
      "requirements": [
        "pyShelly==1.0.2",
        "paho-mqtt==1.6.1",
        "websocket-client"
      ]
    },
    "hacs": {
      "version": "1.27.2",
      "requirements": [
        "aiogithubapi>=22.2.4"
      ]
    },
    "hisense_tv": {
      "version": "22.05.09",
      "requirements": [
        "wakeonlan==2.0.1"
      ]
    },
    "localtuya": {
      "version": "4.1.0",
      "requirements": []
    },
    "dual_smart_thermostat": {
      "version": "0.5.5",
      "requirements": []
    },
    "zha_toolkit": {
      "version": "v0.8.16",
      "requirements": []
    },
    "aquaariston": {
      "version": "1.0.50",
      "requirements": []
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "requirements": [
      "bellows==0.33.1",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.79",
      "zigpy-deconz==0.18.1",
      "zigpy==0.50.3",
      "zigpy-xbee==0.15.0",
      "zigpy-zigate==0.9.2",
      "zigpy-znp==0.8.2"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      }
    ],
    "dependencies": [
      "file_upload"
    ],
    "after_dependencies": [
      "onboarding",
      "usb",
      "zeroconf"
    ],
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp"
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 54828,
    "manufacturer": "IKEA of Sweden",
    "model": "TRADFRI SHORTCUT Button",
    "name": "IKEA of Sweden TRADFRI SHORTCUT Button",
    "quirk_applied": true,
    "quirk_class": "zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn",
    "manufacturer_code": 4476,
    "power_source": "Battery or Unknown",
    "lqi": 178,
    "rssi": null,
    "last_seen": "2022-09-13T23:35:18",
    "available": true,
    "device_type": "EndDevice",
    "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: 128>, manufacturer_code=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": 260,
          "device_type": "0x0820",
          "in_clusters": [
            "0x0000",
            "0x0001",
            "0x0003",
            "0x0009",
            "0x0020",
            "0x1000"
          ],
          "out_clusters": [
            "0x0003",
            "0x0004",
            "0x0006",
            "0x0008",
            "0x0019",
            "0x0102",
            "0x1000"
          ]
        }
      }
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "button.ikea_of_sweden_tradfri_shortcut_button_identifybutton",
        "name": "IKEA of Sweden TRADFRI SHORTCUT Button"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_tradfri_shortcut_button_battery",
        "name": "IKEA of Sweden TRADFRI SHORTCUT Button"
      }
    ],
    "neighbors": [],
    "endpoint_names": [
      {
        "name": "NON_COLOR_CONTROLLER"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "4e502e76718b392a38c901651e439a42",
    "area_id": null,
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "NON_COLOR_CONTROLLER",
          "id": 2080
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0001": {
            "endpoint_attribute": "power",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0009": {
            "endpoint_attribute": "alarms",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0020": {
            "endpoint_attribute": "poll_control",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0008": {
            "endpoint_attribute": "level",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0102": {
            "endpoint_attribute": "window_covering",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Additional logs: one of the buttons started working while collecting report info
Bind log:
[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>])
Sending 'zdo_leave_req' failed:
[0xD19C](TRADFRI SHORTCUT Button): last_seen is<PHONE_NUMBER>120449 seconds ago and ping attempts have been exhausted, marking the device unavailable
[0xD19C](TRADFRI SHORTCUT Button): Update device availability -  device available: False - new availability: False - changed: False
New device 0xd230 (84:ba:20:ff:fe:d4:0e:1f) joined the network
[0xd230] Scheduling initialization
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD230 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=False> from ep 0 to ep 0, cluster 19: b'\x810\xd2\x1f\x0e\xd4\xfe\xff \xba\x84\x80'
[0xd230:zdo] ZDO request ZDOCmd.Device_annce: [0xD230, 84:ba:20:ff:fe:d4:0e:1f, 128]
Tries remaining: 3
[0xd230] Requesting 'Node Descriptor'
Tries remaining: 2
[0xd230] Extending timeout for 0x1d request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD230 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=False> from ep 0 to ep 0, cluster 32770: b'\x1d\x000\xd2\x02@\x80|\x11RR\x00\x00,R\x00\x00'
[0xd230] 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: 128>, manufacturer_code=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)
[0xd230] Discovering endpoints
Tries remaining: 3
[0xd230] Extending timeout for 0x1e request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD230 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=False> from ep 0 to ep 0, cluster 32773: b'\x1e\x000\xd2\x01\x01'
[0xd230] Discovered endpoints: [1]
[0xd230] Initializing endpoints [<Endpoint id=1 in=[] out=[] status=<Status.NEW: 0>>]
[0xd230:1] Discovering endpoint information
Tries remaining: 3
[0xd230] Extending timeout for 0x1f request
Received frame on uninitialized device <Device model=None manuf=None nwk=0xD230 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=False> from ep 0 to ep 0, cluster 32772: b'\x1f\x000\xd2"\x01\x04\x01 \x08\x01\x06\x00\x00\x01\x00\x03\x00\t\x00 \x00\x00\x10\x07\x03\x00\x04\x00\x06\x00\x08\x00\x19\x00\x02\x01\x00\x10'
[0xd230:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=2080, device_version=1, input_clusters=[0, 1, 3, 9, 32, 4096], output_clusters=[3, 4, 6, 8, 25, 258, 4096])
[0xD230:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=32, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xD230:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 5])
[0xd230] Extending timeout for 0x20 request
[0xD230:1:0x0000] Received ZCL frame: b'\x18\x20\x01\x04\x00\x00\x42\x0E\x49\x4B\x45\x41\x20\x6F\x66\x20\x53\x77\x65\x64\x65\x6E\x05\x00\x00\x42\x17\x54\x52\x41\x44\x46\x52\x49\x20\x53\x48\x4F\x52\x54\x43\x55\x54\x20\x42\x75\x74\x74\x6F\x6E'
[0xD230:1:0x0000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=32, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD230:1:0x0000] Decoded ZCL frame: Basic:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0004, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='IKEA of Sweden')), ReadAttributeRecord(attrid=0x0005, status=<Status.SUCCESS: 0>, value=TypeValue(type=CharacterString, value='TRADFRI SHORTCUT Button'))])
[0xd230] Read model 'TRADFRI SHORTCUT Button' and manufacturer 'IKEA of Sweden' from <Endpoint id=1 in=[basic:0x0000, power:0x0001, identify:0x0003, alarms:0x0009, poll_control:0x0020, lightlink:0x1000] out=[identify:0x0003, groups:0x0004, on_off:0x0006, level:0x0008, ota:0x0019, window_covering:0x0102, lightlink:0x1000] status=<Status.ZDO_INIT: 1>>
[0xd230] Discovered basic device information for <Device model='TRADFRI SHORTCUT Button' manuf='IKEA of Sweden' nwk=0xD230 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=True>
Device is initialized <Device model='TRADFRI SHORTCUT Button' manuf='IKEA of Sweden' nwk=0xD230 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=True>
Checking quirks for IKEA of Sweden TRADFRI SHORTCUT Button (84:ba:20:ff:fe:d4:0e:1f)
Considering <class 'zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn2'>
Fail because input cluster mismatch on at least one endpoint
Considering <class 'zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn'>
Found custom device replacement for 84:ba:20:ff:fe:d4:0e:1f: <class 'zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn'>
'button' component -> 'ZHAIdentifyButton' using ['identify']
'sensor' component -> 'Battery' using ['power']
'sensor' component -> 'RSSISensor' using ['basic']
'sensor' component -> 'LQISensor' using ['basic']
device - 0xD230:84:ba:20:ff:fe:d4:0e:1f entering async_device_initialized - is_new_join: True
device - 0xD230:84:ba:20:ff:fe:d4:0e:1f has joined the ZHA zigbee network
[0xD230](TRADFRI SHORTCUT Button): started configuration
[0xD230:ZDO](TRADFRI SHORTCUT Button): 'async_configure' stage succeeded
[0xD230:1:0x0000]: Configuring cluster attribute reporting
Error handling '_save_attribute' event with (84:ba:20:ff:fe:d4:0e:1f, 1, 0, 5, 'TRADFRI SHORTCUT Button') params: FOREIGN KEY constraint failed
[0xD230:1:0x1000] Received ZCL frame: b'\x19\x23\x41\x01\x00\x00'
[0xD230:1:0x1000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=35, command_id=65, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD230:1:0x1000] Decoded ZCL frame: LightLinkCluster:get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0x0000:2] Cannot add 0x0000 group, no groups cluster
[0x0000:1] Cannot add 0x0000 group, no groups cluster
[0xD230:1:0x0001]: bound 'power' cluster: Status.SUCCESS
[0xD230:1:0x0001] Received ZCL frame: b'\x08\x27\x07\x00'
[0xD230:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=39, command_id=7, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0xD230:1:0x0001] Decoded ZCL frame: PowerConfiguration1CRCluster:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)])
[0xD230:1:0x0001]: Successfully configured reporting for '{'battery_voltage': (3600, 10800, 1), 'battery_percentage_remaining': (3600, 10800, 1)}' on 'power' cluster: [ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)]
[0x7F6A](DS01): Device seen - marking the device available and resetting counter
[0x7F6A](DS01): Update device availability -  device available: True - new availability: True - changed: False
Device 0xd230 (84:ba:20:ff:fe:d4:0e:1f) left the network
[0xBF0E](TS0044): Device seen - marking the device available and resetting counter
[0xBF0E](TS0044): Update device availability -  device available: True - new availability: True - changed: False
[0xD230:1:0x0020]: Failed to bind 'poll_control' cluster:
[0xD230:1:0x0102]: Failed to bind 'window_covering' cluster:
[0xD230:1:0x0008]: Failed to bind 'level' cluster:
[0xD230:1:0x0006]: Failed to bind 'on_off' cluster:
Device 0xc65a (84:ba:20:ff:fe:d4:0e:1f) joined the network
Device 84:ba:20:ff:fe:d4:0e:1f changed id (0xd230 => 0xc65a)
[0xc65a] Skipping initialization, device is fully initialized
Device is initialized <IkeaTradfriShortcutBtn model='TRADFRI SHORTCUT Button' manuf='IKEA of Sweden' nwk=0xC65A ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=True>
device - 0xC65A:84:ba:20:ff:fe:d4:0e:1f entering async_device_initialized - is_new_join: True
device - 0xC65A:84:ba:20:ff:fe:d4:0e:1f has joined the ZHA zigbee network
[0xC65A](TRADFRI SHORTCUT Button): started configuration
[0xC65A:ZDO](TRADFRI SHORTCUT Button): 'async_configure' stage succeeded
[0xC65A:1:0x0000]: Configuring cluster attribute reporting
[0xC65A:1:0x0020]: Couldn't set check-in interval: Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>
[0xC65A:1:0x0020]: finished channel configuration
[0xC65A:1:0x0000]: 'async_configure' stage succeeded
[0xC65A:1:0x0003]: 'async_configure' stage succeeded
[0xC65A:1:0x0001]: 'async_configure' stage succeeded
[0xC65A:1:0x0020]: 'async_configure' stage succeeded
[0xC65A:1:0x1000]: 'async_configure' stage succeeded
[0xC65A:1:0x0102]: 'async_configure' stage succeeded
[0xC65A:1:0x0008]: 'async_configure' stage succeeded
[0xC65A:1:0x0006]: 'async_configure' stage succeeded
[0xC65A:1:0x0019]: 'async_configure' stage succeeded
[0xC65A](TRADFRI SHORTCUT Button): completed configuration
[0xC65A:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=False), tsn=47, command_id=64, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0xC65A:1:0x0003] Sending request: trigger_effect(effect_id=<EffectIdentifier.Okay: 2>, effect_variant=<EffectVariant.Default: 0>)
[0xc65a] Extending timeout for 0x2f request
Device 0x20d3 (84:ba:20:ff:fe:d4:0e:1f) joined the network
Device 84:ba:20:ff:fe:d4:0e:1f changed id (0xc65a => 0x20d3)
[0x20d3] Skipping initialization, device is fully initialized
Device is initialized <IkeaTradfriShortcutBtn model='TRADFRI SHORTCUT Button' manuf='IKEA of Sweden' nwk=0x20D3 ieee=84:ba:20:ff:fe:d4:0e:1f is_initialized=True>
device - 0x20D3:84:ba:20:ff:fe:d4:0e:1f entering async_device_initialized - is_new_join: True
device - 0x20D3:84:ba:20:ff:fe:d4:0e:1f has joined the ZHA zigbee network
[0x20D3](TRADFRI SHORTCUT Button): started configuration
[0x20D3:ZDO](TRADFRI SHORTCUT Button): 'async_configure' stage succeeded
[0x20D3:1:0x0000]: Configuring cluster attribute reporting
Device 0x20d3 (84:ba:20:ff:fe:d4:0e:1f) joined the network
[0x20d3:zdo] ZDO request ZDOCmd.Device_annce: [0x20D3, 84:ba:20:ff:fe:d4:0e:1f, 128]
[0x20D3:1:0x1000] Received ZCL frame: b'\x19\x32\x41\x01\x00\x00'
[0x20D3:1:0x1000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=50, command_id=65, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x1000] Decoded ZCL frame: LightLinkCluster:get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0x0000:2] Cannot add 0x0000 group, no groups cluster
[0x0000:1] Cannot add 0x0000 group, no groups cluster
[0x20D3:1:0x0001]: bound 'power' cluster: Status.SUCCESS
[0x20D3:1:0x0020]: bound 'poll_control' cluster: Status.SUCCESS
[0x20D3:1:0x0001] Received ZCL frame: b'\x08\x36\x07\x00'
[0x20D3:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=54, command_id=7, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x0001] Decoded ZCL frame: PowerConfiguration1CRCluster:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)])
[0x20D3:1:0x0001]: Successfully configured reporting for '{'battery_voltage': (3600, 10800, 1), 'battery_percentage_remaining': (3600, 10800, 1)}' on 'power' cluster: [ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)]
[0x20D3:1:0x0020] Received ZCL frame: b'\x18\x37\x04\x00'
[0x20D3:1:0x0020] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=55, command_id=4, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x0020] Decoded ZCL frame: PollControl:Write_Attributes_rsp(status_records=[WriteAttributesStatusRecord(status=<Status.SUCCESS: 0>)])
[0x20D3:1:0x0020]: 3300.0s check-in interval set: Write_Attributes_rsp(status_records=[WriteAttributesStatusRecord(status=<Status.SUCCESS: 0>)])
[0x20D3:1:0x0020]: finished channel configuration
[0x20D3:1:0x1000] Received ZCL frame: b'\x19\x2B\x41\x01\x00\x00'
[0x20D3:1:0x1000] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=43, command_id=65, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x1000] Decoded ZCL frame: LightLinkCluster:get_group_identifiers_rsp(total=1, start_index=0, group_info_records=[])
[0x0000:2] Cannot add 0x0000 group, no groups cluster
[0x0000:1] Cannot add 0x0000 group, no groups cluster
[0x20D3:1:0x0003] Received ZCL frame: b'\x08\x2F\x0B\x40\x00'
[0x20D3:1:0x0003] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=47, command_id=11, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x0003] Decoded ZCL frame: Identify:Default_Response(command_id=64, status=<Status.SUCCESS: 0>)
[0x20D3:1:0x0003]: executed 'trigger_effect' command with args: '(2, 0)' kwargs: '{}' result: Default_Response(command_id=64, status=<Status.SUCCESS: 0>)
[0x20D3](TRADFRI SHORTCUT Button): started initialization
[0x20D3:ZDO](TRADFRI SHORTCUT Button): 'async_initialize' stage succeeded
[0x20D3:1:0x0000]: initializing channel: from_cache: False
[0x20D3:1:0x0000]: finished channel initialization
[0x20D3:1:0x0003]: initializing channel: from_cache: False
[0x20D3:1:0x0003]: finished channel initialization
[0x20D3:1:0x0001]: initializing channel: from_cache: False
[0x20D3:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0x20D3:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0x20D3:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=56, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0x20D3:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0x20d3] Extending timeout for 0x38 request
[0x20D3:1:0x0020]: initializing channel: from_cache: False
[0x20D3:1:0x0020]: finished channel initialization
[0x20D3:1:0x1000]: initializing channel: from_cache: False
[0x20D3:1:0x1000]: finished channel initialization
[0x20D3:1:0x0102]: initializing channel: from_cache: False
[0x20D3:1:0x0102]: finished channel initialization
[0x20D3:1:0x0008]: initializing channel: from_cache: False
[0x20D3:1:0x0008]: finished channel initialization
[0x20D3:1:0x0006]: initializing channel: from_cache: False
[0x20D3:1:0x0006]: finished channel initialization
[0x20D3:1:0x0019]: initializing channel: from_cache: False
[0x20D3:1:0x0019]: finished channel initialization
[0x20d3:zdo] ZDO request ZDOCmd.Bind_rsp: [<Status.SUCCESS: 0>]
[0x20d3:zdo] No handler for ZDO request:ZDOCmd.Bind_rsp([<Status.SUCCESS: 0>])
[0x20D3:1:0x0001] Received ZCL frame: b'\x18\x38\x01\x20\x00\x00\x20\x00\x21\x00\x00\x20\x64'
[0x20D3:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=56, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x0001] Decoded ZCL frame: PowerConfiguration1CRCluster:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0020, status=<Status.SUCCESS: 0>, value=TypeValue(type=uint8_t, value=0)), ReadAttributeRecord(attrid=0x0021, status=<Status.SUCCESS: 0>, value=TypeValue(type=uint8_t, value=100))])
[0x20D3:1:0x0001]: Performing channel specific initialization: ['battery_voltage', 'battery_percentage_remaining']
[0x20D3:1:0x0001]: Reading attributes in chunks: ['battery_size', 'battery_quantity']
[0x20D3:1:0x0001]: finished channel initialization
[0x20D3:1:0x0000]: 'async_initialize' stage succeeded
[0x20D3:1:0x0003]: 'async_initialize' stage succeeded
[0x20D3:1:0x0001]: 'async_initialize' stage succeeded
[0x20D3:1:0x0020]: 'async_initialize' stage succeeded
[0x20D3:1:0x1000]: 'async_initialize' stage succeeded
[0x20D3:1:0x0102]: 'async_initialize' stage succeeded
[0x20D3:1:0x0008]: 'async_initialize' stage succeeded
[0x20D3:1:0x0006]: 'async_initialize' stage succeeded
[0x20D3:1:0x0019]: 'async_initialize' stage succeeded
[0x20D3](TRADFRI SHORTCUT Button): power source: Battery or Unknown
[0x20D3](TRADFRI SHORTCUT Button): completed initialization
[0x20D3:1:0x0001] Received ZCL frame: b'\x08\x36\x07\x00'
[0x20D3:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=True), tsn=54, command_id=7, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
[0x20D3:1:0x0001] Decoded ZCL frame: PowerConfiguration1CRCluster:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)])
[0x20D3:1:0x0001] Received command 0x07 (TSN 54): Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=<Status.SUCCESS: 0>)])
[0x20d3:zdo] ZDO request ZDOCmd.Bind_rsp: [<Status.SUCCESS: 0>]
[0x20d3:zdo] No handler for ZDO request:ZDOCmd.Bind_rsp([<Status.SUCCESS: 0>])
[0x20D3:1:0x0001]: Failed to bind 'power' cluster:
[0x20D3:1:0x0020]: Failed to bind 'poll_control' cluster:
[0x20D3:1:0x0102]: Failed to bind 'window_covering' cluster:
[0x20D3:1:0x0008]: Failed to bind 'level' cluster:
[0x20D3:1:0x0006]: Failed to bind 'on_off' cluster:
[0x20D3:1:0x0102]: Failed to bind 'window_covering' cluster:
[0x20D3:1:0x0008]: Failed to bind 'level' cluster:
[0x20D3:1:0x0006]: Failed to bind 'on_off' cluster:
[0x20D3:1:0x0000]: 'async_configure' stage succeeded
[0x20D3:1:0x0003]: 'async_configure' stage succeeded
[0x20D3:1:0x0001]: 'async_configure' stage succeeded
[0x20D3:1:0x0020]: 'async_configure' stage succeeded
[0x20D3:1:0x1000]: 'async_configure' stage succeeded
[0x20D3:1:0x0102]: 'async_configure' stage succeeded
[0x20D3:1:0x0008]: 'async_configure' stage succeeded
[0x20D3:1:0x0006]: 'async_configure' stage succeeded
[0x20D3:1:0x0019]: 'async_configure' stage succeeded
[0x20D3](TRADFRI SHORTCUT Button): completed configuration
[0x20D3:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=False), tsn=59, command_id=64, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0x20D3:1:0x0003] Sending request: trigger_effect(effect_id=<EffectIdentifier.Okay: 2>, effect_variant=<EffectVariant.Default: 0>)
[0x20d3] Extending timeout for 0x3b request
[0xD19C](TRADFRI SHORTCUT Button): last_seen is<PHONE_NUMBER>6395073 seconds ago and ping attempts have been exhausted, marking the device unavailable
[0xD19C](TRADFRI SHORTCUT Button): Update device availability -  device available: False - new availability: False - changed: False
[0x7F6A](DS01): Device seen - marking the device available and resetting counter
[0x7F6A](DS01): Update device availability -  device available: True - new availability: True - changed: False
[0x20D3:1:0x0020]: Couldn't set check-in interval: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0x20D3:1:0x0020]: finished channel configuration
[0x20D3:1:0x0001]: failed to set reporting on 'power' cluster for: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0x20D3:1:0x0000]: 'async_configure' stage succeeded
[0x20D3:1:0x0003]: 'async_configure' stage succeeded
[0x20D3:1:0x0001]: 'async_configure' stage succeeded
[0x20D3:1:0x0020]: 'async_configure' stage succeeded
[0x20D3:1:0x1000]: 'async_configure' stage succeeded
[0x20D3:1:0x0102]: 'async_configure' stage succeeded
[0x20D3:1:0x0008]: 'async_configure' stage succeeded
[0x20D3:1:0x0006]: 'async_configure' stage succeeded
[0x20D3:1:0x0019]: 'async_configure' stage succeeded
[0x20D3](TRADFRI SHORTCUT Button): completed configuration
[0x20D3:1:0x0003] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=False), tsn=60, command_id=64, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0x20D3:1:0x0003] Sending request: trigger_effect(effect_id=<EffectIdentifier.Okay: 2>, effect_variant=<EffectVariant.Default: 0>)
[0x20d3] Extending timeout for 0x3c request
[0x20D3:1:0x0003]: command failed: 'trigger_effect' args: '(2, 0)' kwargs '{}' exception: 'Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>'
[0x20D3](TRADFRI SHORTCUT Button): started initialization
[0x20D3:ZDO](TRADFRI SHORTCUT Button): 'async_initialize' stage succeeded
[0x20D3:1:0x0000]: initializing channel: from_cache: False
[0x20D3:1:0x0000]: finished channel initialization
[0x20D3:1:0x0003]: initializing channel: from_cache: False
[0x20D3:1:0x0003]: finished channel initialization
[0x20D3:1:0x0001]: initializing channel: from_cache: False
[0x20D3:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0x20D3:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0x20D3:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=61, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0x20D3:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0x20d3] Extending timeout for 0x3d request
[0x20D3:1:0x0020]: initializing channel: from_cache: False
[0x20D3:1:0x0020]: finished channel initialization
[0x20D3:1:0x1000]: initializing channel: from_cache: False
[0x20D3:1:0x1000]: finished channel initialization
[0x20D3:1:0x0102]: initializing channel: from_cache: False
[0x20D3:1:0x0102]: finished channel initialization
[0x20D3:1:0x0008]: initializing channel: from_cache: False
[0x20D3:1:0x0008]: finished channel initialization
[0x20D3:1:0x0006]: initializing channel: from_cache: False
[0x20D3:1:0x0006]: finished channel initialization
[0x20D3:1:0x0019]: initializing channel: from_cache: False
[0x20D3:1:0x0019]: finished channel initialization
[0x20D3](TRADFRI SHORTCUT Button): Device seen - marking the device available and resetting counter
[0x20D3](TRADFRI SHORTCUT Button): Update device availability -  device available: True - new availability: True - changed: False
[0x20D3:1:0x0003]: command failed: 'trigger_effect' args: '(2, 0)' kwargs '{}' exception: 'Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>'
[0x20D3](TRADFRI SHORTCUT Button): started initialization
[0x20D3:ZDO](TRADFRI SHORTCUT Button): 'async_initialize' stage succeeded
[0x20D3:1:0x0000]: initializing channel: from_cache: False
[0x20D3:1:0x0000]: finished channel initialization
[0x20D3:1:0x0003]: initializing channel: from_cache: False
[0x20D3:1:0x0003]: finished channel initialization
[0x20D3:1:0x0001]: initializing channel: from_cache: False
[0x20D3:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0x20D3:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0x20D3:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=62, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0x20D3:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0x20d3] Extending timeout for 0x3e request
[0x20D3:1:0x0020]: initializing channel: from_cache: False
[0x20D3:1:0x0020]: finished channel initialization
[0x20D3:1:0x1000]: initializing channel: from_cache: False
[0x20D3:1:0x1000]: finished channel initialization
[0x20D3:1:0x0102]: initializing channel: from_cache: False
[0x20D3:1:0x0102]: finished channel initialization
[0x20D3:1:0x0008]: initializing channel: from_cache: False
[0x20D3:1:0x0008]: finished channel initialization
[0x20D3:1:0x0006]: initializing channel: from_cache: False
[0x20D3:1:0x0006]: finished channel initialization
[0x20D3:1:0x0019]: initializing channel: from_cache: False
[0x20D3:1:0x0019]: finished channel initialization
[0x20D3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>
[0x20D3:1:0x0001]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.NWK_NO_ROUTE: 205>. Retrying in 1.0s
[0x20D3:1:0x0001]: initializing channel: from_cache: False
[0x20D3:1:0x0001]: initializing uncached channel attributes: ['battery_voltage', 'battery_percentage_remaining'] - from cache[False]
[0x20D3:1:0x0001]: Reading attributes in chunks: ['battery_voltage', 'battery_percentage_remaining']
[0x20D3:1:0x0001] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True, *is_reply=False), tsn=63, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>, *is_reply=False)
[0x20D3:1:0x0001] Sending request: Read_Attributes(attribute_ids=[32, 33])
[0x20d3] Extending timeout for 0x3f request
[0xBF0E](TS0044): Device seen - marking the device available and resetting counter
[0xBF0E](TS0044): Update device availability -  device available: True - new availability: True - changed: False

Device 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: 128>, manufacturer_code=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0820",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x0009",
        "0x0020",
        "0x1000"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0006",
        "0x0008",
        "0x0019",
        "0x0102",
        "0x1000"
      ]
    }
  },
  "manufacturer": "IKEA of Sweden",
  "model": "TRADFRI SHORTCUT Button",
  "class": "zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn"
}

<Status.NWK_NO_ROUTE: 205> and Extending timeout for 0x9d request = the device is sleeping.
Try waking  the device up then its paring by pressing the button every 2 seconds then its looks its failing in sleep and not receiving the configuration OK.
Also if its paired OK do one reconfigure this device from the device card and not  forgetting waking  it up then sending  things to it.
I can see you is having more sleepers but do you also have some routers that can helping the network preforms better ?
Also wot coordinator is you using ?

Seems the anwer via mail got lost. But I now have news.
Just before re-pairing, I retested the button that yesterday didn't work and now it's working. The only change was a system upgrade (including a HA update to 2022.9.4) and a reboot. None of those changes was about the bridge, and previously I didn't see button presses in bridge's console. I'm really confused. But maybe the hint could help others: update and reboot! And wait the next day before trying do pair again.
Tks and sorry for the noise.

I already tried pressing the button at regular intervals w/ no luck :(
The (currently...) working one did not require any presses, and its log is
the one I attached at the end of the report.
I also read that newer fw on the button only allows binding to another
device, so I also tried binding it to the coordinator from the device page
in HA before retrying pairing.
The coordinator is a ZigStar Lan Gateway (link at the beginning of the
report).
Tks,
Diego
Il mer 14 set 2022, 08:46 MattWestb @.***> ha scritto:

<Status.NWK_NO_ROUTE: 205> and Extending timeout for 0x9d request = the
device is sleeping.
Try waking the device up then its paring by pressing the button every 2
seconds then its looks its failing in sleep and not receiving the
configuration OK.
Also if its paired OK do one reconfigure this device from the device card
and not forgetting waking it up then sending things to it.
I can see you is having more sleepers but do you also have some routers
that can helping the network preforms better ?
Also wot coordinator is you using ?
—
Reply to this email directly, view it on GitHub
https://github.com/zigpy/zha-device-handlers/issues/1752#issuecomment-1246316754,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAODXYJLLAZIF52364AK7HTV6FYFXANCNFSM6AAAAAAQL22PTA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Is there still an issue here? IKEA devices often need to be woken up again after re-pairing to reconfigure them.
So, open the device page -> click reconfigure device and shortly after starting the reconfiguration, press a button on the remote to wake it up.

issue seems device-dependant.
One of the buttons is working w/o issues. The other one gets paired and then disappears. Sometimes it works for some time but suddenly stops.
Also tried pressing the action button, start reconfiguration, press the button again every few seconds to keep it awake: reconfiguration failed anyway.
BUT if I single-press the pairing button just before starting reconfiguration, it fails very early and events start to come thru.

Its can being problems if paring direct with the coordinator or one router (depends of the coordinator type).
And IT coordinator is not setting up them OK then having them as direct children.
Try paring thru on router and its very likely working OK and also reconfigure after its being paired.

Actually I couldn't pair it with various routers, but only with coordinator. I now moved it where it does have to go thru 2 or 3 routers and seems it's still working. But pairing is a nightmare.

Had a similar issue. This did the trick for me:

remove the battery
press the button a few times (probably unnecessary but that's what I did)
re-insert the battery
reconfigure, press the button right after starting reconfiguring

The reconfigure went really fast, exited with an error, but it works nonetheless. I've tried removing/repairing/reconfiguring many times and removing the battery was the thing that finally did the trick for me.

@aykevl I have the same issue, even got IKEA to send another one but neither of them i can detect events. I have tried custom quirks but nothing is working :(

I've now switched over to zigbee2mqtt and they got recognized instantly, no issues whatsoever.

Thank you @aykevl. I now have two working buttons :). ZHA is the issue.

Hey there,
i have the same issue.
i've switched vom deconz to zha with my conbee 2 stick.
i use 3 tradfri shortcut buttons but only 1 is working after i tried hours of reconfiguration and so on but the 2 other buttons won't work.
does someone figured out a method to get them work ?

After getting the the device paired you shall doing one reconfigure from the device card and waking  the device up by pressing one key so its not sleeping and can receiving the commands.
It can being tricky getting it working and with the new 24.5 firmware for IKEA controllers its the best way taking the battery out and waiting one half minute and putting it back then start the reconfigure at the same time (I know its not easy, im a Man ;-).

I had the same issue with pairing Shortcut Button with my ZHA and CC2652P. I made several attempts to pair the button. The successful attempt was when I pressed the button regularly (every 1-2 seconds) during pairing and ~2 minutes after pairing. Now I see button events in the Home Assistant logbook

@radian997 I think TI is having one bug that is making problem adding all Zigbee 3 controllers / sleeping end devices direct to the coordinator. If having some router devices try joining them thru them and is very likely working better.

Already tried both workarounds (also combined):

press button every second: 50% of the times binding or configuration fails
bind to a router: I have some Tuya switches and a reprogrammed CC2531 dongle, no change

Other devices (including a Tuya 4-button scene switch) work w/o issues.
One of the two buttons also worked for some months then decided to not fire events.
My Z2M-managed dongle (also CC2652P) w/ no routers attached ( = buttons are bound to the coordinator) sees events from both buttons. That makes me think it's a ZHA/zigpy issue, maybe in a quirk.

Seems the only procedure that seems to work quite often is:

delete shortcut button
restart HA
re-bind the button

Without step 2, events do not appear.
HIH.

After new paring IKEA controller always do one reconfigure for getting the reporting working OK and also dot forgetting binding the group for older for firmware / devices for latest versions if searing lights with them.


adding option to disable resizing of tables

closes #310

Thanks again, Chris!
Now, if there is an option for resizing I would set the default value to false (And set it to true for the demo). Will merge it after that! 👍


Dump1090 (mutability) is installed despite fact that (FlightAware) was chosen

I'm installing on a fresh 2018-06-27-raspian-stretch-lite using the steps at https://github.com/jprochazka/adsb-receiver. When executing ./install.sh, the menu Dump1090 FlightAware is chosen, along with the PiAware feeder. However, dump1090-mutability is installed and set to start automatically, even though I did not choose it.
Is flightaware also installed but running in the background?

Just tested it out and see nothing wrong.
When selecting options make sure to highlight the option then hit space bar.
This is how the whiptail package which is used to render said options works I am afraid to say.


fix(file-list): Ensure duplicate files are handled properly

Previously, if file patterns amounted to duplicate files, the pattern resolution function would fail and Karma would continue on with an empty files list, namely "included". This led to confusing, generic adapter errors. This commit fixes that by replacing the offending code with a (likely) equivalent.
To replicate issue, include patterns that amount to duplicate files.
To see the error, wrap the following statement if (other && other.compare(p) < 0) return (contained inside file-list.js) in a try {} catch () {} block. In essence, other.compare does not exist.
Might be related to issue #2194

@dignifiedquire Sorry to pull you into this, I saw that you were involved in what could be a related issue. Would you happen to know what the intention of if (other && other.compare(p) < 0) return was suppose to be? As mentioned above, other.compare(p)  does not appear to exist in the file object. I replaced it with byPath(other, p), but I'm not entirely sure that it's the way to go, especially since a few related e2e tests aren't passing.

Thank you for figuring this out, the commit introducing the commit was https://github.com/karma-runner/karma/commit/db42a7fb1d37fa1196759b4f6b12e39f612fae5c and the .compare comes from here: https://github.com/karma-runner/karma/blob/master/lib/config.js#L42
Probably the issue is that other is not an instance of Pattern and that is the issue that needs fixing.

@dignifiedquire Thank you for the additional info, does normalizing the patterns before they are included in the lookup sound like a decent strategy to you? Something along the lines of:
if (p.constructor.name !== 'Pattern') {
   p = new Pattern(p.pattern, p.served, p.included, p.watched, p.nocache)
}
lookup[file.path] = p

I think we should make sure that here and here only pattern instances are passed in, so that we are sure that this._pattern is always and array of Pattern

@dignifiedquire I actually considered that, too. But, I don't fully understand the data flow in the system and thought that it would be risky to try to address the roots. However, if you're suggesting it, it makes me feel a bit more confident about that route — it seems to be more ideal. I thought about doing something along the lines of:
this._patterns = patterns.map(function (p) {
  if (p.constructor.name === 'Pattern') {
    return p
  }
  return new Pattern(p.pattern, p.served, p.included, p.watched, p.nocache)
})

Is that what you had in mind?

Sorry @m-a-r-c-e-l-i-n-o for not getting back on this earlier, I was away on a work trip and didn't have much time to look into this. It's important to get fixed properly so I will see that I can get you good answer by the end of today.

After reading your comment, yes I think this is the right way to go. Have you tested if the issues in #2194 are going away after a fix like this?

@dignifiedquire No worries. I just tested it and found two odd behaviors.

The patterns object will throw a "no adapter" error during unit tests if the object is replaced, so map is not usable here. Not a big deal, but would be nice to know why that is. You can try doing this._patterns = patterns.concat([]) to experience what I am talking about.

This and this do not appear to be roots of this. In my setup, the patterns object here is empty and here its full, so the error is still present since the patterns haven't been normalized. I'm assuming it's being populated by the plugins?

We need to understand this data flow a little better. Any thoughts?

Thanks a lot, turns out I have to fix it in that nasty location as the adapters might be editing things directly. See my PR for a fix, which I will merge and release as soon as CI is happ.


made engines selectable via keyboard

Fixes

Replaced to #47
Description

This PR makes engines selectable via keyboard.
Technical details

Tests

Screenshots

Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main or master).
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[ x] I tried running the project locally and verified that there are no
visible errors.

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@MdSahil-oss
Thanks for working on this!
After testing it via Docker I believe there's going to need to be, at a minimum, CSS changes made to fully implement this, as the buttons don't have any visible focus indicators present when navigating via keyboard.
There's a good intro to this behavior here, Web Accessibility 101: Visual Focus Indication, if that's helpful.

@possumbilities Now, I've fixed css related issue let me know if there is any other thing to change.


remove myself from owners for tests

I'll self-lgtm since there's no risk.
Signed-off-by: Kuat Yessenov<EMAIL_ADDRESS>

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: kyessenov
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

tests/e2e/tests/pilot/OWNERS [kyessenov]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kyessenov: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-unit-tests

prow/istio-pilot-multicluster-e2e.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-pilot-multicluster-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-unit-tests

prow/istio-pilot-multicluster-e2e.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-pilot-multicluster-e2e

prow/istio-integ-k8s-tests.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-integ-k8s-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: kyessenov, nmittler
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

tests/e2e/tests/pilot/OWNERS [kyessenov,nmittler]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Seems like CI is in some borked state...

/retest

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-integ-k8s-tests

prow/istio-pilot-multicluster-e2e.sh
2923f7e42da97270dcaa0d6e88498b6f955b8263
link
/test istio-pilot-multicluster-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
5ae7dd9ae0f18143dd898300bc82b835358a2414
link
/test istio-integ-k8s-tests

prow/istio-pilot-multicluster-e2e.sh
2923f7e42da97270dcaa0d6e88498b6f955b8263
link
/test istio-pilot-multicluster-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-multicluster-e2e.sh
2923f7e42da97270dcaa0d6e88498b6f955b8263
link
/test istio-pilot-multicluster-e2e

prow/istio-integ-k8s-tests.sh
2923f7e42da97270dcaa0d6e88498b6f955b8263
link
/test istio-integ-k8s-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Case-sensitive files/folders on Windows are not shown correctly in vscode

Does this issue occur when all extensions are disabled?: Yes
When using setCaseSensitiveInfo not all files/folders will show up in vscode's file tree
Screenshot: vscode with file tree (left) and dir command in terminal (right):

VS Code Version: 1.76.2
OS Version: Windows 10 Pro (Version: 21H2, OS build: 19044.2728)

Steps to Reproduce:

Create a new folder, e.g. C:\Users\<YourUser>\Documents\Test
Open Terminal in your new folder and run fsutil.exe file setCaseSensitiveInfo . enable
Create a new folder C:\Users\<YourUser>\Documents\Test\A
Create a new folder C:\Users\<YourUser>\Documents\Test\a
Open C:\Users\<YourUser>\Documents\Test in vscode
Only the folder a will show up

Actually I'll reopen this as to not pollute #94307. Seems like we will have to handle this special FS util flag differently

I recently enabled case sensitivity for all my Gir directories on Windows to make sure I don't introduce errors that will fail for Linux users or the GitHub actions using Linux (ubuntu-latest) for CI/CD / build and deploy. One example of such a cross platform breakage due to difference in case sensitivty:

At a customer we have a repo for hosting Docusaurus for internal documentation, where one guy made picture.PNG (upper case file extension) but referenced it as picture.png (lower case file extension) inside a markdown file. VSCode markdown preview, yarn start and yarn build worked without complains on his Windows machine. Once PR-ed and ubuntu-latest were to deploy the solution, it failed due to picture.png did not exist.

To my surprise VSCode does not seem to handle this very well. Renaming a file to change case only results in VSCode saying the file can't be opened because it does not exist. That is until you reload or close+open VSCode and it reads the filesystem again.
+1 for better case sensitive file system support for Windows.


Proposed Feature
It'd be good if there was preprepared docker images published targeting ARM64 to help with simplicity of setting up monitor.

Thanks for the suggestion! I wanted to let you know that starting with 7.0 Preview 3 (released image) and 6.2 Alpha 1 (nightly image), we have ARM64v8 images available in preview. These images have a -arm64v8 suffix on the end of their tags.
Here's the tag list for the released images (mcr.microsoft.com/dotnet/monitor): https://mcr.microsoft.com/v2/dotnet/monitor/tags/list
Here's the tag list for the nightly images (mcr.microsoft.com/dotnet/nightly/monitor): https://mcr.microsoft.com/v2/dotnet/nightly/monitor/tags/list


teslamate not starting / rebooting

Describe the bug
when I follow the instructions with the easy internal network istallation on a synology, the teslamate container does not start. it gives the error message below.
I tried to manually create the import directory, but this results in a constant rebooting of the teslamate container.
help (docker newbie)

Recreating docker_teslamate_1 ... error
ERROR: for docker_teslamate_1  Cannot start service teslamate: Bind mount failed: '/volume1/@docker/import' does not exists
ERROR: for teslamate  Cannot start service teslamate: Bind mount failed: '/volume1/@docker/import' does not exists
ERROR: Encountered errors while bringing up the project.
A clear and concise description of what the bug is.
To Reproduce
as described in the manual for easy installation, Synolgoy runnings DSM 6.2.2-24922 Update 4 //
yml fiel created baased on manual
docker launched through docker-compose up -d
Expected behavior
A clear and concise description of what you expected to happen.
Relevant entries from the logs
You must provide the logs of the teslamate container/application unless the bug can be narrowed down to Grafana.
To get the teslamate Docker container logs, for example, use the following command: docker-compose logs teslamate.

Attaching to docker_teslamate_1, 872c5670d953_docker_teslamate_1
teslamate_1  | WARNING: no logs are available with the 'db' log driver
872c5670d953_docker_teslamate_1 | WARNING: no logs are available with the 'db' log driver

Screenshots
If applicable, add screenshots to help explain the problem.
Data
If applicable, add an export of the data for the given period.
For example, to export charge data after January 1, 2020:
docker-compose exec database psql teslamate teslamate -c \
   "COPY (select * from charges where date > '2020-01-01') TO STDOUT WITH CSV HEADER" > charges.csv

docker-compose exec database psql teslamate teslamate -c \
   "COPY (select * from charging_processes where start_date > '2020-01-01') TO STDOUT WITH CSV HEADER" > charging_processes.csv

To export drive data after January 1, 2020:
docker-compose exec database psql teslamate teslamate -c \
   "COPY (select id, car_id, drive_id, date, elevation, speed, power, odometer, ideal_battery_range_km, est_battery_range_km, rated_battery_range_km, battery_level, usable_battery_level, battery_heater_no_power, battery_heater_on, battery_heater, inside_temp, outside_temp, fan_status, driver_temp_setting, passenger_temp_setting, is_climate_on, is_rear_defroster_on, is_front_defroster_on from positions where date > '2020-01-20') TO STDOUT WITH CSV HEADER" > positions.csv

docker-compose exec database psql teslamate teslamate -c \
   "COPY (select * from drives where start_date > '2020-01-01') TO STDOUT WITH CSV HEADER" > drives.csv

Operating environment

TeslaMate Version: [e.g. v1.14.0]
Type of installation: [e.g. Docker or Manual]
OS: [e.g. Ubuntu]

Synology by default routes all docker logs to it's own store to be used with the synology docker UI package so to grab logs open up the Synology Docker package and look at the details for the teslamate container.

It's not @docker, just docker. The path is /volume1/docker/.

thx !

I tried on the path /volume1/docker -> same result:
I cannot get the logs as the container is not starting (error bind mount failed 'volume1/docker/import' does not exist)

I created the /volume1/docker/import directory myself and relaunched docker-compose up -d
this seemed to work, however, I cannot reach the service on port 4000. When looking at the logs I noticed:

"10:01:40.280 [error] Postgrex.Protocol (#PID<0.207.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification) no pg_hba.conf entry for host "<IP_ADDRESS>", user "teslamate", database "teslamate" | stdout
-- | --"
I have no idea where the <IP_ADDRESS> comes from, in my yml file I only specify the IP of the synology: <IP_ADDRESS>...
any ideas what to try next ?

I didn't need to modify the yml file for simple installation on Synology. Just copy the file as you see it here, move it to /volume1/docker and also create import folder. That works for me.

I retried with original yml file, the testlamate container keeps restarting.
I also checked the postgress container log and it also shows errors (cf below). I've also installed the photo station and video station applications on the Synology, could it be that there is already a existing postgress db which prevents the teslamate from being created ?

I had the same issue, and finally was able to resolve it and restore the backup from the pi (where I was running) to back on the synology NAS - I still have both going but that is another topic.
Here is what I did that helped solve this. I also saw there was an issue with me not running MQTT (I don't really use it) - but as I was having issues, I went back to defaults.
Using the Docker package UI deleted everything as it related to Teslamate and their dependencies. And this means containers, image, network, etc. I then ssh'd into the NAS and also cleaned up using the docker prune command; see more here if that helps for that.
I then uninstalled the docker package, and reinstalled it. I didn't have any other containers running, so could do that - not sure if you have that luxury, And finally before getting to Teslamate, I ran a simple web server to make sure everything is OK.
I ran the Alpine image just to make sure docker and all its dependencies were OK. You can see the steps I had blogged for this sometime back (even though thats for a pi, it is essentially the same thing). And if it helps, here is the docker-compose for the alpine test. Feel free to change ports to whatever works in your setup.
version: '3'
services:
  webapp:
    ports:
      - 6666:8000
    image: python:3.7-alpine
    command: "python -m http.server 8000"

And finally I then got teslmate deployed. I went with v11 for postgres, and then restored the backup from the pi, upgraded to v12 and then tried it again and all is OK.
Here are a few screenshots of that now. Hope this helps, and ping and can try and see if I can help.

It's not @docker, just docker. The path is /volume1/docker/.

Depending how your NAS if configured, it can be either of :
 /volume1/docker/
 /volume1/@docker aka  "cd /volume1/\@docker"

If I recall properly, there was a question in Docker install.  Depending on the answer, one of the option "creates separate volume or shared drive?" ...I might be wrong as well :) , it's been too long and it's very late here.  Someone can do Google "Synology Docker installation" ... I'll try to update my comment later this week.
On my NAS docker is configured under /volume1/@docker :
# ls /volume1/docker
@eaDir
# ls /volume1/\@docker
acme        containers               docker-compose.yml.working  linkgraph.db       swarm
aufs        docker-compose.yml       Dockerfile.compose          network            teslamate.conf-apache
builder     docker-compose.yml.bad   graph                       plugins            tmp
buildkit    docker-compose.yml.old   image                       repositories-aufs  trust
containerd  docker-compose.yml.orig  init                        runtimes           volumes

Maybe it's possible to create the docker-compose.yml file in /volume1/docker and run docker-compose from there but my understanding is that it wouldn't work.

On my Synology with DSM 6.2.2-24922 Update 6 its working fine.
The docker-compose.yml is located at:
<EMAIL_ADDRESS>Simple Installation Guide for docker on Synologys from here: https://github.com/adriankumpf/teslamate/issues/113

Hello,
I've tried following Simple Installation Guide for docker on Synologys from here: #113
Had the bind error because of missing import folder.
I did a mkdir import in /volume1/@docker
and ran docker-compose up -d again which gave no error message.
However, like pverhoev, I cannot reach the service on port 4000.
I followed bahree's instructions, but no success either...
Has anyone managed to solve this issue ?
Cheers
Benn

Hi @Benn
I just have the same issue.
I did mkdir import in /volume1/@docker
and ran docker-compose up -d again which gave no error message.
And I cannot reach the service on port 4000 too...
I then go to Docker panel on my Synology.
Select "Conteneur".
I then first stop docker_teslamate_1, wait 1mn, and restart it.
And I secondly stop docker_database_1, wait 1mn and restart it.
All is working now.

Hi @hbr-c ,
Unfortunately, no luck here.... same result.


chore: update readme

Signed-off-by: Bo-Yi Wu<EMAIL_ADDRESS>

Codecov Report

Merging #249 (a794eb4) into development (7866d2c) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           development     #249   +/-   ##
============================================
  Coverage        45.36%   45.36%
============================================
  Files               29       29
  Lines             1609     1609
============================================
  Hits               730      730
  Misses             778      778
  Partials           101      101

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7866d2c...a794eb4. Read the comment docs.

加 sh 我很認同，不過你讓 open api 的排版跑掉了

@y2468101216 Done

LGTM


cargo install not working on MacOS

Running cargo install tukai results in a compiler error on my machine (see the error below).
Cloning the repo and running via cargo run however works fine.
Thought I'd let you know, its a cool tool, if needed I am available to run things on my machine to reproduce the issue/verify a fix.
error[E0599]: no function or associated item named `is_capslock_on` found for struct `PlatformApi` in the current scope
   --> /Users/karlenkelmann/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tukai-0.1.3/src/windows/typing_window.rs:378:21
    |
378 |     if PlatformApi::is_capslock_on() {
    |                     ^^^^^^^^^^^^^^ function or associated item not found in `PlatformApi`
    |
   ::: /Users/karlenkelmann/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tukai-0.1.3/src/event_handler.rs:63:1
    |
63  | pub struct PlatformApi;
    | ---------------------- function or associated item `is_capslock_on` not found for this struct

My system:
Darwin MacBookAir 24.1.0 Darwin Kernel Version 24.1.0: Thu Oct 10 21:05:14 PDT 2024; root:xnu-11215.41.3~2/RELEASE_ARM64_T8103 arm64
rustc 1.82.0 (f6e511eec 2024-10-15)
cargo 1.82.0 (8f40fc59f 2024-08-21)

Hello, thank you for your report! I really appreciate it. :)
You can try it now—I’ve published v0.1.4. X11 has been completely removed because it hasn’t been well-tested.

It works now, thanks :)


More of a question than an issue

Do we require any mods in order to use this patcher?

Its meant for either Weapon Effects Speed Fix or Attack Speed Framework Plus


patch error

package github.com/go-redis/redis/v7/internal: cannot find package "github.com/go-redis/redis/v7/internal" in any of:
	/usr/lib/go-1.7/src/github.com/go-redis/redis/v7/internal (from $GOROOT)
	/home/user/go/src/github.com/go-redis/redis/v7/internal (from $GOPATH)
package github.com/go-redis/redis/v7/internal/consistenthash: cannot find package "github.com/go-redis/redis/v7/internal/consistenthash" in any of:
	/usr/lib/go-1.7/src/github.com/go-redis/redis/v7/internal/consistenthash (from $GOROOT)
	/home/user/go/src/github.com/go-redis/redis/v7/internal/consistenthash (from $GOPATH)
package github.com/go-redis/redis/v7/internal/hashtag: cannot find package "github.com/go-redis/redis/v7/internal/hashtag" in any of:
	/usr/lib/go-1.7/src/github.com/go-redis/redis/v7/internal/hashtag (from $GOROOT)
	/home/user/go/src/github.com/go-redis/redis/v7/internal/hashtag (from $GOPATH)
package github.com/go-redis/redis/v7/internal/pool: cannot find package "github.com/go-redis/redis/v7/internal/pool" in any of:
	/usr/lib/go-1.7/src/github.com/go-redis/redis/v7/internal/pool (from $GOROOT)
	/home/user/go/src/github.com/go-redis/redis/v7/internal/pool (from $GOPATH)
package github.com/go-redis/redis/v7/internal/proto: cannot find package "github.com/go-redis/redis/v7/internal/proto" in any of:
	/usr/lib/go-1.7/src/github.com/go-redis/redis/v7/internal/proto (from $GOROOT)
	/home/user/go/src/github.com/go-redis/redis/v7/internal/proto (from $GOPATH)
package github.com/go-redis/redis/v7/internal/util: cannot find package "github.com/go-redis/redis/v7/internal/util" in any of:
	/usr/lib/go-1.7/src/github.com/go-redis/redis/v7/internal/util (from $GOROOT)
	/home/user/go/src/github.com/go-redis/redis/v7/internal/util (from $GOPATH)

Why "v7"? This 404 error.

You need to use https://github.com/golang/go/wiki/Modules
go mod init github.com/my/repo
go get github.com/go-redis/redis/v7


Call to a member function delete() on null in NestableTrait

When I try deleting a record, it is throwing me this error
FatalErrorException in NestableTrait.php line 277:
Call to a member function delete() on null

My Model File
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Nestable\NestableTrait;

class Menu extends Model
{
use NestableTrait;

protected $parent = 'parent_id';

protected $fillable = ['parent_id', 'menu_id', 'name', 'slug', 'status'];
}

Hi @Sarav-S
It worked well in my test as follows.
Category::where('id', 1)->delete();

$category = new Category;

$category->newInstance()->where('id', 2)->delete();

Is there any example code?

Hi @atayahmet
Category::where('id', 1)->delete();// this works.

But I have trying to delete by following code
$category = Category::find($id);
// Perform some logic and then
$category->delete()

Hi @Sarav-S
i fixed it. Please update package.

@atayahmet Great! Will package now. 👍


feat: add proxy setting

Fixes #1199

[ ] Added an entry to CHANGELOG.md if this change could be valuable to users

Any updates on this?

No

I'd love to contribute & help, but I'm not well versed in Rust yet (still learning!), will see if there's smaller items I can contribute. Love the project!

No help needed in this PR


Use Foreign Keys on database

Would prevent removing data that is associated with other sub-items without breaking things.
Panel is smart enough to handle that in most cases, but wouldn't hurt to have an additional SQL level of protection.

Implemented.


Http Request Multiplexing

Multiplexing is currently blocked by a weird performance issue (about 5x performance decrease in tests) when reading the second response on the same connection.

[x] Better error handling of lines reader
[x] Implement tests for http parsing
[x] Fully implement multiplexing

could give a shot makin the line reader

Marking this as complete as of v0.2.0

well ye were fasteeree


AddSubMenu in context menus not disabling correctly

The documentation (link below) for the AddSubMenu method states that "... can contain ... and submenus " so the structure for
AddSubMenu ("level1","level1");
.AddMenuItem ("item1","item1");
.AddSubMenu ("level1_1","level1_1");
.AddMenuItem("item1_1","item1_1");
should be valid, however, when used in the following scenario:

item1 is not enabled
item1_1 is not enabled and item1_1 is not enabled

I'm still seeing level1 and level1_1 as context menu options. I've been looking at the issue Pankaj has reported and I wonder if the logic could be at fault here.
I see in the API that .AddSubMenu is added with a Type of 'submenu' but I wonder if we're excluding this from any count we're doing to determine if relative parent submenu should be visible?

JIRA ticket A4T-38


Return Non-Null Values for send failures

Right now the send method transmits a Null value for its failure cases.
This makes it incredibly hard to debug things externally, e.g. in hermit-shell.
We should change these Null values to be error objects, as specified by the standard:
http://www.jsonrpc.org/specification#error_object
I'm happy to spearhead this effort, but it may take me a day or two to get up to speed on the remote-json code base.

If you do so, talk to Justin, who is looking after the remote-json repo.

Yes, my intention is to get @jtdawso involved once I figure out exactly why Nulls are being returned in the first place, as the existing send method looks fairly robust as is.

I'm closing this with a won't fix.  remote-json handles properly constructed objects correctly which is realy all it should need to do.


Split ll6.stl and rl6.stl into 2 pieces

I'm trying to add a force sensor plugin on the joint in between foot plate and ankle roll link. However, these two parts are glued together.
Can you split the part into 2 pieces? This will be very helpful to configure measurement range of force sensors before buying real sensors for a real robot.

op3_foot_mass_property.zip
I think it can help you.
If you have extra supports, ask me again.
ps. You can find the hardware material(stp file) in ROBOTIS-OP-Series-Data

Thanks! I'm trying to implement it now.

I created the branch to run the gazebo simulation with ft sensors of its foot.
https://github.com/yoshimalucky/ROBOTIS-OP3-Common/tree/gazebo-ft-sensor


Typos in code & doc for word probability

There seem to be a typo in the function math/check-propability which should be math/check-probability and the documentation of the function math/binominal-distribution which should also be probability instead of propability.

I think you're prop^Hbably right about those things: https://github.com/janet-lang/spork/blob/465d489389cb093cc474379772fa52691819c6c2/spork/math.janet#L363-L369

Oh. That would be me :-)

Does a PR seem welcome for this?
Change of name in a function does present an issue of compatibility but may be it hasn't been too long since this got added?

If you have spare moments, please do. No one except me used it :-D, so the change would not be such an issue.

I suppose there is a high chance that if there was a user of this function they would have noticed the typo. I was just going through the docs because I was bored.

I hope the reading was entertaining :)
Would you like to do a PR?
If not, I can work on one.


you could depend on batteries (or else)

and have a lot less code to keep maintaining,
and probably use faster functions ...
For example: prefix_match

batteries is yet another kitchen sink. It's better to have a bit of duplication than to depend on libraries like these. Same reasoning goes for core.

A kitchen sink library is a library that does almost everything.

 But hey, it's your project, you do as you please.
If you use batteries (I'm one of the maintainers), there is a good documentation and there are unit tests covering a lot of the code base.

Rewriting things that already exist is just one of the forces in play.
Another force is someone considering the use of the library. That person might be using core as his/her preferred eco-system, and then does not want to be forced to add batteries as a dependency (or vice versa).
Obviously, the ideal situation is to get something like prefix_match into the std lib, but that's never going to happen. I guess the policies for the std lib are why core and batteries sprouted into existence in the first place.

the stdlib is also full of non tail rec functions, core and batteries are mostly free from any such function