Este tema muestra cómo usar el C Link SDK para conectar un dispositivo simulado (en este ejemplo, un interruptor de luz nocturna) a IoT Platform mediante MQTT y publicar datos en un topic personalizado.
Requisitos previos
IoT Platform está activado.
Crear un producto y un dispositivo
Inicie sesión en la consola de IoT Platform y haga clic en la tarjeta de la instancia de destino.
En el panel de navegación izquierdo, seleccione y haga clic en Create Product.
En la página Create Product, establezca el parámetro Product Name como NightLightSwitch y el parámetro Category como Custom Category. Utilice los valores predeterminados para los demás parámetros. A continuación, haga clic en OK.
En la página Create Product, haga clic en Add en la sección Add Device.
En la página Devices, haga clic en Add Device.
-
En el cuadro de diálogo Add Device, introduzca un nombre de dispositivo. Ejemplo: LightSwitch. Luego, haga clic en OK.
Para Nickname, introduzca
Quick Start. En el cuadro de diálogo The devices have been added., haga clic en Copy Device Certificate. Después, guarde la información del certificado del dispositivo en un servidor local. Para obtener más información, consulte Device certificates.
Preparar el entorno de desarrollo
En este ejemplo, el entorno de desarrollo es Ubuntu 16.04 y las herramientas de desarrollo son gcc y make. Para obtener más información, consulte Project configurations.
-
Instale Ubuntu 16.04.
Para obtener más información, consulte Ubuntu.
-
Ejecute el siguiente comando para instalar gcc y make:
sudo apt-get -y install gcc make
Configurar el SDK
-
Descargue un paquete de demostración desde Archivo de demostración al entorno de desarrollo y descomprima el paquete.
IoT Platform permite desarrollar funciones personalizadas para los Link SDK. Para obtener más información, consulte Obtain Link SDK for C.
-
Abra el archivo
./LinkSDK/demos/mqtt_basic_demo.cy configure los parámetros correspondientes.-
Configure los parámetros que especifican la información de conexión del dispositivo para conectarlo a IoT Platform. La siguiente tabla describe estos parámetros. Código de ejemplo:
char *product_key = "a18wP******"; char *device_name = "LightSwitch"; char *device_secret = "uwMTmVAMnGGHaAkqmeDY6cHxxB******"; char *mqtt_host = "a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com";Parámetro
Ejemplo
Descripción
mqtt_host
a18wP.iot-as-mqtt.cn-shanghai.aliyuncs.com
El endpoint al que desea conectar el dispositivo.
-
Para instancias Enterprise Edition y nuevas instancias públicas: Encuentre el endpoint en el panel Development Configuration de la página Instance Details.
Si utiliza una instancia pública de la versión anterior, el endpoint de la instancia pública tiene el formato
${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com.
Para obtener más información sobre instancias y endpoints, consulte View instance endpoints.
product_key
a18wP
La información del certificado del dispositivo. El certificado del dispositivo se guarda en su servidor local después de crear el dispositivo.
Puede consultar el certificado del dispositivo en la página Device Details en la consola de IoT Platform. Para obtener más información, consulte Obtain device verification information.
device_name
LightSwitch
device_secret
uwMTmVAMnGGHaAkqmeDY6cHxxB
-
-
Especifique un topic al que desea que el dispositivo se suscriba para recibir mensajes de IoT Platform. Ejemplo:
/a18wP******/LightSwitch/user/get. Código de ejemplo:NotaSi desea utilizar esta función, elimine el comentario del código encerrado entre combinaciones de barra diagonal y asterisco (/**/).
{ char *sub_topic = "/a18wP******/LightSwitch/user/get"; res = aiot_mqtt_sub(mqtt_handle, sub_topic, NULL, 1, NULL); if (res < 0) { printf("aiot_mqtt_sub failed, res: -0x%04X\n", -res); return -1; } }Parámetro
Ejemplo
Descripción
sub_topic
/a18wP/LightSwitch/user/get
El topic sobre el cual el dispositivo tiene permiso de suscripción (Subscribe). El dispositivo puede recibir mensajes de IoT Platform mediante este topic.
Puede consultar los topics personalizados en la consola de IoT Platform. En la página Product Details, haga clic en la pestaña Topic Categories. En la pestaña que aparece, haga clic en Topic Category. Para obtener más información, consulte What is a topic.
En este ejemplo, se utiliza el topic personalizado predeterminado. Descripción de parámetros:
a1oGsindica la clave ProductKey del dispositivo.LightSwitchindica el nombre DeviceName del dispositivo.
-
Especifique un topic que el dispositivo pueda usar para enviar mensajes. Ejemplo:
/a18wP******/LightSwitch/user/update. A continuación, especifique el contenido del mensaje que desea enviar. Código de ejemplo:NotaSi desea utilizar esta función, elimine el comentario del código encerrado entre combinaciones de barra diagonal y asterisco (/**/).
{ char *pub_topic = "/a18wP******/LightSwitch/user/update"; char *pub_payload = "{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}"; res = aiot_mqtt_pub(mqtt_handle, pub_topic, (uint8_t *)pub_payload, (uint32_t)strlen(pub_payload), 0); if (res < 0) { printf("aiot_mqtt_sub failed, res: -0x%04X\n", -res); return -1; } }Parámetro
Ejemplo
Descripción
pub_topic
/a18wP/LightSwitch/user/update
El topic sobre el cual el dispositivo tiene permiso de publicación (Publish). El dispositivo puede usar este topic para enviar mensajes a IoT Platform.
Puede consultar los topics personalizados en la consola de IoT Platform. En la página Product Details, haga clic en la pestaña Topic Categories. En la pestaña que aparece, haga clic en Topic Category. Para obtener más información, consulte What is a topic.
En este ejemplo, se utiliza el topic personalizado predeterminado. Descripción de parámetros:
a1oGsindica la clave ProductKey del dispositivo.LightSwitchindica el nombre DeviceName del dispositivo.
pub_payload
{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}
El mensaje que se envía a IoT Platform.
En este ejemplo, se utiliza un topic personalizado. Puede usar formatos de mensaje personalizados.
-
-
En el directorio raíz del SDK, ejecute el comando make.
Se genera el archivo ejecutable de código de ejemplo
./output/mqtt-basic-demo.
Resultado de la ejecución
En el directorio raíz del SDK, ejecute el siguiente comando para ejecutar el archivo ejecutable:
./output/mqtt-basic-demo
-
Puede consultar el resultado de la ejecución en el dispositivo.
-
Los siguientes datos de registro indican que el dispositivo
LightSwitchestá conectado a IoT Platform.[1619768570.433][LK-0313] MQTT user calls aiot_mqtt_connect api, connect [1619768570.433][LK-0317] LightSwitch&a18wP****** [1619768570.433][LK-0318] 933FE333F78F42E2AAD384F629C771277E06D459577942EA1F04ACFDFE****** core_sysdep_network_establish host a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com port 8883, type 0 establish tcp connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[8883]) success to establish tcp, fd=3 local port: 49122 [1619768570.599][LK-1000] establish mbedtls connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[8883]) [1619768570.600][LK-1000] success to establish mbedtls connection, (cost 45134 bytes in total, max used 47870 bytes) [1619768570.644][LK-0313] MQTT connect success in 212 ms AIOT_MQTTEVT_CONNECT -
Los siguientes datos de registro indican que el dispositivo
LightSwitchse suscribe al topic/a18wP******/LightSwitch/user/get.[1620373302.144][LK-0309] sub: /a18wP******/LightSwitch/user/getUna vez que el dispositivo se suscribe correctamente al topic, puede regresar a la consola de IoT Platform. En la pestaña Topics de la página Device Details, busque el topic y haga clic en Publish Message en la columna Actions. En el cuadro de diálogo Publish Message, introduzca un mensaje, por ejemplo, This is a test message from Alibaba Iot Platform., para simular el envío de un mensaje desde IoT Platform al dispositivo.
-
Los siguientes datos de registro indican que el dispositivo
LightSwitchusa el topic/a18wP******/LightSwitch/user/updatepara enviar un mensaje a IoT Platform.[1619768570.644][LK-0309] pub: /a18wP******/LightSwitch/user/update [LK-030A] > 7B 22 69 64 22 3A 22 31 22 2C 22 76 65 72 73 69 | {"id":"1","versi [LK-030A] > 6F 6E 22 3A 22 31 2E 30 22 2C 22 70 61 72 61 6D | on":"1.0","param [LK-030A] > 73 22 3A 7B 22 4C 69 67 68 74 53 77 69 74 63 68 | s":{"LightSwitch [LK-030A] > 22 3A 30 7D 7D
-
-
Puede iniciar sesión en la consola de IoT Platform para consultar el estado del dispositivo y los registros de operación.
En el panel de navegación izquierdo, seleccione . A continuación, busque el dispositivo y consulte su estado. Si el valor en la columna State/Enabled es Online, el dispositivo está conectado a IoT Platform.
En el panel de navegación izquierdo, seleccione . En la página Device Log, seleccione el producto NightLightSwitch. Puede consultar los registros que indican cuándo se conectaron los dispositivos del producto, se suscribieron a un topic y enviaron mensajes.
Si ocurre un error durante la depuración, corríjalo según las indicaciones. Para obtener más información, consulte Error codes received by devices.