Partager via


Personnaliser une solution préconfigurée

Les solutions préconfigurées fournies avec Azure IoT Suite présentent les services de la suite qui collaborent pour fournir une solution de bout en bout. À partir de ce point de départ, il existe différents endroits où vous pouvez étendre et personnaliser la solution pour des scénarios spécifiques. Les sections suivantes décrivent ces points de personnalisation courants.

Recherche du code source

Le code source pour les solutions préconfigurées est disponible sur GitHub dans les dépôts suivants :

Le code source pour les solutions préconfigurées est fourni dans le but d’illustrer les modèles et pratiques utilisés pour implémenter la fonctionnalité de bout en bout d’une solution IoT utilisant Azure IoT Suite. Pour plus d’informations sur la création et le déploiement des solutions, consultez les dépôts GitHub.

Modification des règles préconfigurées

La solution de supervision à distance inclut trois travaux Azure Stream Analytics destinés à gérer la logique d’informations, de règles et de télémétrie dans la solution.

Les trois travaux Stream Analytics et leur syntaxe sont décrits en détail dans Présentation de la solution préconfigurée de surveillance à distance.

Vous pouvez modifier ces tâches directement pour en modifier la logique, ou ajouter une logique spécifique à votre scénario. Pour rechercher les tâches Stream Analytics, procédez comme suit :

  1. Accédez au portail Azure.

  2. Accédez au groupe de ressources portant le même nom que votre solution IoT.

  3. Sélectionnez la tâche Azure Stream Analytics à modifier.

  4. Arrêtez le travail en sélectionnant Arrêterdans l’ensemble de commandes.

  5. Modifiez les entrées, la requête et les sorties.

    Une modification simple consiste à modifier la requête pour que le travail Règles utilise un «< » au lieu d’un « ».> Le portail de solution affiche toujours «> » lorsque vous modifiez une règle, mais notez que le comportement est inversé en raison de la modification du travail sous-jacent.

  6. Démarrage du travail

Notes

Le tableau de bord de surveillance à distance dépend de données spécifiques. Ainsi, modifier les tâches peut provoquer l’échec du tableau de bord.

Ajout de vos propres règles

En plus de modifier les tâches Azure Stream Analytics préconfigurées, vous pouvez utiliser le portail Azure pour ajouter de nouvelles tâches ou ajouter de nouvelles requêtes aux tâches existantes.

Personnalisation des appareils

L’une des activités d’extension les plus courantes consiste à utiliser des appareils spécifiques à votre scénario. Il existe plusieurs méthodes pour travailler avec des appareils, Notamment, la modification d’un appareil simulé pour qu’il corresponde à votre scénario ou l’utilisation du Kit SDK d’appareils IoT pour connecter votre appareil physique à la solution.

Pour obtenir un guide étape par étape sur l’ajout d’appareils, consultez les articles sur la connexion des appareils dans IoT Suite et l’exemple de Kit de développement logiciel (SDK) C de surveillance à distance. Ces appareils sont conçus pour fonctionner avec la solution préconfigurée de surveillance à distance.

Création de votre propre appareil simulé

Le code source de la solution de supervision à distance contient un simulateur .NET. C’est lui qui est configuré dans le cadre de la solution et qui peut être modifié pour envoyer des données de télémétrie ou des métadonnées différentes, ou pour répondre à des commandes et méthodes différentes.

Le simulateur préconfiguré dans la solution préconfigurée de surveillance à distance simule un appareil de refroidissement qui émet des données de télémétrie de température et d’humidité. Vous pouvez modifier le simulateur dans le projet Simulator.WebJob une fois le référentiel GitHub dupliqué.

Emplacements disponibles pour les appareils simulés

L’ensemble des emplacements par défaut se trouve à Seattle/Redmond, Washington, États-Unis. Vous pouvez modifier ces emplacements dans SampleDeviceFactory.cs.

Ajout du gestionnaire de mise à jour des propriétés souhaitées au simulateur

