Smart Home ColorSpectrum Trait Schema
action.devices.traits.ColorSpectrum
- This trait belongs to any device
that is able to set a color spectrum. This applies to "full" color bulbs that take RGB color
ranges. Lights may have any combination of ColorSpectrum and
ColorTemperature; accent lights and LED strips may just have Spectrum,
whereas some reading bulbs just have Temperature. Basic bulbs, or dumb lights on smart plugs, have
neither.
Device ATTRIBUTES
Attribute |
Definition |
colorModel |
Optional. Can be set to string hsv to indicate device
preference for the HSV (hue, saturation, value) color model. Default is
rgb . |
Sample SYNC Request and Response
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.SYNC"
}]
}
'use strict';
const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');
const app = smarthome();
app.onSync((body, headers) => {
return {
requestId: body.requestId,
payload: {
agentUserId: '1836.15267389',
devices: [{
id: '123',
type: 'action.devices.types.LIGHT',
traits: [
'action.devices.traits.ColorSpectrum'
],
name: {
defaultNames: ['AAA bulb A19 color hyperglow'],
name: 'lamp1',
nicknames: ['reading lamp']
},
willReportState: true,
attributes: {
colorModel: 'rgb'
},
deviceInfo: {
manufacturer: 'AAA',
model: 'hg11',
hwVersion: '1.2',
swVersion: '5.4'
},
customData: {
fooValue: 12,
barValue: false,
bazValue: 'dancing alpaca'
}
}]
}
};
});
// ...
exports.smarthome = functions.https.onRequest(app);
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"agentUserId": "1836.15267389",
"devices": [
{
"id": "123",
"type": "action.devices.types.LIGHT",
"traits": [
"action.devices.traits.ColorSpectrum"
],
"name": {
"defaultNames": [
"AAA bulb A19 color hyperglow"
],
"name": "lamp1",
"nicknames": [
"reading lamp"
]
},
"willReportState": true,
"attributes": {
"colorModel": "rgb"
},
"deviceInfo": {
"manufacturer": "AAA",
"model": "hg11",
"hwVersion": "1.2",
"swVersion": "5.4"
},
"customData": {
"fooValue": 12,
"barValue": false,
"bazValue": "dancing alpaca"
}
}
]
}
}
Device STATES
State |
Definition |
color |
Object. Current color setting. Since a given light is in spectrum OR
temperature mode, this object includes the current color settings in the
relevant mode.
name String. If the color point (Spectrum or Temperature)
matches a preset name on the partner's color list, return the name.
spectrumRGB Integer. Spectrum value in RGB (hex value as
an integer).
|
Device COMMANDS
Command |
Parameters/Definition |
action.devices.commands.ColorAbsolute |
color Object. Required. Will include RGB or Temperature and
optionally, a name.
name String. Color name (in English) as provided in the
user's command. Not always available (for relative commands).
spectrumRGB Integer. Spectrum value in RGB (hex value as
an integer).
|
Sample EXECUTE Request and Response
Set my light to red.
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.EXECUTE",
"payload": {
"commands": [{
"devices": [{
"id": "123",
"customData": {
"fooValue": 74,
"barValue": true,
"bazValue": "sheepdip"
}
}],
"execution": [{
"command": "action.devices.commands.ColorAbsolute",
"params": {
"color": {
"name": "red",
"spectrumRGB": 16711680
}
}
}]
}]
}
}]
}
'use strict';
const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');
const app = smarthome();
app.onExecute((body, headers) => {
return {
requestId: body.requestId,
payload: {
commands: [{
ids: ['123'],
status: 'SUCCESS',
states: {
color: {
name: 'red',
spectrumRGB: 12655639
}
}
}]
}
};
});
// ...
exports.smarthome = functions.https.onRequest(app);
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"commands": [
{
"ids": [
"123"
],
"status": "SUCCESS",
"states": {
"color": {
"name": "red",
"spectrumRGB": 12655639
}
}
}
]
}
}
Other example invocations include the following:
- Set my lights to green.
- Change my desk lamp to red.