Conecte un dispositivo vehicular compatible con GB/T 32960 a IoT Platform a través de un cloud gateway con verificación TLS del lado del servidor, mediante un cliente de código abierto de GitHub.
Requisitos previos
-
Debe contar con una instancia Exclusive Enterprise Edition disponible. Este ejemplo utiliza la región China (Shanghai).
-
Tener listos los certificados personalizados.
Archivos obligatorios: certificado raíz (
root-ca.crt), clave privada del servidor (server.key) y certificado del servidor (server.crt).Genérelos con OpenSSL. Generate a custom certificate.
Contexto
El cloud gateway de IoT Platform admite conexiones GB/T 32960 mediante TCP o TLS. Se recomienda usar TLS, ya que permite la verificación unidireccional del lado del servidor, OCSP del lado del dispositivo y TLS mutuo.
Este ejemplo utiliza TLS con verificación unidireccional del lado del servidor.
Para obtener más información sobre el protocolo, consulte GB/T 32960 protocol cloud gateway overview.
El cliente de código abierto para GB/T 32960 está disponible en GitHub.
Preparar el entorno
Git y Patch deben estar instalados en su sistema operativo.
-
Configure un entorno de desarrollo Java:
Versión de JDK: JDK 8
Entorno de desarrollo integrado (IDE): IntelliJ IDEA Community Edition
Descargar el código fuente
Clone la demostración y aplique un archivo de parche:
-
Ejecute los siguientes comandos para clonar el repositorio de demostración
tsp.git clone https://github.com/zhengyishan/tsp.git cd tsp git checkout 5ef2907b7160f74cf4948b641d75fccd50c5dd6a -b demo_branch Descargue el archivo de parche
gb32960.patchen el directoriotsp.-
Ejecute el siguiente comando para aplicar el parche al archivo de demostración
tsp.patch -p1 < gb32960.patch
Crear un cloud gateway y dispositivos
Inicie sesión en la consola de IoT Platform.
En la esquina superior izquierda de la consola, seleccione la región donde se encuentra su instancia de IoT Platform.
En la página Instance Details, haga clic en la instancia Exclusive Enterprise Edition deseada.
En el panel de navegación izquierdo, vaya a Devices > Cloud Gateway y haga clic en Add Cloud Gateway.
-
En el cuadro de diálogo que aparece, establezca Server Certificate Private Key con el contenido del archivo
server.keyy configure Server Certificate con el contenido del archivo server.crt.Para obtener detalles sobre los parámetros, consulte Add a cloud gateway.
Establezca Cloud Gateway Name como
GBtest, Protocol como GB/T 32960 y Custom Port Number como8999. Seleccione server-side one-way verification para Authentication Type y TLS para Transport Protocol. Elija No en Enable Device X.509 Certificate Authentication y Disable en Enable OCSP. Haga clic en OK.
-
Una vez creado el cloud gateway, localícelo en la lista de gateways y copie la Gateway URL.
El formato de la Gateway URL es
xxx.igw.iothub.aliyuncs.com(Port number: 8999). Guarde la URL completa.
Agregar dispositivos
En el panel de navegación izquierdo, vaya a Devices>Products. Busque el producto correspondiente al cloud gateway que creó y haga clic en Manage Devices en la columna Actions.
En la página Devices, haga clic en Batch Add.
-
En el cuadro de diálogo Batch Add Devices, haga clic en Download .csv Template.
En el cuadro de diálogo, el campo Product ya muestra seleccionado su cloud gateway. Asimismo, encontrará el campo Batch Upload File y el botón Upload File.
-
En la plantilla, introduzca un VIN, por ejemplo device10000000001. Luego guarde el archivo con extensión
.csv.ImportanteEl VIN es el número de identificación vehicular. Puede tener hasta 17 caracteres y contener letras y dígitos.
-
Regrese al cuadro de diálogo Batch Add Devices. Haga clic en Upload File para cargar el archivo que acaba de guardar y luego haga clic en OK.
Tras cargar el archivo, aparecerá el mensaje Parsing complete junto con el recuento Total devices. Compruebe el resultado del análisis y haga clic en OK.
Al importar las identidades de los dispositivos, IoT Platform crea los dispositivos correspondientes y utiliza los valores VIN cargados como DeviceName de cada uno. Los dispositivos creados aparecerán en la lista de dispositivos.
El estado de un dispositivo nuevo es inactive.
Desarrollar el cliente del dispositivo
Desarrolle un cliente Java para conectar el dispositivo device10000000001 a IoT Platform.
Abra IntelliJ IDEA e importe la demostración tsp que descargó.
En el proyecto, importe el archivo de certificado raíz
root-ca.crtal directorio/dyy-gateway-tcu/src/main/resources.-
Abra el archivo
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/config/TcuProperties.javadel proyecto y modifique los parámetros de conexión del dispositivo.Reemplace los siguientes parámetros con sus valores reales:
// The domain name of the gateway. TODO: Replace this with the domain name of your cloud gateway instance. private String gatewayHost = "iot-*******.igw.iothub.aliyuncs.com"; // The port of the gateway. TODO: Replace this with the port of your cloud gateway instance. private Integer gatewayPort = 8999; // Specifies whether to use TLS. TODO: If you use a direct TCP connection, set this to false. private boolean useSSL = Boolean.TRUE; // If you do not use TLS, ignore this. If you use TLS, set the path of the root certificate file root-ca.crt. private String CA_PATH = "dyy-gateway-tcu/src/main/resources/root-ca.crt"; // The vehicle identification number. The value must be 17 bytes in length. TODO: Replace this with the VIN of your vehicle and use this VIN to create a device in the console. private String vin = "device10000000001";Parámetro
Ejemplo
Descripción
gatewayHost
iot-***.igw.iothub.aliyuncs.comEndpoint del cloud gateway para el protocolo GB/T 32960.
Corresponde a la parte del nombre de dominio de la Gateway URL de su cloud gateway.
gatewayPort
8999Número de puerto personalizado para el endpoint del cloud gateway. Valor predeterminado:
8999.Corresponde a la parte del número de puerto de la Gateway URL de su cloud gateway.
useSSL
Boolean.TRUEIndica si se debe conectar mediante TLS. Valores válidos:
-
Boolean.TRUE(predeterminado): Usa TLS. -
Boolean.FALSE: Usa TCP.
CA_PATH
dyy-gateway-tcu/src/main/resources/root-ca.crtPara conectarse mediante TLS, establezca este parámetro con la ruta absoluta del archivo
root-ca.crten su proyecto.vin
device10000000001Número de identificación vehicular. Corresponde al VIN del dispositivo de cloud gateway que creó.
-
El archivo
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/handler/BusinessHandler.javagestiona el inicio de sesión del vehículo, los latidos, el reporte de datos en tiempo real y el cierre de sesión. Modifique este archivo para agregar funciones personalizadas.
Ejecutar el cliente del dispositivo
En IntelliJ IDEA, vaya a File > Project Structure.
Establezca Project SDK en la versión 1.8 y haga clic en Apply.
Haga clic en OK.
-
Ejecute el programa principal en el archivo
TcuApplication.java.Una vez completada la verificación del lado del servidor, el dispositivo se conecta.
Consultar registros de ejecución
Registros de ejecución del dispositivo
El cliente del dispositivo imprime mensajes ascendentes y descendentes:
-
Mensaje de solicitud de inicio de sesión del vehículo. Los bytes tercero y cuarto,
01 fe, indican una solicitud de inicio de sesión vehicular.+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 01 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...| |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456| |00000030| 37 38 39 30 00 00 ee |7890... | +--------+-------------------------------------------------+----------------+ -
Mensaje de respuesta del servidor ante la solicitud de inicio de sesión. Los bytes tercero y cuarto,
01 01, confirman que el inicio de sesión del vehículo fue exitoso.+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 01 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...| |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456| |00000030| 37 38 39 30 00 00 11 |7890... | +--------+-------------------------------------------------+----------------+ -
Mensaje de reporte de latido. Los bytes tercero y cuarto,
07 fe, indican que se trata de un latido ascendente.+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 00 36 |00001...6 | +--------+-------------------------------------------------+----------------+ -
Mensaje de respuesta del servidor al latido. Los bytes tercero y cuarto,
07 01, indican que se trata de un latido descendente.+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 00 36 |00001...6 | +--------+-------------------------------------------------+----------------+ -
Mensaje de reporte de datos en tiempo real. Los bytes tercero y cuarto,
02 fe, indican un reporte de datos en tiempo real.+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 02 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 14 17 05 06 10 23 23 08 01 |00001.......##..| |00000020| 01 00 05 00 06 00 04 00 07 01 00 0a df |............. | +--------+-------------------------------------------------+----------------+
Registros de ejecución en la nube
En la consola de IoT Platform, vaya a Maintenance > Device Log para consultar los datos reportados por el dispositivo.
En la pestaña Cloud Run Log, filtre por DeviceName, TraceId o Content Keyword/MessageId. Haga clic en View en una entrada de registro para ver el tema del mensaje, la marca de tiempo y el contenido JSON.