For ease of use, simplified versions of some traits are available for use with
the Automation API on Android.

A simplified trait stands in for a standard Home API trait, similar to how
the
[facade pattern](https://en.wikipedia.org/wiki/Facade_pattern)
works. Simplified traits provide commands that make common tasks easier for
certain device types. Simplified traits are Home API traits, and, like other
Home API traits, they work for both Matter and
Cloud-to-cloud devices.

A simplified trait offers an alternative subset of attributes and commands that
is more device-specific than those of the corresponding standard trait.
For example, the standard
[`LevelControl`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/LevelControl)
trait is a generic trait that can be used for any device that has a
setting that varies continuously across a range of numeric values.
[`Brightness`](https://developers.home.google.com/reference/kotlin/com/google/home/google/Brightness) is a
simplified trait that stands in for `LevelControl` and provides just the
commands and attributes that a
[`DimmableLight`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/DimmableLightDevice)
device requires. `Brightness` has a
[`moveToBrightness`](https://developers.home.google.com/reference/kotlin/com/google/home/google/Brightness#moveToBrightness(kotlin.UByte)) command that takes a single
`brightnessPercent` argument, whereas `LevelControl` has multiple `move`
commands, most of which have at least four parameters in order to accommodate a
wider range of use-cases.

The following table shows each simplified trait and the underlying
standard trait(s). Each trait name links to the corresponding API documentation:

| Simplified trait | Standard trait |
|---|---|
| [`SimplifiedThermostat`](https://developers.home.google.com/reference/kotlin/com/google/home/google/SimplifiedThermostat) | [`Thermostat`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/Thermostat) |
| [`Brightness`](https://developers.home.google.com/reference/kotlin/com/google/home/google/Brightness) | [`LevelControl`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/LevelControl) |
| [`SimplifiedOnOff`](https://developers.home.google.com/reference/kotlin/com/google/home/google/SimplifiedOnOff) | [`OnOff`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/OnOff) |
| [`Volume`](https://developers.home.google.com/reference/kotlin/com/google/home/google/Volume) | [`LevelControl`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/LevelControl) [`OnOff`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/OnOff) |
[*Table: Simplified traits*]

## Simplified traits and the Discovery API

The Discovery API reports simplified traits as well as their underlying
standard traits, as long as both traits were registered in the
[`FactoryRegistry`](https://developers.home.google.com/reference/kotlin/com/google/home/FactoryRegistry). For
example, if a `DimmableLight` device is present in the structure, and the
developer registered both the
[`LevelControl`](https://developers.home.google.com/reference/kotlin/com/google/home/matter/standard/LevelControl)
and
[`Brightness`](https://developers.home.google.com/reference/kotlin/com/google/home/google/Brightness) traits in
the `FactoryRegistry`, the Discovery API would indicate the presence of both
traits. The developer may choose to use either trait in their automation.

See [Discovery API on Android](https://developers.home.google.com/apis/android/automation/discovery) for more information.

## Retrieve a device that supports a simplified trait

When using the Device API to obtain devices in a structure that support a
simplified trait such as `SimplifiedThermostat`, you can't use the `has(trait)`
method. Instead, use the `has(deviceType)` method:  

```kotlin
val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }
```