We’re excited to introduce the Wake-on-LAN Controller, which enables customers to use Alexa to power on smart devices that have gone into a low power mode and cannot be woken up via the cloud. Now, whenever a customer wants to power on a smart device, typically a TV or other entertainment equipment, that has gone into low power mode using only voice, they can simply say, "Alexa, turn on my TV.” The associated smart home skill then uses the Wake-on-LAN Controller to send a directive to a customer’s Echo devices, resulting in a Wake-on-LAN (WoL) packet being broadcast over the customer's local area network (LAN) or WiFi. Although device makers can already use the Alexa Smart Home API to control TVs and other equipment, until today customers were often not able to power on devices in low power mode. We have now delivered an alternative that can help power on devices, without requiring device makers to make hardware changes.
Using the Wake-on-LAN Controller has three main benefits:
As a device maker, if you want to use WoL to power on your devices, your devices must support WoL protocol, and you need to follow these steps:
1. Build an Alexa smart home skill: Your Alexa skill will be used to send commands that will enable you to accept Alexa commands such as Turn on TV, Volume up on TV and you can execute these requests on customer devices.
2. Add the Wake-on-LAN Controller interface to your skill: Implement the WakeOnLANController interface and PowerController interface in your skill. When Alexa send you a discovery request, in the WakeOnLANController configuration object, you provide the device’s MAC address. This helps Alexa understand that the device the customer intends to control supports Wake-on-LAN. When a customer asks “Alexa, turn on TV”, then Alexa will send you a Turn on Directive which is part of PowerController capability of the skill. As with existing Alexa.Discovery directives, the Discover.Response event containing the MAC Address configuration is sent securely through an Alexa Smart Home Lambda event source.
{
"type": "AlexaInterface",
"interface": "Alexa.WakeOnLANController",
"version": "3",
"properties": {},
"configuration": {
"MACAddresses": [
"00.14.22.01.23.45"
]
}
3. Send a deferred response: Once you have identified that the device needs to be woken up by the cloud, send a deferred response to Alexa. This indicates that a message will be sent to event gateway for Wake-on-LAN Controller execution.
{
"event": {
"header": {
"namespace": "Alexa",
"name": "DeferredResponse",
"messageId": "abc-123-def-456",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
"payloadVersion": "3"
},
"payload": {
"estimatedDeferralInSeconds": 7
}
}
}
4. Send events to the Alexa gateway: Your skill will send a wake up event to the Alexa events gateway. Alexa will then process this event and broadcast Wake-on-LAN packets, via the Echo devices in the customer’s account, using the MAC address that you provided during the discovery response for the device.
{
"context": {
"properties": [ {
"namespace": "Alexa.PowerController",
"name": "powerState",
"value": "OFF",
"timeOfSample": "2017-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 500
} ]
},
"event": {
"header": {
"namespace": "Alexa.WakeOnLANController",
"name": "WakeUp",
"payloadVersion": "3",
"messageId": "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-Amazon"
},
"endpointId": "appliance-001"
},
"payload": {}
}
}
5. Send a change report event: Monitor the status of device and send a change report event to the Alexa event gateway when the TV powers on.
VIZIO, LG, and Hisense TVs have adopted this feature and will be rolling it out to their customers in the next several months. We are looking forward to seeing your response to these new capabilities. To learn more about the Wake-on-LAN Controller, see our technical documentation.