Cette rubrique explique comment utiliser le SDK C Link pour connecter un appareil simulé (dans cet exemple, un interrupteur de veilleuse) à IoT Platform via MQTT et publier des données sur une rubrique personnalisée.
Prérequis
IoT Platform est activé.
Créer un produit et un appareil
Connectez-vous à la console IoT Platform et cliquez sur la carte de l'instance cible.
Dans le volet de navigation de gauche, choisissez , puis cliquez sur Create Product.
Sur la page Create Product, définissez le paramètre Product Name sur NightLightSwitch et le paramètre Category sur Custom Category. Conservez les valeurs par défaut pour les autres paramètres. Ensuite, cliquez sur OK.
Sur la page Create Product, cliquez sur Add dans la section Add Device.
Sur la page Devices, cliquez sur Add Device.
-
Dans la boîte de dialogue Add Device, saisissez un nom d'appareil. Par exemple : LightSwitch. Ensuite, cliquez sur OK.
Pour Nickname, saisissez
Quick Start. Dans la boîte de dialogue The devices have been added., cliquez sur Copy Device Certificate. Ensuite, enregistrez les informations du certificat de l'appareil sur un serveur local. Pour plus d'informations, consultez Certificats d'appareil.
Préparer l'environnement de développement
Dans cet exemple, l'environnement de développement est Ubuntu 16.04 et les outils de développement sont gcc et make. Pour plus d'informations, consultez Configurations du projet.
-
Installez Ubuntu 16.04.
Pour plus d'informations, consultez Ubuntu.
-
Exécutez la commande suivante pour installer gcc et make :
sudo apt-get -y install gcc make
Configurer le SDK
-
Téléchargez un package de démonstration depuis Fichier de démonstration vers l'environnement de développement, puis décompressez le package.
IoT Platform vous permet de développer des fonctionnalités personnalisées pour les SDK Link. Pour plus d'informations, consultez Obtenir le SDK Link pour C.
-
Ouvrez le fichier
./LinkSDK/demos/mqtt_basic_demo.cet configurez les paramètres pertinents.-
Configurez les paramètres utilisés pour spécifier les informations de connexion de l'appareil afin de le connecter à IoT Platform. Le tableau suivant décrit ces paramètres. Exemple de code :
char *product_key = "a18wP******"; char *device_name = "LightSwitch"; char *device_secret = "uwMTmVAMnGGHaAkqmeDY6cHxxB******"; char *mqtt_host = "a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com";Parameter
Example
Description
mqtt_host
a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com
Le endpoint auquel vous souhaitez connecter l'appareil.
-
Pour les instances Enterprise Edition et les nouvelles instances publiques : trouvez le endpoint dans le panneau Development Configuration de la page Instance Details.
Si vous utilisez une instance publique d'une version précédente, le endpoint de l'instance publique est au format
${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com.
Pour plus d'informations sur les instances et les endpoints, consultez Afficher les endpoints d'instance.
product_key
a18wP******
Les informations du certificat de l'appareil. Le certificat de l'appareil est enregistré sur votre serveur local après la création de l'appareil.
Vous pouvez afficher le certificat de l'appareil sur la page Device Details dans la console IoT Platform. Pour plus d'informations, consultez Obtenir les informations de vérification de l'appareil.
device_name
LightSwitch
device_secret
uwMTmVAMnGGHaAkqmeDY6cHxxB******
-
-
Spécifiez une rubrique à laquelle l'appareil doit s'abonner pour recevoir des messages d'IoT Platform. Par exemple :
/a18wP******/LightSwitch/user/get. Exemple de code :RemarqueSi vous souhaitez utiliser cette fonctionnalité, décommentez le code situé entre les combinaisons barre oblique/astérisque (/**/).
{ 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; } }Parameter
Example
Description
sub_topic
/a18wP******/LightSwitch/user/get
La rubrique sur laquelle l'appareil dispose de l'autorisation Subscribe. L'appareil peut recevoir des messages d'IoT Platform via cette rubrique.
Vous pouvez afficher les rubriques personnalisées dans la console IoT Platform. Sur la page Product Details, cliquez sur l'onglet Topic Categories. Dans l'onglet qui s'affiche, cliquez sur Topic Category. Pour plus d'informations, consultez Qu'est-ce qu'une rubrique.
Dans cet exemple, la rubrique personnalisée par défaut est utilisée. Description des paramètres :
a1oGs******indique le ProductKey de l'appareil.LightSwitchindique le DeviceName de l'appareil.
-
Spécifiez une rubrique que l'appareil peut utiliser pour envoyer des messages. Par exemple :
/a18wP******/LightSwitch/user/update. Ensuite, spécifiez le contenu d'un message que vous souhaitez envoyer. Exemple de code :RemarqueSi vous souhaitez utiliser cette fonctionnalité, décommentez le code situé entre les combinaisons barre oblique/astérisque (/**/).
{ 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; } }Parameter
Example
Description
pub_topic
/a18wP******/LightSwitch/user/update
La rubrique sur laquelle l'appareil dispose de l'autorisation Publish. L'appareil peut utiliser cette rubrique pour envoyer des messages à IoT Platform.
Vous pouvez afficher les rubriques personnalisées dans la console IoT Platform. Sur la page Product Details, cliquez sur l'onglet Topic Categories. Dans l'onglet qui s'affiche, cliquez sur Topic Category. Pour plus d'informations, consultez Qu'est-ce qu'une rubrique.
Dans cet exemple, la rubrique personnalisée par défaut est utilisée. Description des paramètres :
a1oGs******indique le ProductKey de l'appareil.LightSwitchindique le DeviceName de l'appareil.
pub_payload
{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}
Le message envoyé à IoT Platform.
Dans cet exemple, une rubrique personnalisée est utilisée. Vous pouvez utiliser des formats de message personnalisés.
-
-
Dans le répertoire racine du SDK, exécutez la commande make.
Le fichier d'exemple de code exécutable
./output/mqtt-basic-demoest généré.
Résultat de l'exécution
Dans le répertoire racine du SDK, exécutez la commande suivante pour lancer le fichier exécutable :
./output/mqtt-basic-demo
-
Vous pouvez afficher le résultat de l'exécution sur l'appareil.
-
Les données de journal suivantes indiquent que l'appareil
LightSwitchest connecté à 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 -
Les données de journal suivantes indiquent que l'appareil
LightSwitchs'est abonné à la rubrique/a18wP******/LightSwitch/user/get.[1620373302.144][LK-0309] sub: /a18wP******/LightSwitch/user/getUne fois que l'appareil s'est correctement abonné à la rubrique, retournez dans la console IoT Platform. Sur l'onglet Topics de la page Device Details, recherchez la rubrique et cliquez sur Publish Message dans la colonne Actions. Dans la boîte de dialogue Publish Message, saisissez un message, par exemple « This is a test message from Alibaba Iot Platform. », pour simuler l'envoi d'un message d'IoT Platform à l'appareil.
-
Les données de journal suivantes indiquent que l'appareil
LightSwitchutilise la rubrique/a18wP******/LightSwitch/user/updatepour soumettre un message à 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
-
-
Connectez-vous à la console IoT Platform pour afficher l'état de l'appareil et les journaux d'opérations.
Dans le volet de navigation de gauche, choisissez . Recherchez ensuite l'appareil et affichez son état. Si la valeur dans la colonne State/Enabled est Online, l'appareil est connecté à IoT Platform.
Dans le volet de navigation de gauche, choisissez . Sur la page Device Log, sélectionnez le produit NightLightSwitch. Vous pouvez afficher les journaux qui enregistrent les moments où les appareils du produit se sont connectés, ont souscrit à une rubrique et ont soumis des messages.
Si une erreur se produit lors du débogage, corrigez-la selon les instructions affichées. Pour plus d'informations, consultez Codes d'erreur reçus par les appareils.
Étapes suivantes
Une fois l'appareil connecté à IoT Platform, vous pouvez le gérer et le surveiller. Pour plus d'informations sur les fonctionnalités d'IoT Platform, consultez Fonctionnalités.
Pour plus d'informations sur l'utilisation du SDK Link pour C afin de configurer des fonctionnalités avancées, consultez Présentation.