Partager via


Création d’une règle personnalisée dans la solution de surveillance à distance préconfigurée

Introduction

Dans les solutions préconfigurées, vous pouvez configurer des règles qui se déclenchent lorsqu’une valeur de télémétrie d’un périphérique atteint un seuil spécifique. La page Utilisation de la télémétrie dynamique avec la solution préconfigurée de surveillance à distance vous explique comment ajouter des valeurs de télémétrie personnalisées, telles que ExternalTemperature, à votre solution. Cet article vous montre comment créer une règle personnalisée pour les types de télémétrie dynamiques dans votre solution.

Ce didacticiel utilise un appareil simulé Node.js simple pour générer la télémétrie dynamique à envoyer vers le serveur principal de la solution préconfigurée. Vous ajoutez ensuite des règles personnalisées dans la solution Visual Studio RemoteMonitoring et déployez ce serveur principal personnalisé sur votre abonnement Azure.

Pour suivre ce didacticiel, vous avez besoin des éléments suivants :

  • Un abonnement Azure actif. Si vous ne possédez pas de compte, vous pouvez créer un compte d’évaluation gratuit en quelques minutes. Pour plus d’informations, consultez Essai gratuit Azure.
  • Node.js version 0.12.x ou ultérieure pour créer un appareil simulé.
  • Visual Studio 2015 ou Visual Studio 2017 pour modifier le serveur principal de la solution préconfigurée avec vos nouvelles règles.

Déployer la solution

Si vous n’avez pas déjà approvisionné la solution préconfigurée de surveillance à distance dans votre compte :

  1. Connectez-vous à azureiotsuite.com à l’aide des informations d’identification de votre compte Azure, puis cliquez sur + pour créer une solution.
  2. Cliquez sur Sélectionner sur la vignette Surveillance à distance.
  3. Entrez un Nom de solution pour votre solution préconfigurée de surveillance à distance.
  4. Sélectionnez la région et l’abonnement à utiliser pour configurer la solution.
  5. Cliquez sur Créer une solution pour commencer le processus de déploiement. L’exécution de ce processus prend généralement plusieurs minutes.

Attendre la fin du processus d’approvisionnement

  1. Cliquez sur la vignette de votre solution présentant l’état Approvisionnement .
  2. Notez les états d’approvisionnement à mesure que les services Azure sont déployés dans votre abonnement Azure.
  3. Une fois l’approvisionnement terminé, l’état prend la valeur Prêt.
  4. Cliquez sur la vignette pour visualiser les détails de votre solution dans le volet droit.

Notes

Si vous rencontrez des problèmes lors du déploiement de la solution préconfigurée, consultez les articles Autorisations sur le site azureiotsuite.com et Forum Aux Questions. Si les problèmes persistent, créez un ticket de service sur le Portail.

Certains détails de votre solution semblent-ils faire défaut ? Faites-nous part de vos suggestions concernant les fonctionnalités sur UserVoice.

Notez le nom de solution que vous avez choisi pour votre déploiement. Vous aurez besoin de ce nom plus tard dans ce didacticiel.

Configurer l’appareil simulé Node.js

  1. Dans le tableau de bord de surveillance à distance, cliquez sur + Ajouter un appareil, puis ajoutez un appareil personnalisé. Notez le nom d’hôte, l’ID de l’appareil et la clé de l’appareil IoT Hub. Vous en aurez besoin ultérieurement dans ce didacticiel lorsque vous préparerez l’application cliente de l’appareil remote_monitoring.js.

  2. Assurez-vous que Node.js version 0.12.x ou ultérieure est installé sur votre ordinateur de développement. Exécutez node --version à l’invite de commande ou dans un interpréteur de commandes pour vérifier la version. Pour plus d’informations sur l’utilisation d’un gestionnaire de package pour installer Node.js sur Linux, consultez l’article Installing Node.js via package manager (Installation de Node.js par le biais d’un gestionnaire de package).

  3. Une fois que vous avez installé Node.js, clonez la dernière version du référentiel azure-iot-sdk-node sur votre ordinateur de développement. Utilisez toujours la branche maître pour avoir la version la plus récente des bibliothèques et des exemples.

  4. À partir de votre copie locale du référentiel azure-iot-sdk-node, copiez les deux fichiers ci-après du dossier node/device/samples vers un dossier vide de votre ordinateur de développement :

    • packages.json
    • remote_monitoring.js
  5. Ouvrez le fichier remote_monitoring.js et recherchez la définition de variable suivante :

    var connectionString = "[IoT Hub device connection string]";
    
  6. Remplacez [chaîne de connexion d’un périphérique de IoT Hub] par votre chaîne de connexion de périphérique. Utilisez les valeurs de nom d’hôte, ID de l’appareil et clé de l’appareil IoT Hub notées à l’étape 1. La chaîne de connexion du périphérique suit ce format :

    HostName={your IoT Hub hostname};DeviceId={your device id};SharedAccessKey={your device key}
    

    Si votre nom d’hôte IoT Hub est contoso et votre ID d’appareil mydevice, votre chaîne de connexion ressemble à l’extrait de code suivant :

    var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
    
  7. Enregistrez le fichier . Exécutez les commandes suivantes dans un interpréteur de commandes ou une invite de commandes dans le dossier contenant ces fichiers pour installer les packages nécessaires, puis exécutez l’exemple d’application :

    npm install
    node remote_monitoring.js
    

