IoT Platform admite la conexión de dispositivos mediante HTTPS. Los dispositivos se autentican para obtener un token y luego lo usan para reportar datos.
Uso y límites
-
La comunicación HTTPS solo es compatible en las regiones China (Shanghai)
, China (Beijing) y China (Shenzhen)
.
Solo la región China (Shanghai) admite conexiones HTTPS de corta duración. Los estados de conexión y desconexión de los dispositivos son visibles en la consola de IoT Platform. Suscríbase a los cambios de estado del dispositivo mediante suscripciones del lado del servidor AMQP.
Solo los dispositivos conectados directamente pueden comunicarse mediante HTTPS. No se admiten dispositivos gateway ni subdispositivos.
Diseñado para el reporte simple de datos. La carga útil de subida tiene un límite de 128 KB.
Los topics siguen el MQTT topic format y pueden reutilizarse desde conexiones MQTT. Para reportar datos, envíe una solicitud POST a
${endpoint}/topic/${topic}. No se admiten parámetros de cadena de consulta (?query_String=xxx).Las conexiones HTTPS solo admiten el método de solicitud POST.
El token de autenticación tiene una validez de siete días. Su aplicación debe gestionar la caducidad del token y la reautenticación.
Flujo de conexión
El flujo de conexión consta de dos pasos: autenticar el dispositivo para obtener un token y usar dicho token para reportar datos.
-
Autentique el dispositivo para obtener un token.
Solicitud de autenticación del dispositivo:
POST /auth HTTP/1.1 Host: ${YourEndpoint} Content-Type: application/json Content-Length: 214 body: {"version":"default","clientId":"mylight1000002","signmethod":"hmacsha1","sign":"4870141D4067227128CBB4377906C3731CAC221C","productKey":"ZG1EvTE****","deviceName":"NlwaSPXsCpTQuh8FxBGH","timestamp":"1501668289957"}Tabla 1. Descripción de parámetros
Parámetro Descripción Method Método de solicitud. Solo se admite POST. URL URL. Solo HTTPS. Valor: /auth. Host El endpoint HTTP. Obtenga el endpoint en View and configure instance endpoints. Content-Type Formato de codificación de datos. Solo se admite application/json. Otros formatos devuelven un error de parámetro. Content-Length Longitud del cuerpo (body) del mensaje HTTP. Importante- HTTP/1.1+ incluye Content-Length de forma predeterminada; HTTP/1.0 no lo hace. Incluya el campo Content-Length al autenticarse mediante HTTP.
- El valor de Content-Length debe coincidir exactamente con la longitud del body. Una discrepancia provoca que el análisis sintáctico del body falle y que la autenticación sea rechazada.
body Información de autenticación del dispositivo en formato JSON. Los parámetros se describen en la tabla body parameters. Tabla 2. Parámetros del body
Nombre del campo Obligatorio Descripción productKey Sí ProductKey del dispositivo. Encuéntrelo en la página Device Details de la instancia correspondiente. deviceName Sí Nombre del dispositivo. Encuéntrelo en la página Device Details de la consola de IoT Platform. clientId Sí Identificador del cliente. Máximo de 64 caracteres. Use una dirección MAC o un número de serie (SN) como clientId. timestamp No Marca de tiempo en milisegundos transcurridos desde el 1 de enero de 1970 (UTC). La solicitud caduca 15 minutos después de esta marca de tiempo. sign Sí Firma. Formato de la firma:
hmacmd5(DeviceSecret,content).content comprende todos los parámetros (excepto version, sign y signmethod) ordenados alfabéticamente y concatenados sin delimitadores.
Ejemplo de firma:
Dados clientId = 127.0.0.1, deviceName = http_test, productKey = a1FHTWxQ**, timestamp = 1567003778853, signmethod = hmacmd5, deviceSecret = 89VTJylyMRFuy2T3sywQGbm5Hmk1**, la firma es:
hmacmd5("89VTJylyMRFuy2T3sywQGbm5Hmk1**","clientId127.0.0.1deviceNamehttp_testproductKeya1FHTWxQ**timestamp1567003778853").toHexString();La función
toHexString()convierte datos binarios en una cadena hexadecimal sin distinción entre mayúsculas y minúsculas. Por ejemplo, la matriz decimal [60 68 -67 -7 -17 99 30 69 117 -54 -58 -58 103 -23 113 71] se convierte en: 3C44BDF9EF631E4575CAC6C667E97147.signmethod No Algoritmo de firma. Valores válidos: hmacmd5, hmacsha1. Predeterminado: hmacmd5.
version No Número de versión. Predeterminado: default. Respuesta de autenticación exitosa:
body: { "code": 0, "message": "success", "info": { "token": "6944e5bfb92e4d4ea3918d1eda39****" } }NotaAlmacene en caché el token devuelto localmente.
Incluya el token en cada solicitud de reporte de datos. Si el token caduca, vuelva a autenticarse para obtener uno nuevo.
Tabla 3. Códigos de error
code
message
Observaciones
10000
common error
Error desconocido.
10001
param error
Los parámetros de la solicitud no son válidos.
20000
auth check error
La autenticación del dispositivo falló.
20004
update session error
La actualización falló.
40000
request too many
El número de solicitudes supera el límite. Se activó el control de flujo.
-
Reporte datos.
Los dispositivos envían datos a topics con permiso de publicación (Publish). Se admiten topics personalizados.
Por ejemplo, si el topic es
/${YourProductKey}/${YourDeviceName}/pub, el nombre del dispositivo es device123 y la ProductKey del producto es a1GFjLP****, puede llamar a la URLhttps://iot-as-http.cn-shanghai.aliyuncs.com/topic/a1GFjLP****/device123/pubpara reportar datos.Solicitud de reporte de datos:
POST /topic/${topic} HTTP/1.1 Host: ${YourEndpoint} password:${token} Content-Type: application/octet-stream Content-Length: 53 body: ${your_data}Tabla 4. Parámetros de reporte de datos
Parámetro Descripción Method Método de solicitud. Solo se admite POST. URL /topic/${topic}. Reemplace${topic}con el topic de destino. Solo HTTPS.Host Dirección del endpoint. password Parámetro de encabezado. Establézcalo con el token devuelto por la operación auth. Content-Type Formato de codificación de datos. Solo se admite application/octet-stream. Otros formatos devuelven un error de parámetro. Content-Length Longitud de la entidad del mensaje HTTP. body Datos que se enviarán a ${topic}. Respuesta exitosa:
body: { "code": 0, "message": "success", "info": { "messageId": 892687****47040 } }Tabla 5. Códigos de error
code
message
Observaciones
10000
common error
Error desconocido.
10001
param error
Los parámetros de la solicitud no son válidos.
20001
token is expired
El token ha caducado. Llame nuevamente a la operación auth para obtener un nuevo token.
20002
token is null
No se encontró el token en el encabezado de la solicitud.
20003
check token error
No se pudo recuperar la información de identidad del token. Llame nuevamente a la operación auth para obtener un nuevo token.
30001
publish message error
Falló el reporte de datos.
40000
request too many
El número de solicitudes supera el límite. Se activó el control de flujo.
Ejemplos
Para conectar un cliente HTTP a IoT Platform, siga los pasos indicados en Connect an HTTP client.