Add ways to get a command name by ID, for known commands, to Matter.framework. (#35882)

diff --git a/src/darwin/Framework/CHIP/MTRClusterNames.h b/src/darwin/Framework/CHIP/MTRClusterNames.h
index c13edf4..46b5a5b 100644
--- a/src/darwin/Framework/CHIP/MTRClusterNames.h
+++ b/src/darwin/Framework/CHIP/MTRClusterNames.h
@@ -43,6 +43,24 @@
 MTR_EXTERN MTR_AVAILABLE(ios(17.6), macos(14.6), watchos(10.6), tvos(17.6)) NSString * MTRAttributeNameForID(MTRClusterIDType clusterID, MTRAttributeIDType attributeID);
 
 /**
+ * Resolve Matter request (client to server) command IDs into a descriptive string.
+ *
+ * For unknown IDs, a string '<Unknown clusterID %d>' (if the cluster ID is not known)
+ * or '<Unknown commandID %d>' (if the cluster ID is known but the command ID is not known)
+ * will be returned.
+ */
+MTR_EXTERN MTR_NEWLY_AVAILABLE NSString * MTRRequestCommandNameForID(MTRClusterIDType clusterID, MTRCommandIDType commandID);
+
+/**
+ * Resolve Matter response (server to client) command IDs into a descriptive string.
+ *
+ * For unknown IDs, a string '<Unknown clusterID %d>' (if the cluster ID is not known)
+ * or '<Unknown commandID %d>' (if the cluster ID is known but the command ID is not known)
+ * will be returned.
+ */
+MTR_EXTERN MTR_NEWLY_AVAILABLE NSString * MTRResponseCommandNameForID(MTRClusterIDType clusterID, MTRCommandIDType commandID);
+
+/**
  * Resolve Matter event IDs into a descriptive string.
  *
  * For unknown IDs, a string '<Unknown clusterID %d>' (if the cluster ID is not known)
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusterNames-src.zapt b/src/darwin/Framework/CHIP/templates/MTRClusterNames-src.zapt
index 1c18b6a..5928160 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusterNames-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusterNames-src.zapt
@@ -87,6 +87,62 @@
     return result;
 }
 
+#pragma mark - Command IDs
+
+{{!Takes "source" as an argument, can be "client" or "server"}}
+{{~#*inline "commandIDOutput"}}
+    NSString * result = nil;
+
+    switch (clusterID) {
+
+{{#zcl_clusters}}
+{{#if (isSupported (asUpperCamelCase label preserveAcronyms=true) isForIds=true)}}
+{{~#*inline "cluster"}}{{asUpperCamelCase label preserveAcronyms=true}}{{/inline~}}
+        case MTRClusterIDType{{>cluster}}ID:
+
+            switch (commandID) {
+
+{{#*inline "commandIDs"}}
+{{#zcl_commands}}
+{{~#*inline "cluster"}}{{asUpperCamelCase ../clusterName preserveAcronyms=true}}{{/inline~}}
+{{~#*inline "command"}}{{asUpperCamelCase label preserveAcronyms=true}}{{/inline~}}
+{{#if (and (isSupported (asUpperCamelCase ../clusterName preserveAcronyms=true) command=(asUpperCamelCase label preserveAcronyms=true) isForIds=true)
+           (isStrEqual source ../../../source))}}
+            case MTRCommandIDTypeCluster{{>cluster}}Command{{>command}}ID:
+                result = @"{{>command}}";
+                break;
+
+{{/if}}
+{{/zcl_commands}}
+{{/inline}}
+
+{{> commandIDs clusterName=label}}
+
+            default:
+                result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+                break;
+        }
+        break;
+{{/if}}
+
+{{/zcl_clusters}}
+        default:
+           result = [NSString stringWithFormat:@"<Unknown clusterID %d>", clusterID];
+           break;
+        }
+
+    return result;
+{{/inline}}
+
+NSString * MTRRequestCommandNameForID(MTRClusterIDType clusterID, MTRCommandIDType commandID)
+{
+{{> commandIDOutput source="client"}}
+}
+
+NSString * MTRResponseCommandNameForID(MTRClusterIDType clusterID, MTRCommandIDType commandID)
+{
+{{> commandIDOutput source="server"}}
+}
 
 #pragma mark - Event IDs
 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
index e0a8484..51fa188 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
@@ -8706,6 +8706,3956 @@
     return result;
 }
 
+#pragma mark - Command IDs
+
+NSString * MTRRequestCommandNameForID(MTRClusterIDType clusterID, MTRCommandIDType commandID)
+{
+    NSString * result = nil;
+
+    switch (clusterID) {
+
+    case MTRClusterIDTypeIdentifyID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterIdentifyCommandIdentifyID:
+            result = @"Identify";
+            break;
+
+        case MTRCommandIDTypeClusterIdentifyCommandTriggerEffectID:
+            result = @"TriggerEffect";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGroupsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGroupsCommandAddGroupID:
+            result = @"AddGroup";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandViewGroupID:
+            result = @"ViewGroup";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandGetGroupMembershipID:
+            result = @"GetGroupMembership";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandRemoveGroupID:
+            result = @"RemoveGroup";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandRemoveAllGroupsID:
+            result = @"RemoveAllGroups";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandAddGroupIfIdentifyingID:
+            result = @"AddGroupIfIdentifying";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOnOffID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOnOffCommandOffID:
+            result = @"Off";
+            break;
+
+        case MTRCommandIDTypeClusterOnOffCommandOnID:
+            result = @"On";
+            break;
+
+        case MTRCommandIDTypeClusterOnOffCommandToggleID:
+            result = @"Toggle";
+            break;
+
+        case MTRCommandIDTypeClusterOnOffCommandOffWithEffectID:
+            result = @"OffWithEffect";
+            break;
+
+        case MTRCommandIDTypeClusterOnOffCommandOnWithRecallGlobalSceneID:
+            result = @"OnWithRecallGlobalScene";
+            break;
+
+        case MTRCommandIDTypeClusterOnOffCommandOnWithTimedOffID:
+            result = @"OnWithTimedOff";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLevelControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterLevelControlCommandMoveToLevelID:
+            result = @"MoveToLevel";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandMoveID:
+            result = @"Move";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandStepID:
+            result = @"Step";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandStopID:
+            result = @"Stop";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandMoveToLevelWithOnOffID:
+            result = @"MoveToLevelWithOnOff";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandMoveWithOnOffID:
+            result = @"MoveWithOnOff";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandStepWithOnOffID:
+            result = @"StepWithOnOff";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandStopWithOnOffID:
+            result = @"StopWithOnOff";
+            break;
+
+        case MTRCommandIDTypeClusterLevelControlCommandMoveToClosestFrequencyID:
+            result = @"MoveToClosestFrequency";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePulseWidthModulationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDescriptorID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBindingID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAccessControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterAccessControlCommandReviewFabricRestrictionsID:
+            result = @"ReviewFabricRestrictions";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeActionsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterActionsCommandInstantActionID:
+            result = @"InstantAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandInstantActionWithTransitionID:
+            result = @"InstantActionWithTransition";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandStartActionID:
+            result = @"StartAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandStartActionWithDurationID:
+            result = @"StartActionWithDuration";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandStopActionID:
+            result = @"StopAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandPauseActionID:
+            result = @"PauseAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandPauseActionWithDurationID:
+            result = @"PauseActionWithDuration";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandResumeActionID:
+            result = @"ResumeAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandEnableActionID:
+            result = @"EnableAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandEnableActionWithDurationID:
+            result = @"EnableActionWithDuration";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandDisableActionID:
+            result = @"DisableAction";
+            break;
+
+        case MTRCommandIDTypeClusterActionsCommandDisableActionWithDurationID:
+            result = @"DisableActionWithDuration";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBasicInformationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOTASoftwareUpdateProviderID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOTASoftwareUpdateProviderCommandQueryImageID:
+            result = @"QueryImage";
+            break;
+
+        case MTRCommandIDTypeClusterOTASoftwareUpdateProviderCommandApplyUpdateRequestID:
+            result = @"ApplyUpdateRequest";
+            break;
+
+        case MTRCommandIDTypeClusterOTASoftwareUpdateProviderCommandNotifyUpdateAppliedID:
+            result = @"NotifyUpdateApplied";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOTASoftwareUpdateRequestorID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOTASoftwareUpdateRequestorCommandAnnounceOTAProviderID:
+            result = @"AnnounceOTAProvider";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLocalizationConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTimeFormatLocalizationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeUnitLocalizationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePowerSourceConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePowerSourceID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGeneralCommissioningID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandArmFailSafeID:
+            result = @"ArmFailSafe";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandSetRegulatoryConfigID:
+            result = @"SetRegulatoryConfig";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandCommissioningCompleteID:
+            result = @"CommissioningComplete";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandSetTCAcknowledgementsID:
+            result = @"SetTCAcknowledgements";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeNetworkCommissioningID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandScanNetworksID:
+            result = @"ScanNetworks";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandAddOrUpdateWiFiNetworkID:
+            result = @"AddOrUpdateWiFiNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandAddOrUpdateThreadNetworkID:
+            result = @"AddOrUpdateThreadNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandRemoveNetworkID:
+            result = @"RemoveNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandConnectNetworkID:
+            result = @"ConnectNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandReorderNetworkID:
+            result = @"ReorderNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandQueryIdentityID:
+            result = @"QueryIdentity";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDiagnosticLogsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDiagnosticLogsCommandRetrieveLogsRequestID:
+            result = @"RetrieveLogsRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGeneralDiagnosticsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGeneralDiagnosticsCommandTestEventTriggerID:
+            result = @"TestEventTrigger";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralDiagnosticsCommandTimeSnapshotID:
+            result = @"TimeSnapshot";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralDiagnosticsCommandPayloadTestRequestID:
+            result = @"PayloadTestRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSoftwareDiagnosticsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterSoftwareDiagnosticsCommandResetWatermarksID:
+            result = @"ResetWatermarks";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThreadNetworkDiagnosticsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThreadNetworkDiagnosticsCommandResetCountsID:
+            result = @"ResetCounts";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWiFiNetworkDiagnosticsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWiFiNetworkDiagnosticsCommandResetCountsID:
+            result = @"ResetCounts";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEthernetNetworkDiagnosticsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterEthernetNetworkDiagnosticsCommandResetCountsID:
+            result = @"ResetCounts";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTimeSynchronizationID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterTimeSynchronizationCommandSetUTCTimeID:
+            result = @"SetUTCTime";
+            break;
+
+        case MTRCommandIDTypeClusterTimeSynchronizationCommandSetTrustedTimeSourceID:
+            result = @"SetTrustedTimeSource";
+            break;
+
+        case MTRCommandIDTypeClusterTimeSynchronizationCommandSetTimeZoneID:
+            result = @"SetTimeZone";
+            break;
+
+        case MTRCommandIDTypeClusterTimeSynchronizationCommandSetDSTOffsetID:
+            result = @"SetDSTOffset";
+            break;
+
+        case MTRCommandIDTypeClusterTimeSynchronizationCommandSetDefaultNTPID:
+            result = @"SetDefaultNTP";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBridgedDeviceBasicInformationID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterBridgedDeviceBasicInformationCommandKeepActiveID:
+            result = @"KeepActive";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSwitchID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAdministratorCommissioningID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterAdministratorCommissioningCommandOpenCommissioningWindowID:
+            result = @"OpenCommissioningWindow";
+            break;
+
+        case MTRCommandIDTypeClusterAdministratorCommissioningCommandOpenBasicCommissioningWindowID:
+            result = @"OpenBasicCommissioningWindow";
+            break;
+
+        case MTRCommandIDTypeClusterAdministratorCommissioningCommandRevokeCommissioningID:
+            result = @"RevokeCommissioning";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOperationalCredentialsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandAttestationRequestID:
+            result = @"AttestationRequest";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandCertificateChainRequestID:
+            result = @"CertificateChainRequest";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandCSRRequestID:
+            result = @"CSRRequest";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandAddNOCID:
+            result = @"AddNOC";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateNOCID:
+            result = @"UpdateNOC";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateFabricLabelID:
+            result = @"UpdateFabricLabel";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandRemoveFabricID:
+            result = @"RemoveFabric";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandAddTrustedRootCertificateID:
+            result = @"AddTrustedRootCertificate";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGroupKeyManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetWriteID:
+            result = @"KeySetWrite";
+            break;
+
+        case MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadID:
+            result = @"KeySetRead";
+            break;
+
+        case MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetRemoveID:
+            result = @"KeySetRemove";
+            break;
+
+        case MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadAllIndicesID:
+            result = @"KeySetReadAllIndices";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFixedLabelID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeUserLabelID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBooleanStateID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeICDManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterICDManagementCommandRegisterClientID:
+            result = @"RegisterClient";
+            break;
+
+        case MTRCommandIDTypeClusterICDManagementCommandUnregisterClientID:
+            result = @"UnregisterClient";
+            break;
+
+        case MTRCommandIDTypeClusterICDManagementCommandStayActiveRequestID:
+            result = @"StayActiveRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTimerID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterTimerCommandSetTimerID:
+            result = @"SetTimer";
+            break;
+
+        case MTRCommandIDTypeClusterTimerCommandResetTimerID:
+            result = @"ResetTimer";
+            break;
+
+        case MTRCommandIDTypeClusterTimerCommandAddTimeID:
+            result = @"AddTime";
+            break;
+
+        case MTRCommandIDTypeClusterTimerCommandReduceTimeID:
+            result = @"ReduceTime";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOvenCavityOperationalStateID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOvenCavityOperationalStateCommandPauseID:
+            result = @"Pause";
+            break;
+
+        case MTRCommandIDTypeClusterOvenCavityOperationalStateCommandStopID:
+            result = @"Stop";
+            break;
+
+        case MTRCommandIDTypeClusterOvenCavityOperationalStateCommandStartID:
+            result = @"Start";
+            break;
+
+        case MTRCommandIDTypeClusterOvenCavityOperationalStateCommandResumeID:
+            result = @"Resume";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOvenModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOvenModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLaundryDryerControlsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeModeSelectID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterModeSelectCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLaundryWasherModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterLaundryWasherModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRefrigeratorAndTemperatureControlledCabinetModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRefrigeratorAndTemperatureControlledCabinetModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLaundryWasherControlsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRVCRunModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRVCRunModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRVCCleanModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRVCCleanModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTemperatureControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterTemperatureControlCommandSetTemperatureID:
+            result = @"SetTemperature";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRefrigeratorAlarmID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDishwasherModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDishwasherModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAirQualityID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSmokeCOAlarmID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterSmokeCOAlarmCommandSelfTestRequestID:
+            result = @"SelfTestRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDishwasherAlarmID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDishwasherAlarmCommandResetID:
+            result = @"Reset";
+            break;
+
+        case MTRCommandIDTypeClusterDishwasherAlarmCommandModifyEnabledAlarmsID:
+            result = @"ModifyEnabledAlarms";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMicrowaveOvenModeID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMicrowaveOvenControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterMicrowaveOvenControlCommandSetCookingParametersID:
+            result = @"SetCookingParameters";
+            break;
+
+        case MTRCommandIDTypeClusterMicrowaveOvenControlCommandAddMoreTimeID:
+            result = @"AddMoreTime";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOperationalStateID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOperationalStateCommandPauseID:
+            result = @"Pause";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalStateCommandStopID:
+            result = @"Stop";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalStateCommandStartID:
+            result = @"Start";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalStateCommandResumeID:
+            result = @"Resume";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRVCOperationalStateID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRVCOperationalStateCommandPauseID:
+            result = @"Pause";
+            break;
+
+        case MTRCommandIDTypeClusterRVCOperationalStateCommandResumeID:
+            result = @"Resume";
+            break;
+
+        case MTRCommandIDTypeClusterRVCOperationalStateCommandGoHomeID:
+            result = @"GoHome";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeScenesManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterScenesManagementCommandAddSceneID:
+            result = @"AddScene";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandViewSceneID:
+            result = @"ViewScene";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandRemoveSceneID:
+            result = @"RemoveScene";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandRemoveAllScenesID:
+            result = @"RemoveAllScenes";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandStoreSceneID:
+            result = @"StoreScene";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandRecallSceneID:
+            result = @"RecallScene";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandGetSceneMembershipID:
+            result = @"GetSceneMembership";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandCopySceneID:
+            result = @"CopyScene";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeHEPAFilterMonitoringID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterHEPAFilterMonitoringCommandResetConditionID:
+            result = @"ResetCondition";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeActivatedCarbonFilterMonitoringID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterActivatedCarbonFilterMonitoringCommandResetConditionID:
+            result = @"ResetCondition";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBooleanStateConfigurationID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterBooleanStateConfigurationCommandSuppressAlarmID:
+            result = @"SuppressAlarm";
+            break;
+
+        case MTRCommandIDTypeClusterBooleanStateConfigurationCommandEnableDisableAlarmID:
+            result = @"EnableDisableAlarm";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeValveConfigurationAndControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterValveConfigurationAndControlCommandOpenID:
+            result = @"Open";
+            break;
+
+        case MTRCommandIDTypeClusterValveConfigurationAndControlCommandCloseID:
+            result = @"Close";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeElectricalPowerMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeElectricalEnergyMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWaterHeaterManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWaterHeaterManagementCommandBoostID:
+            result = @"Boost";
+            break;
+
+        case MTRCommandIDTypeClusterWaterHeaterManagementCommandCancelBoostID:
+            result = @"CancelBoost";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDemandResponseLoadControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDemandResponseLoadControlCommandRegisterLoadControlProgramRequestID:
+            result = @"RegisterLoadControlProgramRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDemandResponseLoadControlCommandUnregisterLoadControlProgramRequestID:
+            result = @"UnregisterLoadControlProgramRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDemandResponseLoadControlCommandAddLoadControlEventRequestID:
+            result = @"AddLoadControlEventRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDemandResponseLoadControlCommandRemoveLoadControlEventRequestID:
+            result = @"RemoveLoadControlEventRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDemandResponseLoadControlCommandClearLoadControlEventsRequestID:
+            result = @"ClearLoadControlEventsRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMessagesID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterMessagesCommandPresentMessagesRequestID:
+            result = @"PresentMessagesRequest";
+            break;
+
+        case MTRCommandIDTypeClusterMessagesCommandCancelMessagesRequestID:
+            result = @"CancelMessagesRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDeviceEnergyManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandPowerAdjustRequestID:
+            result = @"PowerAdjustRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandCancelPowerAdjustRequestID:
+            result = @"CancelPowerAdjustRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandStartTimeAdjustRequestID:
+            result = @"StartTimeAdjustRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandPauseRequestID:
+            result = @"PauseRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandResumeRequestID:
+            result = @"ResumeRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandModifyForecastRequestID:
+            result = @"ModifyForecastRequest";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandRequestConstraintBasedForecastID:
+            result = @"RequestConstraintBasedForecast";
+            break;
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementCommandCancelRequestID:
+            result = @"CancelRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEnergyEVSEID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandDisableID:
+            result = @"Disable";
+            break;
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandEnableChargingID:
+            result = @"EnableCharging";
+            break;
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandEnableDischargingID:
+            result = @"EnableDischarging";
+            break;
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandStartDiagnosticsID:
+            result = @"StartDiagnostics";
+            break;
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandSetTargetsID:
+            result = @"SetTargets";
+            break;
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandGetTargetsID:
+            result = @"GetTargets";
+            break;
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandClearTargetsID:
+            result = @"ClearTargets";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEnergyPreferenceID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePowerTopologyID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEnergyEVSEModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterEnergyEVSEModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWaterHeaterModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWaterHeaterModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDeviceEnergyManagementModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementModeCommandChangeToModeID:
+            result = @"ChangeToMode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDoorLockID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDoorLockCommandLockDoorID:
+            result = @"LockDoor";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandUnlockDoorID:
+            result = @"UnlockDoor";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandUnlockWithTimeoutID:
+            result = @"UnlockWithTimeout";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetWeekDayScheduleID:
+            result = @"SetWeekDaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetWeekDayScheduleID:
+            result = @"GetWeekDaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandClearWeekDayScheduleID:
+            result = @"ClearWeekDaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetYearDayScheduleID:
+            result = @"SetYearDaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetYearDayScheduleID:
+            result = @"GetYearDaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandClearYearDayScheduleID:
+            result = @"ClearYearDaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetHolidayScheduleID:
+            result = @"SetHolidaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetHolidayScheduleID:
+            result = @"GetHolidaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandClearHolidayScheduleID:
+            result = @"ClearHolidaySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetUserID:
+            result = @"SetUser";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetUserID:
+            result = @"GetUser";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandClearUserID:
+            result = @"ClearUser";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetCredentialID:
+            result = @"SetCredential";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetCredentialStatusID:
+            result = @"GetCredentialStatus";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandClearCredentialID:
+            result = @"ClearCredential";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandUnboltDoorID:
+            result = @"UnboltDoor";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetAliroReaderConfigID:
+            result = @"SetAliroReaderConfig";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandClearAliroReaderConfigID:
+            result = @"ClearAliroReaderConfig";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWindowCoveringID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandUpOrOpenID:
+            result = @"UpOrOpen";
+            break;
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandDownOrCloseID:
+            result = @"DownOrClose";
+            break;
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandStopMotionID:
+            result = @"StopMotion";
+            break;
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandGoToLiftValueID:
+            result = @"GoToLiftValue";
+            break;
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandGoToLiftPercentageID:
+            result = @"GoToLiftPercentage";
+            break;
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandGoToTiltValueID:
+            result = @"GoToTiltValue";
+            break;
+
+        case MTRCommandIDTypeClusterWindowCoveringCommandGoToTiltPercentageID:
+            result = @"GoToTiltPercentage";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeServiceAreaID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterServiceAreaCommandSelectAreasID:
+            result = @"SelectAreas";
+            break;
+
+        case MTRCommandIDTypeClusterServiceAreaCommandSkipAreaID:
+            result = @"SkipArea";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePumpConfigurationAndControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThermostatID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThermostatCommandSetpointRaiseLowerID:
+            result = @"SetpointRaiseLower";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandSetWeeklyScheduleID:
+            result = @"SetWeeklySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandGetWeeklyScheduleID:
+            result = @"GetWeeklySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandClearWeeklyScheduleID:
+            result = @"ClearWeeklySchedule";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandSetActiveScheduleRequestID:
+            result = @"SetActiveScheduleRequest";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandSetActivePresetRequestID:
+            result = @"SetActivePresetRequest";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandAtomicRequestID:
+            result = @"AtomicRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFanControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterFanControlCommandStepID:
+            result = @"Step";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThermostatUserInterfaceConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeColorControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveToHueID:
+            result = @"MoveToHue";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveHueID:
+            result = @"MoveHue";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandStepHueID:
+            result = @"StepHue";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveToSaturationID:
+            result = @"MoveToSaturation";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveSaturationID:
+            result = @"MoveSaturation";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandStepSaturationID:
+            result = @"StepSaturation";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveToHueAndSaturationID:
+            result = @"MoveToHueAndSaturation";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveToColorID:
+            result = @"MoveToColor";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveColorID:
+            result = @"MoveColor";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandStepColorID:
+            result = @"StepColor";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveToColorTemperatureID:
+            result = @"MoveToColorTemperature";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandEnhancedMoveToHueID:
+            result = @"EnhancedMoveToHue";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandEnhancedMoveHueID:
+            result = @"EnhancedMoveHue";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandEnhancedStepHueID:
+            result = @"EnhancedStepHue";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandEnhancedMoveToHueAndSaturationID:
+            result = @"EnhancedMoveToHueAndSaturation";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandColorLoopSetID:
+            result = @"ColorLoopSet";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandStopMoveStepID:
+            result = @"StopMoveStep";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandMoveColorTemperatureID:
+            result = @"MoveColorTemperature";
+            break;
+
+        case MTRCommandIDTypeClusterColorControlCommandStepColorTemperatureID:
+            result = @"StepColorTemperature";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBallastConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeIlluminanceMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTemperatureMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePressureMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFlowMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRelativeHumidityMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOccupancySensingID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeCarbonMonoxideConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeCarbonDioxideConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeNitrogenDioxideConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOzoneConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePM25ConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFormaldehydeConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePM1ConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePM10ConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTotalVolatileOrganicCompoundsConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRadonConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWiFiNetworkManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWiFiNetworkManagementCommandNetworkPassphraseRequestID:
+            result = @"NetworkPassphraseRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThreadBorderRouterManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThreadBorderRouterManagementCommandGetActiveDatasetRequestID:
+            result = @"GetActiveDatasetRequest";
+            break;
+
+        case MTRCommandIDTypeClusterThreadBorderRouterManagementCommandGetPendingDatasetRequestID:
+            result = @"GetPendingDatasetRequest";
+            break;
+
+        case MTRCommandIDTypeClusterThreadBorderRouterManagementCommandSetActiveDatasetRequestID:
+            result = @"SetActiveDatasetRequest";
+            break;
+
+        case MTRCommandIDTypeClusterThreadBorderRouterManagementCommandSetPendingDatasetRequestID:
+            result = @"SetPendingDatasetRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThreadNetworkDirectoryID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThreadNetworkDirectoryCommandAddNetworkID:
+            result = @"AddNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterThreadNetworkDirectoryCommandRemoveNetworkID:
+            result = @"RemoveNetwork";
+            break;
+
+        case MTRCommandIDTypeClusterThreadNetworkDirectoryCommandGetOperationalDatasetID:
+            result = @"GetOperationalDataset";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWakeOnLANID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeChannelID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterChannelCommandChangeChannelID:
+            result = @"ChangeChannel";
+            break;
+
+        case MTRCommandIDTypeClusterChannelCommandChangeChannelByNumberID:
+            result = @"ChangeChannelByNumber";
+            break;
+
+        case MTRCommandIDTypeClusterChannelCommandSkipChannelID:
+            result = @"SkipChannel";
+            break;
+
+        case MTRCommandIDTypeClusterChannelCommandGetProgramGuideID:
+            result = @"GetProgramGuide";
+            break;
+
+        case MTRCommandIDTypeClusterChannelCommandRecordProgramID:
+            result = @"RecordProgram";
+            break;
+
+        case MTRCommandIDTypeClusterChannelCommandCancelRecordProgramID:
+            result = @"CancelRecordProgram";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTargetNavigatorID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterTargetNavigatorCommandNavigateTargetID:
+            result = @"NavigateTarget";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMediaPlaybackID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandPlayID:
+            result = @"Play";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandPauseID:
+            result = @"Pause";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandStopID:
+            result = @"Stop";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandStartOverID:
+            result = @"StartOver";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandPreviousID:
+            result = @"Previous";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandNextID:
+            result = @"Next";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandRewindID:
+            result = @"Rewind";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandFastForwardID:
+            result = @"FastForward";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandSkipForwardID:
+            result = @"SkipForward";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandSkipBackwardID:
+            result = @"SkipBackward";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandSeekID:
+            result = @"Seek";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandActivateAudioTrackID:
+            result = @"ActivateAudioTrack";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandActivateTextTrackID:
+            result = @"ActivateTextTrack";
+            break;
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandDeactivateTextTrackID:
+            result = @"DeactivateTextTrack";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMediaInputID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterMediaInputCommandSelectInputID:
+            result = @"SelectInput";
+            break;
+
+        case MTRCommandIDTypeClusterMediaInputCommandShowInputStatusID:
+            result = @"ShowInputStatus";
+            break;
+
+        case MTRCommandIDTypeClusterMediaInputCommandHideInputStatusID:
+            result = @"HideInputStatus";
+            break;
+
+        case MTRCommandIDTypeClusterMediaInputCommandRenameInputID:
+            result = @"RenameInput";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLowPowerID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterLowPowerCommandSleepID:
+            result = @"Sleep";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeKeypadInputID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterKeypadInputCommandSendKeyID:
+            result = @"SendKey";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeContentLauncherID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterContentLauncherCommandLaunchContentID:
+            result = @"LaunchContent";
+            break;
+
+        case MTRCommandIDTypeClusterContentLauncherCommandLaunchURLID:
+            result = @"LaunchURL";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAudioOutputID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterAudioOutputCommandSelectOutputID:
+            result = @"SelectOutput";
+            break;
+
+        case MTRCommandIDTypeClusterAudioOutputCommandRenameOutputID:
+            result = @"RenameOutput";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeApplicationLauncherID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterApplicationLauncherCommandLaunchAppID:
+            result = @"LaunchApp";
+            break;
+
+        case MTRCommandIDTypeClusterApplicationLauncherCommandStopAppID:
+            result = @"StopApp";
+            break;
+
+        case MTRCommandIDTypeClusterApplicationLauncherCommandHideAppID:
+            result = @"HideApp";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeApplicationBasicID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAccountLoginID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterAccountLoginCommandGetSetupPINID:
+            result = @"GetSetupPIN";
+            break;
+
+        case MTRCommandIDTypeClusterAccountLoginCommandLoginID:
+            result = @"Login";
+            break;
+
+        case MTRCommandIDTypeClusterAccountLoginCommandLogoutID:
+            result = @"Logout";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeContentControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterContentControlCommandUpdatePINID:
+            result = @"UpdatePIN";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandResetPINID:
+            result = @"ResetPIN";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandEnableID:
+            result = @"Enable";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandDisableID:
+            result = @"Disable";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandAddBonusTimeID:
+            result = @"AddBonusTime";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandSetScreenDailyTimeID:
+            result = @"SetScreenDailyTime";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandBlockUnratedContentID:
+            result = @"BlockUnratedContent";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandUnblockUnratedContentID:
+            result = @"UnblockUnratedContent";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandSetOnDemandRatingThresholdID:
+            result = @"SetOnDemandRatingThreshold";
+            break;
+
+        case MTRCommandIDTypeClusterContentControlCommandSetScheduledContentRatingThresholdID:
+            result = @"SetScheduledContentRatingThreshold";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeContentAppObserverID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterContentAppObserverCommandContentAppMessageID:
+            result = @"ContentAppMessage";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeChimeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterChimeCommandPlayChimeSoundID:
+            result = @"PlayChimeSound";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEcosystemInformationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeCommissionerControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterCommissionerControlCommandRequestCommissioningApprovalID:
+            result = @"RequestCommissioningApproval";
+            break;
+
+        case MTRCommandIDTypeClusterCommissionerControlCommandCommissionNodeID:
+            result = @"CommissionNode";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeUnitTestingID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestID:
+            result = @"Test";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestNotHandledID:
+            result = @"TestNotHandled";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestSpecificID:
+            result = @"TestSpecific";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestUnknownCommandID:
+            result = @"TestUnknownCommand";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestAddArgumentsID:
+            result = @"TestAddArguments";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestSimpleArgumentRequestID:
+            result = @"TestSimpleArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestStructArrayArgumentRequestID:
+            result = @"TestStructArrayArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestStructArgumentRequestID:
+            result = @"TestStructArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestNestedStructArgumentRequestID:
+            result = @"TestNestedStructArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestListStructArgumentRequestID:
+            result = @"TestListStructArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UArgumentRequestID:
+            result = @"TestListInt8UArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestNestedStructListArgumentRequestID:
+            result = @"TestNestedStructListArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestListNestedStructListArgumentRequestID:
+            result = @"TestListNestedStructListArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UReverseRequestID:
+            result = @"TestListInt8UReverseRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestEnumsRequestID:
+            result = @"TestEnumsRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestNullableOptionalRequestID:
+            result = @"TestNullableOptionalRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestComplexNullableOptionalRequestID:
+            result = @"TestComplexNullableOptionalRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandSimpleStructEchoRequestID:
+            result = @"SimpleStructEchoRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTimedInvokeRequestID:
+            result = @"TimedInvokeRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID:
+            result = @"TestSimpleOptionalArgumentRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestEventRequestID:
+            result = @"TestEmitTestEventRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID:
+            result = @"TestEmitTestFabricScopedEventRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestBatchHelperRequestID:
+            result = @"TestBatchHelperRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestSecondBatchHelperRequestID:
+            result = @"TestSecondBatchHelperRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandStringEchoRequestID:
+            result = @"StringEchoRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandGlobalEchoRequestID:
+            result = @"GlobalEchoRequest";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestDifferentVendorMeiRequestID:
+            result = @"TestDifferentVendorMeiRequest";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSampleMEIID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterSampleMEICommandPingID:
+            result = @"Ping";
+            break;
+
+        case MTRCommandIDTypeClusterSampleMEICommandAddArgumentsID:
+            result = @"AddArguments";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    default:
+        result = [NSString stringWithFormat:@"<Unknown clusterID %d>", clusterID];
+        break;
+    }
+
+    return result;
+}
+
+NSString * MTRResponseCommandNameForID(MTRClusterIDType clusterID, MTRCommandIDType commandID)
+{
+    NSString * result = nil;
+
+    switch (clusterID) {
+
+    case MTRClusterIDTypeIdentifyID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGroupsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGroupsCommandAddGroupResponseID:
+            result = @"AddGroupResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandViewGroupResponseID:
+            result = @"ViewGroupResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandGetGroupMembershipResponseID:
+            result = @"GetGroupMembershipResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGroupsCommandRemoveGroupResponseID:
+            result = @"RemoveGroupResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOnOffID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLevelControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePulseWidthModulationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDescriptorID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBindingID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAccessControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterAccessControlCommandReviewFabricRestrictionsResponseID:
+            result = @"ReviewFabricRestrictionsResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeActionsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBasicInformationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOTASoftwareUpdateProviderID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOTASoftwareUpdateProviderCommandQueryImageResponseID:
+            result = @"QueryImageResponse";
+            break;
+
+        case MTRCommandIDTypeClusterOTASoftwareUpdateProviderCommandApplyUpdateResponseID:
+            result = @"ApplyUpdateResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOTASoftwareUpdateRequestorID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLocalizationConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTimeFormatLocalizationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeUnitLocalizationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePowerSourceConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePowerSourceID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGeneralCommissioningID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandArmFailSafeResponseID:
+            result = @"ArmFailSafeResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandSetRegulatoryConfigResponseID:
+            result = @"SetRegulatoryConfigResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandCommissioningCompleteResponseID:
+            result = @"CommissioningCompleteResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralCommissioningCommandSetTCAcknowledgementsResponseID:
+            result = @"SetTCAcknowledgementsResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeNetworkCommissioningID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandScanNetworksResponseID:
+            result = @"ScanNetworksResponse";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandNetworkConfigResponseID:
+            result = @"NetworkConfigResponse";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandConnectNetworkResponseID:
+            result = @"ConnectNetworkResponse";
+            break;
+
+        case MTRCommandIDTypeClusterNetworkCommissioningCommandQueryIdentityResponseID:
+            result = @"QueryIdentityResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDiagnosticLogsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDiagnosticLogsCommandRetrieveLogsResponseID:
+            result = @"RetrieveLogsResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGeneralDiagnosticsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGeneralDiagnosticsCommandTimeSnapshotResponseID:
+            result = @"TimeSnapshotResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGeneralDiagnosticsCommandPayloadTestResponseID:
+            result = @"PayloadTestResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSoftwareDiagnosticsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThreadNetworkDiagnosticsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWiFiNetworkDiagnosticsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEthernetNetworkDiagnosticsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTimeSynchronizationID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterTimeSynchronizationCommandSetTimeZoneResponseID:
+            result = @"SetTimeZoneResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBridgedDeviceBasicInformationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSwitchID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAdministratorCommissioningID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOperationalCredentialsID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandAttestationResponseID:
+            result = @"AttestationResponse";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandCertificateChainResponseID:
+            result = @"CertificateChainResponse";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandCSRResponseID:
+            result = @"CSRResponse";
+            break;
+
+        case MTRCommandIDTypeClusterOperationalCredentialsCommandNOCResponseID:
+            result = @"NOCResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeGroupKeyManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadResponseID:
+            result = @"KeySetReadResponse";
+            break;
+
+        case MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadAllIndicesResponseID:
+            result = @"KeySetReadAllIndicesResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFixedLabelID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeUserLabelID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBooleanStateID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeICDManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterICDManagementCommandRegisterClientResponseID:
+            result = @"RegisterClientResponse";
+            break;
+
+        case MTRCommandIDTypeClusterICDManagementCommandStayActiveResponseID:
+            result = @"StayActiveResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTimerID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOvenCavityOperationalStateID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOvenCavityOperationalStateCommandOperationalCommandResponseID:
+            result = @"OperationalCommandResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOvenModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOvenModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLaundryDryerControlsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeModeSelectID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLaundryWasherModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterLaundryWasherModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRefrigeratorAndTemperatureControlledCabinetModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRefrigeratorAndTemperatureControlledCabinetModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLaundryWasherControlsID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRVCRunModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRVCRunModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRVCCleanModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRVCCleanModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTemperatureControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRefrigeratorAlarmID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDishwasherModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDishwasherModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAirQualityID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSmokeCOAlarmID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDishwasherAlarmID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMicrowaveOvenModeID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMicrowaveOvenControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOperationalStateID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterOperationalStateCommandOperationalCommandResponseID:
+            result = @"OperationalCommandResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRVCOperationalStateID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterRVCOperationalStateCommandOperationalCommandResponseID:
+            result = @"OperationalCommandResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeScenesManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterScenesManagementCommandAddSceneResponseID:
+            result = @"AddSceneResponse";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandViewSceneResponseID:
+            result = @"ViewSceneResponse";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandRemoveSceneResponseID:
+            result = @"RemoveSceneResponse";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandRemoveAllScenesResponseID:
+            result = @"RemoveAllScenesResponse";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandStoreSceneResponseID:
+            result = @"StoreSceneResponse";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandGetSceneMembershipResponseID:
+            result = @"GetSceneMembershipResponse";
+            break;
+
+        case MTRCommandIDTypeClusterScenesManagementCommandCopySceneResponseID:
+            result = @"CopySceneResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeHEPAFilterMonitoringID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeActivatedCarbonFilterMonitoringID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBooleanStateConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeValveConfigurationAndControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeElectricalPowerMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeElectricalEnergyMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWaterHeaterManagementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDemandResponseLoadControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMessagesID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDeviceEnergyManagementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEnergyEVSEID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterEnergyEVSECommandGetTargetsResponseID:
+            result = @"GetTargetsResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEnergyPreferenceID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePowerTopologyID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEnergyEVSEModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterEnergyEVSEModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWaterHeaterModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWaterHeaterModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDeviceEnergyManagementModeID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDeviceEnergyManagementModeCommandChangeToModeResponseID:
+            result = @"ChangeToModeResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeDoorLockID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetWeekDayScheduleResponseID:
+            result = @"GetWeekDayScheduleResponse";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetYearDayScheduleResponseID:
+            result = @"GetYearDayScheduleResponse";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetHolidayScheduleResponseID:
+            result = @"GetHolidayScheduleResponse";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetUserResponseID:
+            result = @"GetUserResponse";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandSetCredentialResponseID:
+            result = @"SetCredentialResponse";
+            break;
+
+        case MTRCommandIDTypeClusterDoorLockCommandGetCredentialStatusResponseID:
+            result = @"GetCredentialStatusResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWindowCoveringID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeServiceAreaID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterServiceAreaCommandSelectAreasResponseID:
+            result = @"SelectAreasResponse";
+            break;
+
+        case MTRCommandIDTypeClusterServiceAreaCommandSkipAreaResponseID:
+            result = @"SkipAreaResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePumpConfigurationAndControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThermostatID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThermostatCommandGetWeeklyScheduleResponseID:
+            result = @"GetWeeklyScheduleResponse";
+            break;
+
+        case MTRCommandIDTypeClusterThermostatCommandAtomicResponseID:
+            result = @"AtomicResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFanControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThermostatUserInterfaceConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeColorControlID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeBallastConfigurationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeIlluminanceMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTemperatureMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePressureMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFlowMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRelativeHumidityMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOccupancySensingID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeCarbonMonoxideConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeCarbonDioxideConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeNitrogenDioxideConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeOzoneConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePM25ConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeFormaldehydeConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePM1ConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypePM10ConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTotalVolatileOrganicCompoundsConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeRadonConcentrationMeasurementID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWiFiNetworkManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterWiFiNetworkManagementCommandNetworkPassphraseResponseID:
+            result = @"NetworkPassphraseResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThreadBorderRouterManagementID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThreadBorderRouterManagementCommandDatasetResponseID:
+            result = @"DatasetResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeThreadNetworkDirectoryID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterThreadNetworkDirectoryCommandOperationalDatasetResponseID:
+            result = @"OperationalDatasetResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeWakeOnLANID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeChannelID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterChannelCommandChangeChannelResponseID:
+            result = @"ChangeChannelResponse";
+            break;
+
+        case MTRCommandIDTypeClusterChannelCommandProgramGuideResponseID:
+            result = @"ProgramGuideResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeTargetNavigatorID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterTargetNavigatorCommandNavigateTargetResponseID:
+            result = @"NavigateTargetResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMediaPlaybackID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterMediaPlaybackCommandPlaybackResponseID:
+            result = @"PlaybackResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeMediaInputID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeLowPowerID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeKeypadInputID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterKeypadInputCommandSendKeyResponseID:
+            result = @"SendKeyResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeContentLauncherID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterContentLauncherCommandLauncherResponseID:
+            result = @"LauncherResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAudioOutputID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeApplicationLauncherID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterApplicationLauncherCommandLauncherResponseID:
+            result = @"LauncherResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeApplicationBasicID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeAccountLoginID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterAccountLoginCommandGetSetupPINResponseID:
+            result = @"GetSetupPINResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeContentControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterContentControlCommandResetPINResponseID:
+            result = @"ResetPINResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeContentAppObserverID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterContentAppObserverCommandContentAppMessageResponseID:
+            result = @"ContentAppMessageResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeChimeID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeEcosystemInformationID:
+
+        switch (commandID) {
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeCommissionerControlID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterCommissionerControlCommandReverseOpenCommissioningWindowID:
+            result = @"ReverseOpenCommissioningWindow";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeUnitTestingID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestSpecificResponseID:
+            result = @"TestSpecificResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestAddArgumentsResponseID:
+            result = @"TestAddArgumentsResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestSimpleArgumentResponseID:
+            result = @"TestSimpleArgumentResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestStructArrayArgumentResponseID:
+            result = @"TestStructArrayArgumentResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UReverseResponseID:
+            result = @"TestListInt8UReverseResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestEnumsResponseID:
+            result = @"TestEnumsResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestNullableOptionalResponseID:
+            result = @"TestNullableOptionalResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestComplexNullableOptionalResponseID:
+            result = @"TestComplexNullableOptionalResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandBooleanResponseID:
+            result = @"BooleanResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandSimpleStructResponseID:
+            result = @"SimpleStructResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestEventResponseID:
+            result = @"TestEmitTestEventResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID:
+            result = @"TestEmitTestFabricScopedEventResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestBatchHelperResponseID:
+            result = @"TestBatchHelperResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandStringEchoResponseID:
+            result = @"StringEchoResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandGlobalEchoResponseID:
+            result = @"GlobalEchoResponse";
+            break;
+
+        case MTRCommandIDTypeClusterUnitTestingCommandTestDifferentVendorMeiResponseID:
+            result = @"TestDifferentVendorMeiResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    case MTRClusterIDTypeSampleMEIID:
+
+        switch (commandID) {
+
+        case MTRCommandIDTypeClusterSampleMEICommandAddArgumentsResponseID:
+            result = @"AddArgumentsResponse";
+            break;
+
+        default:
+            result = [NSString stringWithFormat:@"<Unknown commandID %d>", commandID];
+            break;
+        }
+        break;
+
+    default:
+        result = [NSString stringWithFormat:@"<Unknown clusterID %d>", clusterID];
+        break;
+    }
+
+    return result;
+}
+
 #pragma mark - Event IDs
 
 NSString * MTREventNameForID(MTRClusterIDType clusterID, MTREventIDType eventID)
diff --git a/src/darwin/Framework/CHIPTests/MTRClusterNamesTests.m b/src/darwin/Framework/CHIPTests/MTRClusterNamesTests.m
index a609e19..4ea8140 100644
--- a/src/darwin/Framework/CHIPTests/MTRClusterNamesTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRClusterNamesTests.m
@@ -38,6 +38,19 @@
     XCTAssertEqualObjects(MTRAttributeNameForID(MTRClusterIDTypeOnOffID, 12345678), @"<Unknown attributeID 12345678>");
 }
 
+- (void)testCommandNames
+{
+    XCTAssertEqualObjects(MTRRequestCommandNameForID(MTRClusterIDTypeOnOffID, MTRCommandIDTypeClusterOnOffCommandOnID), @"On");
+    XCTAssertEqualObjects(MTRRequestCommandNameForID(MTRClusterIDTypeOnOffID, MTRCommandIDTypeClusterOnOffCommandToggleID), @"Toggle");
+    XCTAssertEqualObjects(MTRRequestCommandNameForID(MTRClusterIDTypeGroupsID, MTRCommandIDTypeClusterGroupsCommandAddGroupID), @"AddGroup");
+    XCTAssertEqualObjects(MTRRequestCommandNameForID(12345678, 0), @"<Unknown clusterID 12345678>");
+    XCTAssertEqualObjects(MTRRequestCommandNameForID(MTRClusterIDTypeAccessControlID, 12345678), @"<Unknown commandID 12345678>");
+
+    XCTAssertEqualObjects(MTRResponseCommandNameForID(MTRClusterIDTypeGroupsID, MTRCommandIDTypeClusterGroupsCommandAddGroupResponseID), @"AddGroupResponse");
+    XCTAssertEqualObjects(MTRResponseCommandNameForID(12345678, 0), @"<Unknown clusterID 12345678>");
+    XCTAssertEqualObjects(MTRResponseCommandNameForID(MTRClusterIDTypeAccessControlID, 12345678), @"<Unknown commandID 12345678>");
+}
+
 - (void)testEventNames
 {
     XCTAssertEqualObjects(MTREventNameForID(MTRClusterIDTypeAccessControlID, MTREventIDTypeClusterAccessControlEventAccessControlEntryChangedID), @"AccessControlEntryChanged");