diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 91ceabe5dcbdef..3a6187874db2b0 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -1079,7 +1079,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
index fd7ef67ad59ac9..43de928aba7937 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
@@ -7064,7 +7064,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -7080,7 +7080,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter
index 9ecbdb2e53c637..8d49b997c2b5ce 100644
--- a/examples/bridge-app/bridge-common/bridge-app.matter
+++ b/examples/bridge-app/bridge-common/bridge-app.matter
@@ -649,7 +649,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
index d6f7642b2e2d85..ad451cc40b47d2 100644
--- a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
+++ b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
@@ -310,7 +310,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
index 0ec432e3e20dad..6f315142dee3bf 100644
--- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
+++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
@@ -310,7 +310,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
index 9a087e66d8fb00..ed1cad3db868eb 100644
--- a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
+++ b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
@@ -310,7 +310,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap
index c7ba8b78616a09..f844ff02c238a1 100644
--- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap
+++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap
@@ -3037,7 +3037,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -3053,7 +3053,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap
index e4abf0e13b53ad..a2239be9ab987b 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap
@@ -3596,7 +3596,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -3612,7 +3612,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter
index edba1ad9aea96e..2b18f41c2b593c 100644
--- a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter
+++ b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter
@@ -398,7 +398,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index 3d8f9135409136..3475e909bbd04c 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -1023,7 +1023,7 @@ client cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute optional TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) optional TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1047,7 +1047,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap
index 39b1315aee410e..0dbe7077a0b98e 100644
--- a/examples/placeholder/linux/apps/app1/config.zap
+++ b/examples/placeholder/linux/apps/app1/config.zap
@@ -8760,7 +8760,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -8776,7 +8776,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -8792,7 +8792,7 @@
"code": 2,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "ScheduleProgrammingVisibilityEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index 284ec9f396972b..9ecc3de607745d 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -1006,7 +1006,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap
index 3417feb3df0ecc..725e63e1c64cdc 100644
--- a/examples/placeholder/linux/apps/app2/config.zap
+++ b/examples/placeholder/linux/apps/app2/config.zap
@@ -8834,7 +8834,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -8850,7 +8850,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -8866,7 +8866,7 @@
"code": 2,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "ScheduleProgrammingVisibilityEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter
index cdc214bc3ddc4c..4352e13bf71d13 100644
--- a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter
+++ b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter
@@ -265,7 +265,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter
index fbbef00508c2e9..74c4af426c3abc 100644
--- a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter
+++ b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter
@@ -414,7 +414,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
index 10116d1df8f824..0120c82d54af9d 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
@@ -722,7 +722,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
index eac0acc054d276..c97af9e72e22da 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
@@ -722,7 +722,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter
index 0d67cab366993b..82dff269065247 100644
--- a/examples/thermostat/thermostat-common/thermostat.matter
+++ b/examples/thermostat/thermostat-common/thermostat.matter
@@ -596,7 +596,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap
index 0bdc55a361912c..fef78b92cbb186 100644
--- a/examples/thermostat/thermostat-common/thermostat.zap
+++ b/examples/thermostat/thermostat-common/thermostat.zap
@@ -4964,7 +4964,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -4980,7 +4980,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter
index b8b3d3e3e3fb12..ecee6e792e42bb 100644
--- a/examples/tv-app/tv-common/tv-app.matter
+++ b/examples/tv-app/tv-common/tv-app.matter
@@ -528,7 +528,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
index 89c8d5a41a4902..eb90d7d576e809 100644
--- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
+++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
@@ -630,7 +630,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
index d2f419d1711a31..0ac18cb306965c 100644
--- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
+++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
@@ -666,7 +666,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/scripts/tools/zap/tests/inputs/all-clusters-app.zap b/scripts/tools/zap/tests/inputs/all-clusters-app.zap
index 7cfd95cc9aa97f..fbff9c8e36435b 100644
--- a/scripts/tools/zap/tests/inputs/all-clusters-app.zap
+++ b/scripts/tools/zap/tests/inputs/all-clusters-app.zap
@@ -10346,7 +10346,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -10362,7 +10362,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -10378,7 +10378,7 @@
"code": 2,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "ScheduleProgrammingVisibilityEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
diff --git a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/access.h b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/access.h
index 5403f99d2c747e..c1e762de1b2526 100644
--- a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/access.h
+++ b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/access.h
@@ -234,6 +234,7 @@
0x0000002B, /* Cluster: Localization Configuration, Attribute: ActiveLocale, Privilege: manage */ \
0x0000002C, /* Cluster: Time Format Localization, Attribute: HourFormat, Privilege: manage */ \
0x0000002C, /* Cluster: Time Format Localization, Attribute: ActiveCalendarType, Privilege: manage */ \
+ 0x0000002D, /* Cluster: Unit Localization, Attribute: TemperatureUnit, Privilege: manage */ \
0x00000030, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
0x00000031, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
0x0000003F, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -292,6 +293,7 @@
0x00000000, /* Cluster: Localization Configuration, Attribute: ActiveLocale, Privilege: manage */ \
0x00000000, /* Cluster: Time Format Localization, Attribute: HourFormat, Privilege: manage */ \
0x00000001, /* Cluster: Time Format Localization, Attribute: ActiveCalendarType, Privilege: manage */ \
+ 0x00000000, /* Cluster: Unit Localization, Attribute: TemperatureUnit, Privilege: manage */ \
0x00000000, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
0x00000004, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
0x00000000, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -350,6 +352,7 @@
kMatterAccessPrivilegeManage, /* Cluster: Localization Configuration, Attribute: ActiveLocale, Privilege: manage */ \
kMatterAccessPrivilegeManage, /* Cluster: Time Format Localization, Attribute: HourFormat, Privilege: manage */ \
kMatterAccessPrivilegeManage, /* Cluster: Time Format Localization, Attribute: ActiveCalendarType, Privilege: manage */ \
+ kMatterAccessPrivilegeManage, /* Cluster: Unit Localization, Attribute: TemperatureUnit, Privilege: manage */ \
kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/src/app/zap-templates/zcl/data-model/chip/unit-localization-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/unit-localization-cluster.xml
index 22dfff577636f7..febb19ed595e36 100644
--- a/src/app/zap-templates/zcl/data-model/chip/unit-localization-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/unit-localization-cluster.xml
@@ -35,7 +35,10 @@ limitations under the License.
mechanism by which they can be configured to use a user’s preferred unit.
- TemperatureUnit
+
+ TemperatureUnit
+
+
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 841c4cba61e5de..bd67674e0366e1 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -1162,7 +1162,7 @@ client cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute optional TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) optional TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;