Alexa.HumiditySensor Interface 3.0
Implement the Alexa.HumiditySensor
interface in your Alexa skill for devices that sense humidity, such as thermostats. Typically you use the Alexa.HumiditySensor
interface in conjunction with the Alexa.TemperatureSensor
interface. For more details about Smart Home skills, see Understand Smart Home Skills.
For the list of languages that the Alexa.HumiditySensor
interface supports, see List of Alexa Interfaces and Supported Languages. For the definitions of the Alexa message properties, see Alexa Interface Message and Property Reference.
Utterances
The Alexa.HumiditySensor
interface doesn't have any user utterances.
Reportable properties
The Alexa.HumiditySensor
interface uses the relativeHumidity
property as the primary property. You identify that you support the property in your discovery response. The property is defined as a number (double) between 0 and 100, inclusive.
Discovery
You describe endpoints that support the Alexa.HumiditySensor
interface by using the standard discovery mechanism described in Alexa.Discovery
.
Set retrievable
to true
for the properties that you report when Alexa sends your skill a state report request. Set proactivelyReported
to true
for the properties that you proactively report to Alexa in a change report.
Use a display category that's appropriate for your device, such as TEMPERATURE_SENSOR
. For the full list of display categories, see display categories.
Sensor devices must also implement Alexa.EndpointHealth
.
Discover response example
The following example shows an Alexa.Discover.Response
message for a device that supports the Alexa.HumiditySensor
interface.
{
"event": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover.Response",
"payloadVersion": "3",
"messageId": "Unique identifier, preferably a version 4 UUID"
},
"payload": {
"endpoints": [{
"endpointId": "Unique ID of the endpoint",
"manufacturerName": "Manufacturer name of the endpoint",
"description": "Description to be shown in the Alexa app",
"friendlyName": "Weather station",
"displayCategories": ["TEMPERATURE_SENSOR"],
"additionalAttributes": {
"manufacturer": "Manufacturer name of the endpoint",
"model": "Model of the device",
"serialNumber": "Serial number of the device",
"firmwareVersion": "Firmware version of the device",
"softwareVersion": "Software version of the device",
"customIdentifier": "Optional custom identifier for the device"
},
"capabilities": [{
"type": "AlexaInterface",
"interface": "Alexa.HumiditySensor",
"version": "3.0",
"properties": {
"supported": [{
"name": "relativeHumidity"
}],
"proactivelyReported": true,
"retrievable": true
}
},
{
"type": "AlexaInterface",
"interface": "Alexa.TemperatureSensor",
"version": "3",
"properties": {
"supported": [{
"name": "temperature"
}],
"proactivelyReported": true,
"retrievable": true
}
},
{
"type": "AlexaInterface",
"interface": "Alexa.EndpointHealth",
"version": "3.2",
"properties": {
"supported": [{
"name": "connectivity"
}],
"proactivelyReported": true,
"retrievable": true
}
},
{
"type": "AlexaInterface",
"interface": "Alexa",
"version": "3"
}
]
}]
}
}
}
Directives
The Alexa.HumiditySensor
interface doesn't define any directives.
State reporting
Alexa sends a ReportState
directive to request information about the state of an endpoint. When Alexa sends a ReportState
directive, you send a StateReport
event in response. The response contains the current state of all the retrievable properties in the context object. You identify your retrievable properties in your discovery response. For details about state reports, see Understand State and Change Reporting.
StateReport response example
{
"event": {
"header": {
"namespace": "Alexa",
"name": "StateReport",
"messageId": "a unique identifier, preferably a version 4 UUID",
"correlationToken": "an opaque correlation token that matches the request",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "an OAuth2 bearer token"
},
"endpointId": "endpoint ID"
},
"payload": {}
},
"context": {
"properties": [{
"namespace": "Alexa.HumiditySensor",
"name": "relativeHumidity",
"value": {
"value": 89.0
},
"timeOfSample": "2023-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 0
},
{
"namespace": "Alexa.TemperatureSensor",
"name": "temperature",
"value": {
"value": 19.9,
"scale": "CELSIUS"
},
"timeOfSample": "2023-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 0
},
{
"namespace": "Alexa.EndpointHealth",
"name": "connectivity",
"value": {
"value": "OK"
},
"timeOfSample": "2023-02-03T16:20:50Z",
"uncertaintyInMilliseconds": 1000
}
]
}
}
Change reporting
You send an Alexa.ChangeReport
event to report changes proactively in the state of an endpoint. You identify the properties that you proactively report in your discovery response.
For details about change reports, see Understand State and Change Reporting.
ChangeReport event example
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ChangeReport",
"messageId": "a unique identifier, preferably a version 4 UUID",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "an OAuth2 bearer token"
},
"endpointId": "endpoint ID"
},
"payload": {
"change": {
"cause": {
"type": "PERIODIC_POLL"
},
"properties": [{
"namespace": "Alexa.HumiditySensor",
"name": "relativeHumidity",
"value": {
"value": 92.5
},
"timeOfSample": "2023-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 0
}]
}
}
},
"context": {
"properties": [{
"namespace": "Alexa.TemperatureSensor",
"name": "temperature",
"value": {
"value": 19.9,
"scale": "CELSIUS"
},
"timeOfSample": "2023-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 0
},
{
"namespace": "Alexa.EndpointHealth",
"name": "connectivity",
"value": {
"value": "OK"
},
"timeOfSample": "2022-06-03T16:20:50Z",
"uncertaintyInMilliseconds": 0
}
]
}
}
Related topics
Last updated: frontmatter-missing