Observer la télémétrie dynamique en action

Le tableau de bord affiche la télémétrie de température et d’humidité à partir des appareils simulés existants :

The default dashboard

Si vous sélectionnez l’appareil simulé Node.js que vous avez exécuté dans la section précédente, vous affichez la télémétrie de température, d’humidité et de température externe :

Add external temperature to the dashboard

La solution de supervision à distance détecte automatiquement le type supplémentaire de télémétrie de température externe et l’ajoute au graphique sur le tableau de bord.

Vous pouvez arrêter l’application de console Node.js lorsque vous avez vérifié qu’il envoie la télémétrie ExternalTemperature à la solution préconfigurée. Gardez la fenêtre de console ouverte car vous exécuterez à nouveau cette application de console Node.js après avoir ajouté la règle personnalisée à la solution.

Emplacements de stockage des règles

Les informations sur les règles sont conservées dans deux emplacements :

  • Table DeviceRulesNormalizedTable : cette table stocke une référence normalisée aux règles définies par le portail de la solution. Lorsque le portail de la solution affiche les règles des appareils, il interroge cette table sur les définitions de règles.
  • Objet blob DeviceRules : cet objet blob stocke toutes les règles définies pour tous les appareils inscrits et est défini comme une entrée de référence pour les travaux Azure Stream Analytics.   Lorsque vous mettez à jour une règle existante ou définissez une nouvelle règle dans le portail de la solution, la table et l’objet blob sont mis à jour pour refléter les modifications. La définition des règles affichée dans le portail provient du magasin de tables et la définition des règles référencée par les travaux Stream Analytics provient de l’objet blob.

Mise à jour de la solution Visual Studio RemoteMonitoring

