Amazon Alexa

来自Jack's Lab
2018年11月18日 (日) 11:31Comcat (讨论 | 贡献)的版本

跳转到: 导航, 搜索
    1. Alexa discover process

Send UDP to: 239.255.255.250:1900

Alexa send UDP packet when 'discover devices':

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 15
ST: urn:schemas-upnp-org:device:basic:1
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 15
ST: urn:Belkin:device:**


  • Device response:*
  • ST* must be same as the received packet
HTTP/1.1 200 OK
EXT:
CACHE-CONTROL: max-age=86400
SERVER: Noduino/1.0 UPNP/1.1 OpenLight Controller/1.0
USN: uuid:38323636-4558-4dda-9188-cda0115b5050
ST: urn:Belkin:device:**
LOCATION: http://192.168.1.64:80/setup.xml


Then Alexa send HTTP GET request to http://192.168.1.64:80/setup.xml:

```http GET /setup.xml HTTP/1.1 Host: 192.168.1.81 Accept: */* ```


Device need to implement:

   GET /
   GET /setup.xml


    1. WEMO
      1. Turn On

```http POST /upnp/control/basicevent1 HTTP/1.1 Host: 192.168.1.69 Accept: */* Content-type: text/xml; charset="utf-8" SOAPACTION: "urn:Belkin:service:basicevent:1#SetBinaryState" Content-Length: 299

<?xml version="1.0" encoding="utf-8"?><s:Body><BinaryState>1</BinaryState></s:Envelope> ```

      1. Turn Off

```http POST /upnp/control/basicevent1 HTTP/1.1 Host: 192.168.1.69 Accept: */* Content-type: text/xml; charset="utf-8" SOAPACTION: "urn:Belkin:service:basicevent:1#SetBinaryState" Content-Length: 299

<?xml version="1.0" encoding="utf-8"?><s:Body><BinaryState>0</BinaryState></s:Envelope> ```

      1. Change Name

```http POST /upnp/control/basicevent1 HTTP/1.1 Host: 192.168.1.69 Accept: */* Content-type: text/xml; charset="utf-8" SOAPACTION: "urn:Belkin:service:basicevent:1#ChangeFriendlyName" Content-Length: 299

<?xml version="1.0" encoding="utf-8"?><s:Body><m:ChangeFriendlyName xmlns:m="urn:Belkin:service:basicevent:1"><FriendlyName>My Switch</FriendlyName></m:ChangeFriendlyName></s:Envelope> ```


It is the address and port specified by the UPnP protocol. Only one such listener is needed since it can send multiple responses, one for each switch, in response to a search request.

TCP listen on port 49153


    1. HUE
  • setup.xml*

```xml <root> <device> <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType> <friendlyName>Philips hue (%s)</friendlyName> <manufacturer>Royal Philips Electronics</manufacturer> <------- key <manufacturerURL>http://www.philips.com</manufacturerURL> <modelName>Philips hue bridge 2012</modelName> <------- it's also the key <modelNumber>929000226503</modelNumber> <modelURL>http://www.meethue.com</modelURL> <serialNumber>001788102201</serialNumber> <UDN>uuid:2f402f80-da50-11e1-9b23-001788102201</UDN> <presentationURL>index.html</presentationURL> </device></root> ```

```http GET /api/h632JhAtwDezSwGk3VKEeFn4snXZUjro9OoEvdur/lights HTTP/1.1 Host: 192.168.1.64 Accept: */* ```

```http GET /api/h632JhAtwDezSwGk3VKEeFn4snXZUjro9OoEvdur HTTP/1.1 Host: 192.168.1.64 Accept: */* ```


      1. Dim to 30%

```http PUT /api/h632JhAtwDezSwGk3VKEeFn4snXZUjro9OoEvdur/lights/0/state HTTP/1.1 Host: 192.168.1.53 Accept: */* Content-type: application/x-www-form-urlencoded Content-Length: 21

{"on": true,"bri":76} ```

      1. bright to 50%
  • Request:*

```http PUT /api/h632JhAtwDezSwGk3VKEeFn4snXZUjro9OoEvdur/lights/0/state HTTP/1.1 Host: 192.168.1.53 Accept: */* Content-type: application/x-www-form-urlencoded Content-Length: 22

{"on": true,"bri":127} ```


  • Response:*

```http HTTP/1.1 200 OK Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Content-type: application/json

[{"success": {"on": true}}, {"success": {"bri": 255}}] ```


      1. Turn on
  • Request:*

```http PUT /api/h632JhAtwDezSwGk3VKEeFn4snXZUjro9OoEvdur/lights/0/state HTTP/1.1 Host: 192.168.1.53 Accept: */* Content-type: application/x-www-form-urlencoded Content-Length: 12

{"on": true} ```


```http PUT /api/h632JhAtwDezSwGk3VKEeFn4snXZUjro9OoEvdur/lights/0/state HTTP/1.1 Host: 192.168.1.53 Accept: */* Content-type: application/x-www-form-urlencoded Content-Length: 13

{"on": false} ```

个人工具
名字空间

变换
操作
导航
工具箱