Vous pouvez définir la valeur d’une propriété souhaitée pour un appareil dans le portail de solution. C’est l’appareil qui gère la demande de modification de propriété lorsqu’il récupère la valeur de propriété souhaitée. Pour ajouter la prise en charge d’une modification de valeur de propriété par une propriété souhaitée, vous devez ajouter un gestionnaire au simulateur.

Le simulateur contient des gestionnaires pour les propriétés SetPointTemp et TelemetryInterval que vous pouvez mettre à jour en définissant les valeurs souhaitées dans le portail de solution.

L’exemple suivant montre le gestionnaire pour la propriété souhaitée SetPointTemp dans la classe CoolerDevice :

protected async Task OnSetPointTempUpdate(object value)
{
    var telemetry = _telemetryController as ITelemetryWithSetPointTemperature;
    telemetry.SetPointTemperature = Convert.ToDouble(value);

    await SetReportedPropertyAsync(SetPointTempPropertyName, telemetry.SetPointTemperature);
}

Cette méthode met à jour la température du point de télémétrie, puis signale la modification à IoT Hub en définissant une propriété signalée.

Vous pouvez ajouter vos propres gestionnaires pour vos propres propriétés en suivant le modèle de l’exemple précédent.

Vous devez également lier la propriété souhaitée au gestionnaire comme indiqué dans l’exemple suivant issu du constructeur CoolerDevice :

_desiredPropertyUpdateHandlers.Add(SetPointTempPropertyName, OnSetPointTempUpdate);

Notez que SetPointTempPropertyName est une constante définie en tant que « Config.SetPointTemp ».

Ajout de la prise en charge d’une nouvelle méthode au simulateur

Vous pouvez personnaliser le simulateur pour ajouter la prise en charge d’une nouvelle méthode (méthode directe). Les deux principales étapes requises sont les suivantes :

  • Le simulateur doit fournir à IoT hub des informations sur la méthode dans la solution préconfigurée.
  • Le simulateur doit inclure le code pour gérer l’appel de méthode lorsque vous l’appelez à partir du volet Informations sur l’appareil dans l’Explorateur de solutions ou via un travail.

La solution préconfigurée de surveillance à distance utilise les propriétés signalées pour envoyer des informations sur les méthodes prises en charge à IoT hub. Le serveur principal de solution gère une liste de toutes les méthodes prises en charge par chaque appareil, ainsi que l’historique des appels de méthode. Vous pouvez afficher ces informations sur les appareils et appeler des méthodes dans le portail de solution.

Pour informer IoT Hub qu’un appareil prend en charge une méthode, l’appareil doit ajouter des informations sur la méthode au nœud SupportedMethods dans les propriétés signalées :

"SupportedMethods": {
  "<method signature>": "<method description>",
  "<method signature>": "<method description>"
}

La signature de méthode a le format suivant : <method name>--<parameter #0 name>-<parameter #1 type>-...-<parameter #n name>-<parameter #n type>. Par exemple, pour spécifier que la méthode InitiateFirmwareUpdate attend un paramètre de chaîne nommé FwPackageURI, utilisez la signature de méthode suivante :

InitiateFirmwareUpate--FwPackageURI-string: "description of method"

Pour obtenir la liste des types de paramètres pris en charge, consultez la classe CommandTypes dans le projet Infrastructure.

Pour supprimer une méthode, définissez la signature de méthode null dans les propriétés signalées.

Notes

Le serveur principal de solution met uniquement à jour les informations sur les méthodes prises en charge lorsqu’il reçoit un message d’informations sur l’appareil de la part de l’appareil.

L’exemple de code suivant issu de la classe SampleDeviceFactory du projet Common montre comment ajouter une méthode à la liste des SupportedMethods dans les propriétés signalées envoyées par l’appareil :

device.Commands.Add(new Command(
    "InitiateFirmwareUpdate",
    DeliveryType.Method,
    "Updates device Firmware. Use parameter 'FwPackageUri' to specifiy the URI of the firmware file, e.g. https://iotrmassets.blob.core.windows.net/firmwares/FW20.bin",
    new[] { new Parameter("FwPackageUri", "string") }
));

