Many types of devices can be grouped into a
class, e.g. Sockets, Lights, Locks, Thermostats etc. While there are many different devices available, most of them share the same basic characteristics.
For example, a socket can always be turned on or off, and sometimes dimmed. Another example would be that a thermostat can always set a target temperature and often read the current temperature as well.
Most of these devices have been grouped in Homey within a
class. Use the Reference to view which classes are supported already.
A class is a collection of:
- Mobile Cards
- Flow Cards
- Speech Input
Upon creating your driver, it's possible to extend these basic behaviors with device-specific Capabilities, Mobile Cards, Flow cards or Speech. Yet the most common ones have already been made, for consistency and to ease development.
A class has a specific set of capabilities assigned, which are the capabilities this class already knows Flow Cards, Speech or Mobile Cards for.
Upon pairing, or in your app's
/app.json, you can define a subset of these capabilities. Read more at Capabilities.
By default, a class has a mobile card defined, which will be automatically generated based upon the available capabilities of the device. For example, if a class
light has support for
light_temperature, but your device only supports
dim, then the mobile card will only show two components: an icon for
onoff and a slider for
The device class
other has no mobile card defined, thus you're required to provide your own.
You can overwrite the class's mobile card by providing a
mobile property during pairing or in your
/app.json. Read more at Mobile.
When providing properties upon pairing, they take priority over
/app.json, which in turn takes priority over the class.
When providing properties upon pairing, they are saved and cannot be changed later. Properties in the
/app.jsoncan be updated when the app is updated.
Similar to mobile cards, a class has a set of default Flow cards, based upon the available capabilities. These cannot be overwritten, but additional cards can be added by defining them in your
/app.json. Read more at Devices.
Devices with a class will automatically listen for speech events. For example, when the user says Turn off all lights, every device with the class
light and capability
onoff will receive a
onoff: false command.
Extending speech for devices is also possible. Read more at Speech.