Device Profiles
A Device Profile is a blueprint that defines a device and its features on the SmartThings platform. It includes one or more Components, with each Component grouping specific Capabilities (e.g., switch
, motionSensor
) that represent the device’s functions. Device Profiles also include metadata (ID, name, ownership, Device Presentation, and more) that can define how a device on the SmartThings platform behaves and appears. Device Profiles are shareable and reusable across multiple devices.
Below is an abstracted visual organization of a Device Profile:
Device Profile
├── Components
│ ├── Capabilities
│ └── Categories
├── Metadata
├── Preferences (optional)
└── Owner
Depending on your device type, you may need to associate your device with a Device Profile:
- Hub Connected Devices are backed by SmartThings Edge Drivers. These devices use "implicit profiles" and do not require you to create a Device Profile. Instead, associate your device with a pre-made Edge Driver. Advanced users may elect to build a custom Edge Driver.
- Cloud Connected Devices are backed by SmartThings Schema. These devices use Device Handler Types (DHTs). A DHT is a pre-made blueprint for a Cloud Connected Device. If your device features are not represented by a pre-made DHT, you can use a Device Profile for your device.
- Direct Connected Devices are backed by Device Profiles. You will need to associate your device with an appropriate Device Profile. The Developer Center offers an interactive UI to help you create and associate your device with a Device Profile.
- Mobile Connected Devices are backed by Device Profiles.
Components
Components are used to include and group Capabilities in a Device Profile. A Device Profile must have at least one Component. This Component is named main
by convention for all profiles with a single Component. Each Component must include at least one Capability:
{
"id": "<Device-Profile-ID-Here>",
"name": "sample",
"components": [
{
"label": "main",
"id": "main",
"capabilities": [
{
"id": "accelerationSensor",
"version": 1
}
],
"categories": []
}
],
"metadata": {
"vid": "sample",
"deviceType": "AirConditioner",
"ocfDeviceType": "oic.d.airconditioner",
"mnmn": "fNTD",
"deviceTypeId": "AirConditioner",
"ocfSpecVer": "core 1.1.0",
"mnid": "fNTD",
"mnId": "fNTD"
},
"status": "DEVELOPMENT",
"preferences": [],
"owner": {
"ownerType": "USER",
"ownerId": "<Owner-ID-Here>"
}
}
Using multiple components is suggested when the Device is separated into different endpoints that use the same Capability. A Capability cannot be added more than once in a single component (e.g. a 3-gang Switch).
Each component appears separate and is labeled in the Device's Detail View so you can identify its status.
Categories
categories
is a required parameter that helps define what kind of device is being interacted with. SmartThings has an expanding list of device categories that work with our platform.
Below is a list of currently supported categories. The platform provides a default icon based on the category specified for the device.
- AirConditioner
- AirPurifier
- AirQualityDetector
- AirpurifyHumidifier
- AvEdge
- BathroomHeater
- Battery
- Bed
- Bidet
- Blind
- BloodGlucoseMonitor
- BloodPressureMonitor
- BluRayPlayer
- BluetoothTracker
- Bluetoothcarspeaker
- Bridges
- Button
- Camera
- Car
- CatToilet
- Charger
- ChlorineSensor
- ClothingCareMachine
- CoffeeMaker
- ContactSensor
- Cooktop
- CubeRefrigerator
- CurbPowerMeter
- CyclingSensor
- Dehumidifier
- DeliveryRobot
- Dishwasher
- Door
- DoorBell
- Dryer
- Earbuds
- EdgeAI
- ElectricVehicleCharger
- Elevator
- Elliptical
- EnvironmentSensor
- Fan
- Faucet
- Feeder
- FitnessMat
- Flashlight
- FlowSensor
- GarageDoor
- GasMeter
- GasValve
- GenericSensor
- HealthTracker
- HeatPump
- Heatedmattresspad
- HeatingCoolingMat
- HomeRobot
- HomeTheater
- Hub
- Humidifier
- HumiditySensor
- IndoorCycle
- IrRemote
- Irrigation
- KimchiRefrigerator
- KitchenHood
- LeakSensor
- Light
- LightSensor
- MedicalThermometer
- MicroFiberFilter
- Microwave
- Mobile
- MobilePresence
- MotionSensor
- MultiFunctionalSensor
- MusicSystem
- NetworkAudio
- Networking
- Others
- Oven
- PanicButton
- PhSensor
- Pillow
- PlantGrower
- PowerMeasurementSensor
- PresenceSensor
- Printer
- PrinterMultiFunction
- Projector
- Pump
- RainSensor
- Range
- Receiver
- Refrigerator
- RemoteController
- RiceCooker
- RobotCleaner
- Rower
- Safe
- ScaleToMeasureMassOfHumanBody
- Scanner
- SecurityPanel
- SetTop
- Shade
- Ship
- Shoes
- ShoesCareMachine
- Shower
- Siren
- SmartLock
- SmartMonitor
- SmartPlug
- SmokeDetector
- SolarPanel
- SoundBar
- SoundMachine
- SoundSensor
- Speaker
- StairClimber
- StepMachine
- StickVacuumCleaner
- Storage
- Stove
- Switch
- TagReader
- Television
- TempHumiditySensor
- TempSensor
- Thermostat
- Toilet
- TowelRack
- Tracker
- Treadmill
- UPnPMediaRenderer
- Vent
- VisionSensor
- VoiceAssistance
- Washer
- WaterFreezeDetector
- WaterHeater
- WaterPurifier
- WaterValve
- WeatherStation
- WiFiRouter
- Window
- WindowOpener
- WineCellar
- ZoneSensor
Create a Device Profile
You can create a new Device Profile using the SmartThings CLI. Here you can create, retrieve, update, and delete Device Profiles. The Device Profiles API can also be used to interact with and maintain Device Profiles.
Alternatively, you can use the SmartThings CLI to create, retrieve, update, and delete Device Profiles. The Device Profiles API can also be used to interact with and maintain Device Profiles.