Cet extrait de code ajoute les informations sur la méthode InitiateFirmwareUpdate, y compris le texte à afficher dans le portail de solution et les informations sur les paramètres de méthode requis.

Le simulateur envoie les propriétés signalées, y compris la liste des méthodes prises en charge, à IoT Hub au démarrage du simulateur.

Ajoutez un gestionnaire au code du simulateur pour chaque méthode qu'il prend en charge. Vous pouvez voir les gestionnaires existants dans la classe CoolerDevice du projet Simulator.WebJob. L’exemple suivant montre le gestionnaire de la méthode InitiateFirmwareUpdate :

public async Task<MethodResponse> OnInitiateFirmwareUpdate(MethodRequest methodRequest, object userContext)
{
    if (_deviceManagementTask != null && !_deviceManagementTask.IsCompleted)
    {
        return await Task.FromResult(BuildMethodRespose(new
        {
            Message = "Device is busy"
        }, 409));
    }

    try
    {
        var operation = new FirmwareUpdate(methodRequest);
        _deviceManagementTask = operation.Run(Transport).ContinueWith(async task =>
        {
            // after firmware completed, we reset telemetry
            var telemetry = _telemetryController as ITelemetryWithTemperatureMeanValue;
            if (telemetry != null)
            {
                telemetry.TemperatureMeanValue = 34.5;
            }

            await UpdateReportedTemperatureMeanValue();
        });

        return await Task.FromResult(BuildMethodRespose(new
        {
            Message = "FirmwareUpdate accepted",
            Uri = operation.Uri
        }));
    }
    catch (Exception ex)
    {
        return await Task.FromResult(BuildMethodRespose(new
        {
            Message = ex.Message
        }, 400));
    }
}

Les noms de gestionnaires de méthode doivent commencer par On suivi du nom de la méthode. Le paramètre methodRequest contient tous les paramètres transmis avec l’appel de méthode à partir du serveur principal de solution. La valeur de retour doit être de type Task<MethodResponse>. La méthode d’utilitaire BuildMethodResponse vous permet de créer la valeur de retour.

Dans le gestionnaire de méthode, vous pouvez :

  • Démarrer une tâche asynchrone.
  • Récupérer les propriétés souhaitées depuis le jumeau d’appareil dans IoT Hub.
  • Mettre à jour une seule propriété signalée à l’aide de la méthode SetReportedPropertyAsync dans la classe CoolerDevice.
  • Mettre à jour plusieurs propriétés signalées en créant une instance TwinCollection et en appelant la méthode Transport.UpdateReportedPropertiesAsync.

L’exemple précédent de mise à jour du microprogramme effectue les étapes suivantes :

  • Vérifie que l’appareil est en mesure d’accepter la demande de mise à jour du microprogramme.
  • Lance l’opération de mise à jour du microprogramme de façon asynchrone et réinitialise les données de télémétrie lorsque l’opération est terminée.
  • Retourne immédiatement le message « FirmwareUpdate accepted » (Mise à jour du microprogramme acceptée) pour indiquer que la demande a été acceptée par l’appareil.

Création et utilisation de votre propre appareil (physique)

Les Kits de développement logiciel (SDK) Azure IoT fournissent des bibliothèques pour la connexion de nombreux types d’appareils (langages et systèmes d’exploitation) à des solutions IoT.

Modification des limites de tableau de bord

Nombre d’appareils affichés dans la liste déroulante du tableau de bord

Par défaut, la valeur est 200. Vous pouvez modifier cette valeur dans DashboardController.cs.

Nombre d’épingles à afficher dans le contrôle de carte Bing

Par défaut, la valeur est 200. Vous pouvez modifier cette valeur dans TelemetryApiController.cs.

Période de temps du graphique de télémétrie

La valeur par défaut est 10 minutes. Vous pouvez modifier cette valeur dans TelemetryApiController.cs.

Commentaires

Vous avez une personnalisation que vous aimeriez voir couverte dans ce document ? Ajoutez des suggestions de fonctionnalités à User Voice ou commentez cet article.

Étapes suivantes

Pour en savoir plus sur les options permettant de personnaliser les solutions préconfigurées, consultez :