Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Device Support Request] ubisys devices device setup cluster #3942

Open
FlorianBruckner opened this issue Mar 9, 2025 · 1 comment
Open
Labels
device support request This requests support for a new device

Comments

@FlorianBruckner
Copy link

Problem description

While ubisys devices work fine ootb, they support a cluster 0xfc00 for device setup (e.g. https://www.ubisys.de/downloads/ubisys-s1-technical-reference.pdf page 24). This cluster appears to be available on many ubisys devices (the documentation at https://www.ubisys.de/downloads/ubisys-input-configuration-integrators-guide.pdf mentions C4, D1(-R), S1(-R), S2(-R), J1(-R) and LD6).

The attributes of this cluster are currently not available in the device UI in ZHA

Solution description

A device handler that declares the device setup cluster for ubisys devices so I can easily configure the devices.

I am more than happy to contribute, but need some guidance.

As this device setup funcationality is available on many ubisys devices, I was looking for a way to provide this handler not just for one specific device but for many (potentially all ubisys devices). As far as I understand the documentation, though, a device handler needs to be created for every single device. Is there a way to declare a device handler for a number of devices, adding only the cluster declaration that we need to see this?

Screenshots/Video

No response

Device signature

Device signature ubisys S1
{
  "node_descriptor": {
    "logical_type": 1,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 142,
    "manufacturer_code": 4338,
    "maximum_buffer_size": 127,
    "maximum_incoming_transfer_size": 127,
    "server_mask": 10752,
    "maximum_outgoing_transfer_size": 127,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x010a",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006"
      ],
      "output_clusters": []
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0x0001",
      "input_clusters": [
        "0x0000",
        "0x0003"
      ],
      "output_clusters": [
        "0x0005",
        "0x0006",
        "0x0008"
      ]
    },
    "3": {
      "profile_id": "0x0104",
      "device_type": "0x0501",
      "input_clusters": [
        "0x0000",
        "0x0702",
        "0x0b04"
      ],
      "output_clusters": []
    },
    "200": {
      "profile_id": "0xc003",
      "device_type": "0x0000",
      "input_clusters": [],
      "output_clusters": []
    },
    "232": {
      "profile_id": "0x0104",
      "device_type": "0x0507",
      "input_clusters": [
        "0x0000",
        "0x0015",
        "0xfc00"
      ],
      "output_clusters": [
        "0x0003",
        "0x0019"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0066",
      "input_clusters": [
        "0x0021"
      ],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "ubisys",
  "model": "S1 (5501)",
  "class": "zigpy.device.Device"
}
Device signature ubisys S2
{
  "node_descriptor": {
    "logical_type": 1,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 142,
    "manufacturer_code": 4338,
    "maximum_buffer_size": 127,
    "maximum_incoming_transfer_size": 82,
    "server_mask": 11264,
    "maximum_outgoing_transfer_size": 82,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x010a",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006"
      ],
      "output_clusters": []
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0x010a",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006"
      ],
      "output_clusters": []
    },
    "3": {
      "profile_id": "0x0104",
      "device_type": "0x0001",
      "input_clusters": [
        "0x0000",
        "0x0003"
      ],
      "output_clusters": [
        "0x0005",
        "0x0006",
        "0x0008"
      ]
    },
    "4": {
      "profile_id": "0x0104",
      "device_type": "0x0001",
      "input_clusters": [
        "0x0000",
        "0x0003"
      ],
      "output_clusters": [
        "0x0005",
        "0x0006",
        "0x0008"
      ]
    },
    "5": {
      "profile_id": "0x0104",
      "device_type": "0x0501",
      "input_clusters": [
        "0x0000",
        "0x0702",
        "0x0b04"
      ],
      "output_clusters": []
    },
    "200": {
      "profile_id": "0xc003",
      "device_type": "0x0000",
      "input_clusters": [],
      "output_clusters": []
    },
    "232": {
      "profile_id": "0x0104",
      "device_type": "0x0507",
      "input_clusters": [
        "0x0000",
        "0x0015",
        "0xfc00"
      ],
      "output_clusters": [
        "0x0003",
        "0x0019"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0066",
      "input_clusters": [
        "0x0021"
      ],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "ubisys",
  "model": "S2 (5502)",
  "class": "zigpy.device.Device"
}

Diagnostic information

Diagnostic information
[Paste the diagnostic information here]

Logs

Logs
[Paste the logs here]

Custom quirk

Custom quirk
[Paste your custom quirk here]

Additional information

No response

@FlorianBruckner FlorianBruckner added the device support request This requests support for a new device label Mar 9, 2025
@FlorianBruckner
Copy link
Author

To answer my own question - QuirkBuilder appears to be what I was looking for. It would still be per device as far as I understand, but it does not have to redeclare the full signature of the device so it can be built generically for many devices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
device support request This requests support for a new device
Projects
None yet
Development

No branches or pull requests

1 participant