OK, so I figured out what was happening. The device was not sending the OnOff State reports whenever the CurrentLevel attribute changed between 0 and Non-0 values. So now everything is working as expected.
I did further testing and these are my findings.
Device configured with following: (all startup values/States are 0 or Off)
EP1: Basic
EP2: OnOff Cluster
EP3: Level Control Cluster
EP4: OnOff and Level Control Cluster
Test#1 - Initiate actions from OH UI:
EP2: On, Off - Works.
EP3: Move To Level - Fails
EP4: Move To Level - Works.
Result: All EPs work fine from OH UI, except for EP3 because OH requires that an OnOff cluster exist in the same EP for the Level Control to work. This is the same behavior I reported back in OH2.5. I still believe goes against what the Zigbee Spec because nowhere does it say that LevelControl cluster requires an OnOff cluster on the same EP or that it is mandatory. If that continues to be the case, then OH will never send or use LevelControl Commands 0x00 to 0x03.
Behavior Note: OH reacts to EP4 responses in a strange way:
OH → Sends MoveToLevelWithOnOffCommand to value X > 0 or Sends OnCommand
OH → Gets Default Response OK
OH → Gets Report OnOff State = ON
OH → Sets Level Control to X
OH → Sets OnOff State to ON
OH → Sets Level Control back to 0
OH → Sets OnOff State back to OFF
OH → Gets Report LevelControl Value = X
OH → Sets Level Control back to X
OH → Sets OnOff State back to ON
Log:
2022-06-10 08:23:43.269 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - TX CMD: OnCommand [On/Off: 0000/0 -> C934/4, cluster=0006, TID=AC]
2022-06-10 08:23:43.496 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: DefaultResponse [On/Off: C934/4 -> 0000/1, cluster=0006, TID=AC, commandIdentifier=1, statusCode=SUCCESS]
2022-06-10 08:23:43.547 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [On/Off: C934/4 -> 0000/1, cluster=0006, TID=23, reports=[AttributeReport [attributeDataType=BOOLEAN, attributeIdentifier=0, attributeValue=true]]]
2022-06-10 08:23:43.254 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' received command ON
2022-06-10 08:23:43.507 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 0 to 100
2022-06-10 08:23:43.509 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from OFF to ON
2022-06-10 08:23:43.561 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 100 to 0
2022-06-10 08:23:43.564 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from ON to OFF
2022-06-10 08:23:45.565 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [Level Control: C934/4 -> 0000/1, cluster=0008, TID=24, reports=[AttributeReport [attributeDataType=UNSIGNED_8_BIT_INTEGER, attributeIdentifier=0, attributeValue=111]]]
2022-06-10 08:23:45.577 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 0 to 44
2022-06-10 08:23:45.579 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from OFF to ON
...
2022-06-10 08:28:00.380 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - TX CMD: MoveToLevelWithOnOffCommand [Level Control: 0000/0 -> C934/4, cluster=0008, TID=B3, level=127, transitionTime=10]
2022-06-10 08:28:00.664 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: DefaultResponse [Level Control: C934/4 -> 0000/1, cluster=0008, TID=B3, commandIdentifier=4, statusCode=SUCCESS]
2022-06-10 08:28:00.795 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [On/Off: C934/4 -> 0000/1, cluster=0006, TID=2B, reports=[AttributeReport [attributeDataType=BOOLEAN, attributeIdentifier=0, attributeValue=true]]]
2022-06-10 08:28:00.361 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' received command 50
2022-06-10 08:28:00.676 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 0 to 50
2022-06-10 08:28:00.679 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from OFF to ON
2022-06-10 08:28:00.806 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 50 to 0
2022-06-10 08:28:00.808 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from ON to OFF
2022-06-10 08:28:02.797 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [Level Control: C934/4 -> 0000/1, cluster=0008, TID=2C, reports=[AttributeReport [attributeDataType=UNSIGNED_8_BIT_INTEGER, attributeIdentifier=0, attributeValue=127]]]
2022-06-10 08:28:02.811 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 0 to 50
2022-06-10 08:28:02.813 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from OFF to ON
Why does OH turns the device ON, then OFF and then ON again? Same thing with levels, sets the device to Level X, then OFF, then back to Level X?
Test#2: Initiate actions from Device
EP1: N/A
EP2: N/A
EP3: N/A
EP4: Change level using rotary encoder - OK
Note: The OH behavior mentioned above does not occur in this scenario.
Log:
2022-06-10 08:31:20.365 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [On/Off: C934/4 -> 0000/1, cluster=0006, TID=37, reports=[AttributeReport [attributeDataType=BOOLEAN, attributeIdentifier=0, attributeValue=true]]]
2022-06-10 08:31:22.448 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [Level Control: C934/4 -> 0000/1, cluster=0008, TID=38, reports=[AttributeReport [attributeDataType=UNSIGNED_8_BIT_INTEGER, attributeIdentifier=0, attributeValue=34]]]
2022-06-10 08:31:22.462 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 0 to 13
2022-06-10 08:31:22.464 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTSwitch' changed from OFF to ON
2022-06-10 08:31:32.526 [DEBUG] [tsystems.zigbee.ZigBeeNetworkManager] - RX CMD: ReportAttributesCommand [Level Control: C934/4 -> 0000/1, cluster=0008, TID=39, reports=[AttributeReport [attributeDataType=UNSIGNED_8_BIT_INTEGER, attributeIdentifier=0, attributeValue=60]]]
2022-06-10 08:31:32.538 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ACMEZigbeeDevice_DIMMABLELIGHTLevelControl' changed from 13 to 24