Les étapes suivantes vous montrent comment modifier la solution Visual Studio RemoteMonitoring pour inclure une nouvelle règle qui utilise la télémétrie ExternalTemperature envoyée depuis l’appareil simulé :

  1. Si vous ne l'avez pas déjà fait, clonez le référentiel azure-iot-remote-monitoring dans un emplacement approprié sur votre ordinateur local à l’aide de la commande Git suivante :

    git clone https://github.com/Azure/azure-iot-remote-monitoring.git
    
  2. Dans Visual Studio, ouvrez le fichier RemoteMonitoring.sln à partir de votre copie locale du référentiel azure-iot-remote-monitoring.

  3. Ouvrez le fichier Infrastructure\Models\DeviceRuleBlobEntity.cs et ajoutez une propriété ExternalTemperature comme suit :

    public double? Temperature { get; set; }
    public double? Humidity { get; set; }
    public double? ExternalTemperature { get; set; }
    
  4. Dans le même fichier, ajoutez une propriété ExternalTemperatureRuleOutput comme suit :

    public string TemperatureRuleOutput { get; set; }
    public string HumidityRuleOutput { get; set; }
    public string ExternalTemperatureRuleOutput { get; set; }
    
  5. Ouvrez le fichier Infrastructure\Models\DeviceRuleDataFields.cs et ajoutez la propriété ExternalTemperature suivante après la propriété Humidity existante :

    public static string ExternalTemperature
    {
    

    get { return « ExternalTemperature »; } } ```

  1. Dans le même fichier, mettez à jour la méthode _availableDataFields pour inclure ExternalTemperature comme suit :

    private static List<string> _availableDataFields = new List<string>
    {                    
        Temperature, Humidity, ExternalTemperature
    };
    

7. Ouvrez le fichier Infrastructure\Repository\DeviceRulesRepository.cs et modifiez la méthode BuildBlobEntityListFromTableRows comme suit :

```csharp
else if (rule.DataField == DeviceRuleDataFields.Humidity)
{
    entity.Humidity = rule.Threshold;
    entity.HumidityRuleOutput = rule.RuleOutput;
}
else if (rule.DataField == DeviceRuleDataFields.ExternalTemperature)
{
  entity.ExternalTemperature = rule.Threshold;
  entity.ExternalTemperatureRuleOutput = rule.RuleOutput;
}
```

Procédez maintenant à la régénération et au redéploiement de la solution.

Vous pouvez maintenant déployer la solution mise à jour sur votre abonnement Azure.

  1. Ouvrez une invite de commandes avec élévation de privilèges et accédez à la racine de votre copie locale du référentiel azure-iot-remote-monitoring.

  2. Pour déployer votre solution mise à jour, exécutez la commande suivante en remplaçant {deployment name} par le nom du déploiement de votre solution préconfigurée que vous avez noté précédemment :

    build.cmd cloud release {deployment name}
    

Mise à jour du travail Stream Analytics

Lorsque le déploiement est terminé, vous pouvez mettre à jour le travail Stream Analytics pour utiliser les nouvelles définitions de règles.

  1. Dans le portail Azure, accédez au groupe de ressources contenant les ressources de votre solution préconfigurée. Ce groupe de ressources possède le même nom que vous avez spécifié pour la solution lors du déploiement.

  2. Accédez au travail Stream Analytics {deployment name}-Rules.

3. Cliquez sur Arrêter pour arrêter l’exécution du travail Stream Analytics. (Vous devez attendre l’arrêt du travail de diffusion avant de pouvoir modifier la requête).

4. Cliquez sur Requête. Modifiez la requête afin d’inclure l’instruction SELECT pour ExternalTemperature. L’exemple suivant montre la requête complète avec la nouvelle instruction SELECT :

```
WITH AlarmsData AS 
(
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'Temperature' as ReadingType,
     Stream.Temperature as Reading,
     Ref.Temperature as Threshold,
     Ref.TemperatureRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.Temperature IS NOT null AND Stream.Temperature > Ref.Temperature
 
UNION ALL
 
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'Humidity' as ReadingType,
     Stream.Humidity as Reading,
     Ref.Humidity as Threshold,
     Ref.HumidityRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.Humidity IS NOT null AND Stream.Humidity > Ref.Humidity
 
UNION ALL
 
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'ExternalTemperature' as ReadingType,
     Stream.ExternalTemperature as Reading,
     Ref.ExternalTemperature as Threshold,
     Ref.ExternalTemperatureRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.ExternalTemperature IS NOT null AND Stream.ExternalTemperature > Ref.ExternalTemperature
)
 
SELECT *
INTO DeviceRulesMonitoring
FROM AlarmsData
 
SELECT *
INTO DeviceRulesHub
FROM AlarmsData
```
  1. Cliquez sur Enregistrer pour modifier la requête de la règle mise à jour.

  2. Cliquez sur Démarrer pour redémarrer le travail Stream Analytics.

Ajout de votre nouvelle règle dans le tableau de bord

Vous pouvez maintenant ajouter la règle ExternalTemperature à un appareil dans le tableau de bord de la solution.

  1. Accédez au portail de la solution.

2. Accédez au panneau Appareils .

3. Recherchez l’appareil personnalisé que vous avez créé qui envoie les données de télémétrie ExternalTemperature et, dans le panneau Détails de l’appareil , cliquez sur Ajouter une règle.

4. Sélectionnez ExternalTemperature dans le champ de données.

  1. Définissez le Seuil sur 56. Cliquez ensuite sur Enregistrer et afficher les règles.

  2. Retournez au tableau de bord pour afficher l’historique des alertes.

  3. Dans la fenêtre de console que vous avez laissée ouverte, démarrez l’application de console Node.js pour commencer l’envoi des données de télémétrie ExternalTemperature.

8. Notez que la table Historique des alarmes affiche de nouvelles alarmes lorsque la nouvelle règle est déclenchée.  

Informations supplémentaires

La modification de l’opérateur > est plus complexe et dépasse le cadre de ce didacticiel. Alors que vous pouvez modifier le travail Stream Analytics pour utiliser l’opérateur souhaité, l’action de refléter cet opérateur dans le portail de la solution représente une tâche plus complexe.

Étapes suivantes

Maintenant que vous avez vu comment créer des règles personnalisées, vous pouvez en apprendre plus sur les solutions préconfigurées :