zigpy / zha-device-handlers

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

[Device Support Request] Neuhaus Lightning Remote #1514

Closed Tropaion closed 2 years ago

Tropaion commented 2 years ago

I don't know if there are already supported devices from this company, but this is the one I have: https://www.reuter.com/de-at/paul-neuhaus-q-remote-fuer-q-leuchten-b-38-h-151-t-15-cm-schwarz-a737280.php

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=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, 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": "0x0810",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x1000"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0300",
        "0x1000"
      ]
    }
  },
  "manufacturer": "Neuhaus Lighting Group",
  "model": "NLG-remote",
  "class": "zigpy.device.Device"
}

Pairing works without problems, but no entity shows up. I think it's weird, because as far as I understand, the device uses standard clusters. @MattWestb another exotic device from me like you wanted 😄

MattWestb commented 2 years ago

The link is not working but i was finding some picture of it :-))) Its one 100% light controller remote (more exact COLOR_SCENE_CONTROLLER = 0x0810). You shall only getting battery sensor then its only sending commands to its light group. Do you having one manual or instruction for the function its having ???

Tropaion commented 2 years ago

@MattWestb Weird, when I open the link it's working. I don't even have the battery sensor, RSSI and LQI isn't working either: image I found a PDF of the manual online, there are the functions, its in German and English: https://www.paul-neuhaus.de/paulneuhaus/download/product/sku/E0040044/file/074038-IM-E0040044-01.pdf/

MattWestb commented 2 years ago

I have founding it its CSA (X-Zigbee alliance) certificated as one ZB3 controller https://csa-iot.org/csa_product/radio-remote-control-rgbcct-e0040044/.

Now to the bad things that you dont like hearing !!

Paul Neuhaus have building Zigbee Light Link networks that is using touch link for commissioning. This is also one part of Zigbee 3 (IKEAs GW is ZLL and the upcoming is Zigbee 3 and can doing touch link and normal commission of devices).

Zigbee light can being added with classical joining to one trust center (TC) that is doing the administration / gate keeper (that we is using in ZHA and other open system) or distributed security then one controller is used for "giving" addresses and groups to routers and other controllers with touch link. IKEA can one controller paring with one or more lights (max 10) and all is in the same "private" network and have the same group and is living there own life.

Edit: You have joining it with ZHA in normal mode then you have getting the device description from it. The question is is its sending light commands to one or more groups that you can getting as events in HA ?? You can also trying doing one reconfigure from the device card and waking the device up so its can reviving the commands and looking if its binding the OnOff and Light Level cluster to the coordinator. If having one IKEA (or Philips HUE) GW is one more advanced controller that is called Zigbee Control Bridge and is giving addresses and and groups to controllers and that is all in the same network but the controllers must being joined with touch link. ZLL routers can being added without touch link then there is not forming the network its only joining / getting addresses and groups from the controller. IKEA, Philips and OSRAM device can also joining networks with classical commissioning (with trust center) and being used in our networks.

If you is not finding one way ´getting the device joining with classical joining you cant using it in ZHA or other open system only with one ZLL compatible GW or stand alone and controlling devices directly.

How did you paring it with ZHA ?? I cant fining that in the instruction only touch link joining is in the instruction.

Zigbee router devices shall also being able joining trust center network and i think its the same with controllers but om not 110% sure if is moderate and how its can being configured in one TC network is up to the manufacture.

Tropaion commented 2 years ago

@MattWestb How do I know ZLL is supported by my GW? But doesn't the device expose cluster other than TouchLink Cluster? I don't know much about this topic, sorry. The pairing is on page 36: image

Tropaion commented 2 years ago

On-Button gives this event:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0006",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "on",
        "args": [],
        "params": {}
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:27:10.809206+00:00",
    "context": {
        "id": "146ae05054523a7367d58ce65836749f",
        "parent_id": null,
        "user_id": null
    }
}

Off-Button:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0006",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "off",
        "args": [],
        "params": {}
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:27:50.025850+00:00",
    "context": {
        "id": "c1bafbf0f9fb4c617eb833691ec156b8",
        "parent_id": null,
        "user_id": null
    }
}

