Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alexa Smart Home Skill

3,747 views

Published on

Introduction of Alexa Smart Home Skill

Published in: Software
  • Login to see the comments

Alexa Smart Home Skill

  1. 1. Alexa Smart Home Skill JAWS-UG IoT専門支部 IoTサロン 2016-11 合同開催スペシャル
  2. 2. @sparkgene 市川 純 (Jun Ichikawa) favorite services: Route 53、Lambda、AWS IoT Recruit Marketing Partners infrastructure engineer
  3. 3. Alexa Skill types • Custom Interaction Model(Custom Skill) • Smart Home Skill • Flash Briefing Skill
  4. 4. Custom Skill • Build a skill with a custom interaction model • Customers say invocation name to use it. “Alexa, ask Uber to request a ride” • Most flexible, but most complex to customers.
  5. 5. Smart Home Skill • Easy to use for customer. • Customers say “Alexa, turn on living room lights” • This skill is for cloud connected smart home devices.
  6. 6. Flash Briefing Skill • It can be integrated into "Alexa Flash Briefing” • Customers can simply ask “Alexa, what’s my Flash Briefing” to hear your content • Currently Flash Briefing is only available for the English (U.S.) language
  7. 7. DIFFERENCE BETWEEN CUSTOM SKILL
  8. 8. Custom Skill • design your own interaction model • interaction name is required • customer need to remember interaction name or invocation phrase • you can use any server to host skill
  9. 9. Smart Home Skill • built-in interaction model • natural utterances to control device • Alexa need a grant permissions (OAuth) to retrieve device information and control device • Skill must use AWS Lambda function
  10. 10. Mange devices on cloud Customer need to register their devices to the device makers cloud.
  11. 11. On personal use, you don’t need to register devices. Just hard code in your lambda function.
  12. 12. HOW TO MAKE IT
  13. 13. Demo Video https://youtu.be/nT20o2uv2h0
  14. 14. demo’s architecture this slide explain only here see here to create custom skill version architecture https://www.hackster.io/sparkgene/alexa-makes-home-smarter-7e1981
  15. 15. Prerequisites to Smart Home Skill Development • Amazon developer account – https://developer.amazon.com/ • AWS account • Knowledge of Java, Node.js, or Python as Lambda functions can be written in any of these language • A basic understanding of OAuth 2.0
  16. 16. Three steps to create Skill • Create “Login With Amazon”(LWA) security profile • register Smart Home Skills • Create Lambda function step-by-step article ・https://developer.amazon.com/public/solutions/alexa/alexa-skills- kit/docs/steps-to-create-a-smart-home-skill ・http://qiita.com/sparkgene/items/055d7864c92a80b0c040
  17. 17. Create Login With Amazon https://developer.amazon.com/home.html
  18. 18. • enter “Allowed Return URLs” in the Web Settings after register skill Account Linking.
  19. 19. register Smart Home Skills https://developer.amazon.com/edw/home.html#/skill/create/ • Update “End point” after creating lambda function
  20. 20. Account Linking https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to- create-a-smart-home-skill#finish-registering-your-skill-in-the-developer-portal • To finish registering your skill, you must configure OAuth 2.0 for your skill, which is used for account linking. You can use Login with Amazon or another provider for this section. • Use “Redirect URL” to allow redirect at OAuth provider
  21. 21. Authoization URL: https://www.amazon.com/ap/oa?redirect_uri=https://pitangui.amazon.com/api/skill/link/<ID>
  22. 22. Create Lambda function • Alexa skill is only available on us-east- 1 and eu-west-1 region • Node.js blue print is available – alexa-smart-home-skill-adapter
  23. 23. Smart Home Skill API • Smart Home Skill API communicate with your skill(skill adapter) with same basic structure. • Skill adapter directives contain two top-level objects – header – payload
  24. 24. "header": { "messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2", "name": "DiscoverAppliancesRequest", "namespace": "Alexa.ConnectedHome.Discovery", "payloadVersion": "2” }, "payload": { "accessToken": "OAuth Token here" } header and payload accessToken always include in request. use the access token to know who’s request.
  25. 25. DiscoverAppliancesRequest The request come on • When you say “Alexa, discover devices” • hourly after your device register on Alexa (device health check)
  26. 26. { "header": { "messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2", "name": "DiscoverAppliancesRequest", "namespace": "Alexa.ConnectedHome.Discovery", "payloadVersion": "2" }, "payload": { "accessToken": "OAuth Token here" } }
  27. 27. DiscoverAppliancesResponse { "header": { "messageId": "ff746d98-ab02-4c9e-9d0d-b44711658414", "name": "DiscoverAppliancesResponse", "namespace": "Alexa.ConnectedHome.Discovery", "payloadVersion": "2" }, "payload": { "discoveredAppliances": [] } }
  28. 28. discoveredAppliances "discoveredAppliances": [ { "actions": [ ”turnOn", ”turnOff” ], "additionalApplianceDetails": { "extraDetail1": "optionalDetailForSkillAdapterToReferenceThisDevice” }, "applianceId": "unique Device Id", "friendlyDescription": "description that is shown to customer", "friendlyName": " Bedroom Light", "isReachable": true, "manufacturerName": "your Manufacturer Name", "modelName": "fancyThermostat", "version": "your software version number here." } ] The action which device support
  29. 29. actions • turnOff – “Alexa, turn off the <device name>” • turnOn – “Alexa, turn on the <device name>” • setTargetTemperature – “Alexa, set the <room name> to <number> degrees” • incrementTargetTemperature – “Alexa, increase the <device name> by <number> degrees” • decrementTargetTemperature – “Alexa, decrease <device name> by <number> degrees” • setPercentage – “Alexa, set <name> to <number> percent” • incrementPercentage – “Alexa, increase <device name> by <number> percent” • decrementPercentage – “Alexa, decrease <device name> by <number> percent”
  30. 30. TurnOnRequest { "header": { "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688", "name": "TurnOnRequest", "namespace": "Alexa.ConnectedHome.Control", "payloadVersion": "2" }, "payload": { "accessToken": "[OAuth Token here]", "appliance": { "additionalApplianceDetails": {}, "applianceId": "[Device ID for Ceiling Fan]" } } }
  31. 31. TurnOnConfirmation { "header": { "messageId": "26fa11a8-accb-4f66-a272-8b1ff7abd722", "name": "TurnOnConfirmation", "namespace": "Alexa.ConnectedHome.Control", "payloadVersion": "2" }, "payload": {} }
  32. 32. Error Response • TargetOfflineError – target device is not connected to the customer’s device cloud or is not on. • BridgeOfflineError – target device is connected to a home automation hub or bridge, which is powered off. • NoSuchTargetError – target device cannot be found, meaning it was never configured by the end- user. • ExpiredAccessTokenError – the access token used for authentication has expired and is no longer valid. • ValueOutOfRangeError – customer request would set a target value to a value out of its supported range. • and more.. skill adapter should respond with the appropriate error type, and supporting information
  33. 33. ValueOutOfRangeError { "header":{ "namespace":"Alexa.ConnectedHome.Control", "name":" ValueOutOfRangeError", "payloadVersion":"2", "messageId":"697fe957-c842-4545-a159-8a8c75fbe5bd" }, "payload":{ "minimumValue":15.0, "maximumValue":30.0 } }
  34. 34. DISCOVERY DEMO - enable skill - Login with Amazon - discover device - Turn on request
  35. 35. Questions?
  36. 36. appendix • slide demo skill – https://github.com/sparkgene/smart_ho me_skill/blob/master/aws_iot_device.py • Raspbery Pi setup guide for the demo – https://www.hackster.io/sparkgene/alexa -makes-home-smarter-7e1981

×