Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Client du SDK Hub
La bibliothèque client du SDK Hub sert d'interface entre le SDK Hub pour les intégrations gérées et votre propre pile de protocoles exécutée sur le même hub. Il expose un ensemble de données publiques APIs pour faciliter l'interaction de votre pile de protocoles avec les composants du SDK Device Hub. Les cas d'utilisation incluent le contrôle personnalisé des plugins, le provisionneur de plugins personnalisé et le contrôleur local.
Rubriques
Obtenez votre SDK Hub d'intégrations gérées
Le client Hub SDK est fourni avec le SDK d'intégrations gérées. Contactez-nous depuis la console des intégrations gérées
À propos de la boîte à outils du SDK Hub
Après le téléchargement, vous verrez un IotMI-DeviceSDK-Toolkit dossier contenant tous les fichiers d'en-tête publics et .so les fichiers que vous pouvez utiliser dans votre application. L'équipe des intégrations gérées fournit également un exemple main.cpp à des fins de démonstration, ainsi que le fichier binaire de l'application de démonstration bin/ que vous pouvez directement exécuter. Vous pouvez éventuellement l'utiliser comme point de départ pour votre application.
Créez votre application personnalisée avec le client Hub SDK
Suivez les étapes ci-dessous pour créer votre application personnalisée.
-
Incluez les fichiers d'en-tête (.h) et les fichiers d'objets partagés (.so) dans votre application.
Vous devez inclure les fichiers d'en-tête publics (.h) et les fichiers d'objets partagés (.so) dans votre application. Pour les fichiers .so, vous pouvez les placer dans un dossier lib. La mise en page finale sera similaire à celle-ci :
├── include │ ├── iotmi_device_sdk_client │ │ └── iotmi_device_sdk_client_common_types.h │ ├── iotmi_device_sdk_client.h │ └── iotshd_status.h ├── lib │ ├── libiotmi_devicesdk_client_module.so │ └── libiotmi_log_c.so -
Créez un client Hub SDK dans votre application principale.
Dans votre application principale, vous devez d'abord initialiser le client du SDK Hub avant de pouvoir l'utiliser pour traiter les demandes. Vous pouvez simplement créer le client avec un
clientId.Une fois que vous avez le client, vous pouvez le connecter au SDK Device pour les intégrations gérées.
Voici un exemple de création du client du SDK Hub et de la procédure de connexion.
#include <cstdlib> #include <string> #include "iotshd_status.h" #include "iotmi_device_sdk_client.h" auto client = std::make_unique<DeviceSDKClient>(your_own_clientId); iotmi_statusCode_t status = client->connect();Note
your_own_clientIddoit être identique à celui que vous spécifiez start-device-discoverydans la configuration guidée par l'utilisateur ou create-managed-thingdans le flux de provisionnement de configuration simple.
Publiez et abonnez-vous en suivant les étapes ci-dessous.
Une fois la connexion établie, vous pouvez désormais vous abonner aux tâches entrantes à partir du SDK du hub d'intégrations gérées. Les tâches entrantes peuvent être des tâches de contrôle ou des tâches de provisionnement. Vous devez également définir votre propre fonction de rappel lors de la réception des tâches et votre propre contexte personnalisé à des fins de suivi.
// subscribe to provisioning tasks iotmi_statusCode_t status = client->iotmi_provision_subscribe_to_tasks( example_subscriber_callback, custom_context); // subscribe to control tasks iotmi_statusCode_t status = client->iotmi_control_subscribe_to_tasks( example_subscriber_callback, custom_context);Une fois la connexion établie, vous pouvez désormais publier les demandes de votre application vers le SDK du Hub d'intégrations gérées. Vous pouvez définir votre propre type de message de tâche, avec différentes charges utiles pour différents objectifs commerciaux. Les demandes peuvent inclure à la fois des demandes de contrôle et des demandes de fourniture, comme dans le cas du flux d'abonnement. Enfin, vous pouvez attribuer une adresse pour
rspPayloadobtenir la réponse du SDK du Hub d'intégrations gérées de manière synchronisée.// publish control request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_CONTROL_EVENT, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_control_publish_request(&api_payload); // publish provision request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_DEVICE_ONBOARDED, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_provision_publish_request(&api_payload);
Créez le vôtre
CMakeLists.txtet créez votre application à partir de là. La sortie finale peut être un fichier binaire exécutable tel queMyFirstApplication
Exécution de votre application personnalisée
Avant d'exécuter votre application personnalisée, suivez les étapes suivantes pour configurer votre hub et démarrer le SDK du hub d'intégrations gérées :
-
Suivez les instructions d'intégration à Intégrez vos hubs aux intégrations gérées l'adresse.
-
Terminez le processus d'installation décrit dansInstallation et validation du SDK Hub pour les intégrations gérées.
Une fois les conditions requises remplies, vous pouvez exécuter votre application personnalisée. Par exemple :
./MyFirstApplication
Important
Vous devez mettre à jour manuellement le script de démarrage indiqué dans la liste Déployez le SDK du Hub à l'aide d'un script avec un script pour démarrer votre propre application. L'ordre est important, ne le modifiez pas.
Mettez à jour les éléments suivants. Modification
./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &
to
./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &
Types de données
Cette section définit les types de données utilisés pour le plug-in de protocole personnalisé.
- iotmi_client_request_t
-
Représente une demande à publier dans les composants des intégrations gérées.
- MessageType
-
Type du message (CommonTypes: :C2 MIMessage Type). La liste suivante indique les valeurs valides.
-
C2MI_DEVICE_ONBOARDED: indique un message d'intégration de l'appareil avec la charge utile associée. -
C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: indique une notification de fin de tâche de déprovisionnement pour un appareil pré-associé. -
C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: indique une notification de fin de tâche de déprovisionnement pour un appareil activé. -
C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: indique une réponse complète à une tâche de déprovisionnement. -
C2MI_CONTROL_EVENT: indique un événement de contrôle susceptible de modifier l'état de l'appareil. -
C2MI_CONTROL_SEND_COMMAND: indique une commande de contrôle provenant d'un contrôleur local. -
C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: indique une demande d'état du dispositif de contrôle provenant d'un contrôleur local.
-
- Charge utile Req
-
La charge utile de la demande, généralement une chaîne au format JSON.
- Charge utile RSP
-
La charge utile de réponse, alimentée par les composants des intégrations gérées.
- iotmi_client_event_t
-
Représente un événement reçu des composants d'intégrations gérées.
- identifiant_événement
-
Identifiant unique de l'événement.
- longueur
-
Longueur des données de l'événement.
- data
-
Un pointeur vers les données de l'événement, y compris le
messageType. La liste suivante indique les valeurs possibles.-
C2MI_PROVISION_UGS_TASK: indique une tâche de provisionnement pour le flux UGS. -
C2MI_PROVISION_SS_TASK: indique une tâche de provisionnement pour le SimpleSetup flux. -
C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: indique une tâche de déprovisionnement pour un appareil pré-associé. -
C2MI_DE_PROVISION_ACTIVATED_TASK: indique une tâche de déprovisionnement pour un appareil activé. -
C2MI_DEVICE_ONBOARDED_RESPONSE: indique une réponse d'intégration de l'appareil. -
C2MI_CONTROL_TASK: indique une tâche de contrôle. -
C2MI_CONTROL_EVENT_NOTIFICATION: indique une notification d'événement de contrôle pour un contrôleur local.
-
- ctx
-
Contexte personnalisé associé à l'événement.