Brightness up:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0008",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "step",
        "args": [
            0,
            25,
            1
        ],
        "params": {
            "step_mode": 0,
            "step_size": 25,
            "transition_time": 1,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:28:16.936525+00:00",
    "context": {
        "id": "f52fb4498b8765bf2d050bee64de9ba6",
        "parent_id": null,
        "user_id": null
    }
}

Brightness down:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0008",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "step",
        "args": [
            1,
            25,
            1
        ],
        "params": {
            "step_mode": 1,
            "step_size": 25,
            "transition_time": 1,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:28:44.568345+00:00",
    "context": {
        "id": "64269d16fd7a951186b3fca807a0ccab",
        "parent_id": null,
        "user_id": null
    }
}

Basically every commend except for the channel buttons throw a ZHA event BUT there are some commands I don't understand. Left bottom button:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            1
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 1,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:06.837235+00:00",
    "context": {
        "id": "2291f3f16cac41e67854f7f21013304c",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 0 ausgelöst 20:31:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            1
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 1,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:06.742424+00:00",
    "context": {
        "id": "08ae58629619bf1e7f2387fa2d8cc21c",
        "parent_id": null,
        "user_id": null
    }
}

Right bottom button:

    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            2
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 2,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:37.646234+00:00",
    "context": {
        "id": "8930dd6b68581d188f7684445c1116b8",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 2 ausgelöst 20:31:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0005",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 5,
        "command": "recall",
        "args": [
            6512,
            2
        ],
        "params": {
            "group_id": 6512,
            "scene_id": 2,
            "transition_time": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:31:37.638526+00:00",
    "context": {
        "id": "1cdeadfae1a373119324fe028c68ce26",
        "parent_id": null,
        "user_id": null
    }
}
Tropaion commented 2 years ago

P-Button:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "enhanced_move_to_hue_and_saturation",
        "args": [
            21851,
            254,
            0
        ],
        "params": {
            "enhanced_hue": 21851,
            "saturation": 254,
            "transition_time": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:32:45.920670+00:00",
    "context": {
        "id": "2f57307aff932d23bc98541c35265221",
        "parent_id": null,
        "user_id": null
    }
}

"W"-Button:

Ereignis 3 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "move_to_color_temp",
        "args": [
            368,
            2
        ],
        "params": {
            "color_temp_mireds": 368,
            "transition_time": 2,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.402991+00:00",
    "context": {
        "id": "39ad69bc899b6306cd98525e974aff7e",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 2 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "move_to_color_temp",
        "args": [
            368,
            2
        ],
        "params": {
            "color_temp_mireds": 368,
            "transition_time": 2,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.395324+00:00",
    "context": {
        "id": "d2a56fc43c0f144b87dc785d60ebac9e",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 1 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.372046+00:00",
    "context": {
        "id": "72892b2ebd4101ded6d521cd44adb474",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 0 ausgelöst 20:33:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:33:57.362969+00:00",
    "context": {
        "id": "d243d93a97f278875b3ad500475ba128",
        "parent_id": null,
        "user_id": null
    }
}
Tropaion commented 2 years ago

Color-Picker:

Ereignis 3 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "enhanced_move_to_hue_and_saturation",
        "args": [
            40448,
            254,
            5
        ],
        "params": {
            "enhanced_hue": 40448,
            "saturation": 254,
            "transition_time": 5,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.798853+00:00",
    "context": {
        "id": "622e0e0c7362caad3ad2e405b5aa8797",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 2 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "enhanced_move_to_hue_and_saturation",
        "args": [
            40448,
            254,
            5
        ],
        "params": {
            "enhanced_hue": 40448,
            "saturation": 254,
            "transition_time": 5,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.790179+00:00",
    "context": {
        "id": "08f809dca2a73b8f2a0e0bfe1c4471f7",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 1 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.628907+00:00",
    "context": {
        "id": "b5e3bcfd9885050b58d5e9e4d982d0a4",
        "parent_id": null,
        "user_id": null
    }
}
Ereignis 0 ausgelöst 20:35:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:15:8d:00:04:76:ec:4a",
        "unique_id": "00:15:8d:00:04:76:ec:4a:1:0x0300",
        "device_id": "010c1c7644144195a1e1177eec0a1fff",
        "endpoint_id": 1,
        "cluster_id": 768,
        "command": "color_loop_set",
        "args": [
            1,
            0,
            0,
            0,
            0
        ],
        "params": {
            "update_flags": 1,
            "action": 0,
            "direction": 0,
            "time": 0,
            "start_hue": 0,
            "options_mask": null,
            "options_override": null
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-04-20T18:35:20.617606+00:00",
    "context": {
        "id": "224f0e301c20e61d628f3665b9e6fb66",
        "parent_id": null,
        "user_id": null
    }
}
MattWestb commented 2 years ago

Touch link commissioning is being made with very low power and need having the controller around some cm from the target. All in the manual is touch link commissioning.

Early Zigbee (pre Zigbee 3) was ZLL for light and Zigbee HA for other home automation. Zogbee 3 is having both profiles from ZLL and Zigbee HA.

As i can see the controller is working OK as one Zogbee 3 controller then its sending "normal" light commands. Also the color cnd color temperature looks very OK.

The interesting thing is the groups:

        "params": {
            "group_id": 6512,
            "scene_id": 2,
            "transition_time": null
        }

I think its allocating 3 groups and i think you can changing with groups the commands is being sent with the button.

Is the remote using the same groups then being resettled or is it reusing or using the same groups every times or making new random ones ? (Old IKEA ZLL controllers is using random groups that ZHA is reading then paring the device and you can see them in the log).

I think the battery not being reported is one config problem or firmware is making it wrong.

One very interesting device but not for my Geldbörse ;-)

MattWestb commented 2 years ago

Ops !! look if ZHA have reading and adding the new groups in ZHA groups and if yes adding light to them and testing.

Tropaion commented 2 years ago

One very interesting device but not for my Geldbörse ;-)

I wouldn't buy them new either, but you can get them really cheap: https://www.willhaben.at/iad/kaufen-und-verkaufen/d/zigbee-funk-fernbedienung-558110293 I got it for 13€.

look if ZHA have reading and adding the new groups in ZHA groups and if yes adding light to them and testing.

Group didn't get added to ZHA.

Is the remote using the same groups then being resettled or is it reusing or using the same groups every times or making new random ones ?

This group command is weird, it only gets send when I press to bottom left and right botton, but I don't know the use for them. And I tried changing group but always sends the same value as above.

MattWestb commented 2 years ago

25€ is not expensive this days !! Then you is getting one group number try making one ZHA group with the same number and adding some lights in it (more then one then ZHA is adding the coordinator in it on the next start).

The remote is very likely working in one other way being added to one trust center network so the instruction can being wrong for the group part. The good thing is its sending real light commands and not tuya DPs or Xiaomi attributes !!

How did you getting it in paring mode for adding it in ZHA ? ? ? ?

If you cant see the the groups in ZHA then sniffing then wireshark is showing it if its broadcast commands or unicast to the coordinator (0x0000) then sending on/off and dim up and down.

MattWestb commented 2 years ago

You can also trying binding the remote to one Zigbee group from device cluster panel and testing also trying binding it to the coordinator and see is you is getting battery and LQI (its little strange you is getting commands received but no LQI).

Tropaion commented 2 years ago

How did you getting it in paring mode for adding it in ZHA ? ? ? ?

I just did what his page said: https://github.com/zigpy/zha-device-handlers/issues/1514#issuecomment-1104283179

If you cant see the the groups in ZHA then sniffing then wireshark is showing it if its broadcast commands or unicast to the coordinator (0x0000) then sending on/off and dim up and down.

I will try that the next few days, currently I'm pretty busy with exams. @MattWestb But since we can detect zha events, shouldn't it be possible to expose them?

github-actions[bot] commented 2 years ago

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

SimonIT commented 1 year ago

I just bought the remote E0040006 from eBay: image It is also reported as NLG-remote.

Device signature ```json { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=0, maximum_outgoing_transfer_size=100, descriptor_capability_field=, *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": 49246, "device_type": "0x0810", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000" ], "out_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000" ] }, "2": { "profile_id": 49246, "device_type": "0x03f2", "in_clusters": [ "0x1000" ], "out_clusters": [ "0x1000" ] } }, "manufacturer": "Neuhaus Lighting Group ", "model": "NLG-remote ", "class": "zigpy.device.Device" } ```
Diagnostic information ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2023.1.7", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.7", "docker": true, "arch": "armv7l", "timezone": "Europe/Berlin", "os_name": "Linux", "os_version": "5.15.76-v7", "supervisor": "2023.01.1", "host_os": "Home Assistant OS 9.4", "docker_version": "20.10.19", "chassis": "embedded", "run_as_root": true }, "custom_components": { "hacs": { "version": "1.29.1", "requirements": [ "aiogithubapi>=22.10.1" ] }, "zha_toolkit": { "version": "v0.8.29", "requirements": [ "packaging>=20.8", "pytz" ] }, "bosch": { "version": "0.20.2", "requirements": [ "bosch-thermostat-client==0.20.0" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/zha", "requirements": [ "bellows==0.34.6", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.90", "zigpy-deconz==0.19.2", "zigpy==0.53.0", "zigpy-xbee==0.16.2", "zigpy-zigate==0.10.3", "zigpy-znp==0.9.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*" }, { "type": "_zigstar_gw._tcp.local.", "name": "*zigstar*" }, { "type": "_slzb-06._tcp.local.", "name": "slzb-06*" } ], "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": 46070, "manufacturer": "Neuhaus Lighting Group ", "model": "NLG-remote ", "name": "Neuhaus Lighting Group NLG-remote ", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": 255, "rssi": -55, "last_seen": "2023-01-26T23:40:06", "available": true, "device_type": "EndDevice", "signature": { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=0, maximum_outgoing_transfer_size=100, descriptor_capability_field=, *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": 49246, "device_type": "0x0810", "in_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000" ], "out_clusters": [ "0x0000", "0x0003", "0x0004", "0x0005", "0x0006", "0x0008", "0x0300", "0x1000" ] }, "2": { "profile_id": 49246, "device_type": "0x03f2", "in_clusters": [ "0x1000" ], "out_clusters": [ "0x1000" ] } } }, "active_coordinator": false, "entities": [ { "entity_id": "button.neuhaus_lighting_group_nlg_remote_identify", "name": "Neuhaus Lighting Group NLG-remote " }, { "entity_id": "switch.neuhaus_lighting_group_nlg_remote_switch", "name": "Neuhaus Lighting Group NLG-remote " } ], "neighbors": [], "routes": [], "endpoint_names": [ { "name": "COLOR_SCENE_CONTROLLER" }, { "name": "undefined_0x03f2" } ], "user_given_name": null, "device_reg_id": "04032e91106b36d34ed28e30d308e309", "area_id": null, "cluster_details": { "1": { "device_type": { "name": "COLOR_SCENE_CONTROLLER", "id": 2064 }, "profile_id": 49246, "in_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": { "0x0004": { "attribute_name": "manufacturer", "value": "Neuhaus Lighting Group " }, "0x0005": { "attribute_name": "model", "value": "NLG-remote " } }, "unsupported_attributes": {} }, "0x0004": { "endpoint_attribute": "groups", "attributes": {}, "unsupported_attributes": {} }, "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x0006": { "endpoint_attribute": "on_off", "attributes": { "0x0000": { "attribute_name": "on_off", "value": 1 } }, "unsupported_attributes": {} }, "0x0008": { "endpoint_attribute": "level", "attributes": {}, "unsupported_attributes": {} }, "0x0005": { "endpoint_attribute": "scenes", "attributes": {}, "unsupported_attributes": {} }, "0x0300": { "endpoint_attribute": "light_color", "attributes": {}, "unsupported_attributes": {} }, "0x1000": { "endpoint_attribute": "lightlink", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x0000": { "endpoint_attribute": "basic", "attributes": {}, "unsupported_attributes": {} }, "0x0004": { "endpoint_attribute": "groups", "attributes": {}, "unsupported_attributes": {} }, "0x0003": { "endpoint_attribute": "identify", "attributes": {}, "unsupported_attributes": {} }, "0x0006": { "endpoint_attribute": "on_off", "attributes": {}, "unsupported_attributes": {} }, "0x0008": { "endpoint_attribute": "level", "attributes": {}, "unsupported_attributes": {} }, "0x0005": { "endpoint_attribute": "scenes", "attributes": {}, "unsupported_attributes": {} }, "0x0300": { "endpoint_attribute": "light_color", "attributes": {}, "unsupported_attributes": {} }, "0x1000": { "endpoint_attribute": "lightlink", "attributes": {}, "unsupported_attributes": {} } } }, "2": { "device_type": { "name": "undefined_0x03f2", "id": 1010 }, "profile_id": 49246, "in_clusters": { "0x1000": { "endpoint_attribute": "lightlink", "attributes": {}, "unsupported_attributes": {} } }, "out_clusters": { "0x1000": { "endpoint_attribute": "lightlink", "attributes": {}, "unsupported_attributes": {} } } } } } } ```
ZHA Toolkit scan device information ```json { "ieee": "00:15:8d:00:02:43:8f:01", "nwk": "0xb3f6", "model": "NLG-remote ", "manufacturer": "Neuhaus Lighting Group ", "manufacturer_id": "0x4151", "endpoints": [ { "id": 1, "device_type": "0x0810", "profile": "0xc05e", "in_clusters": { "0x0000": { "cluster_id": "0x0000", "title": "Basic", "name": "basic", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0003": { "cluster_id": "0x0003", "title": "Identify", "name": "identify", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0004": { "cluster_id": "0x0004", "title": "Groups", "name": "groups", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0005": { "cluster_id": "0x0005", "title": "Scenes", "name": "scenes", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0006": { "cluster_id": "0x0006", "title": "On/Off", "name": "on_off", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0008": { "cluster_id": "0x0008", "title": "Level control", "name": "level", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0300": { "cluster_id": "0x0300", "title": "Color Control", "name": "light_color", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x1000": { "cluster_id": "0x1000", "title": "LightLink", "name": "lightlink", "attributes": {}, "commands_received": {}, "commands_generated": {} } }, "out_clusters": { "0x0000": { "cluster_id": "0x0000", "title": "Basic", "name": "basic", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0003": { "cluster_id": "0x0003", "title": "Identify", "name": "identify", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0004": { "cluster_id": "0x0004", "title": "Groups", "name": "groups", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0005": { "cluster_id": "0x0005", "title": "Scenes", "name": "scenes", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0006": { "cluster_id": "0x0006", "title": "On/Off", "name": "on_off", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0008": { "cluster_id": "0x0008", "title": "Level control", "name": "level", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x0300": { "cluster_id": "0x0300", "title": "Color Control", "name": "light_color", "attributes": {}, "commands_received": {}, "commands_generated": {} }, "0x1000": { "cluster_id": "0x1000", "title": "LightLink", "name": "lightlink", "attributes": {}, "commands_received": {}, "commands_generated": {} } } }, { "id": 2, "device_type": "0x03f2", "profile": "0xc05e", "in_clusters": { "0x1000": { "cluster_id": "0x1000", "title": "LightLink", "name": "lightlink", "attributes": {}, "commands_received": {}, "commands_generated": {} } }, "out_clusters": { "0x1000": { "cluster_id": "0x1000", "title": "LightLink", "name": "lightlink", "attributes": {}, "commands_received": {}, "commands_generated": {} } } } ] } ```

I will try to get everything work. By doing some research I found some information in the zigbee-herdsman-converters repo: https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices/paul_neuhaus.js It might be helpful