Delen via


Een aangepaste regel maken in de vooraf geconfigureerde oplossing voor externe bewaking

Introductie

In de vooraf geconfigureerde oplossingen kunt u regels configureren die worden geactiveerd wanneer een telemetriewaarde voor een apparaat een specifieke drempelwaarde bereikt. Gebruik dynamische telemetrie met de vooraf geconfigureerde oplossing voor externe bewaking waarin wordt beschreven hoe u aangepaste telemetriewaarden, zoals ExternalTemperature , kunt toevoegen aan uw oplossing. In dit artikel wordt beschreven hoe u aangepaste regels maakt voor dynamische telemetrietypen in uw oplossing.

In deze zelfstudie wordt gebruikgemaakt van een eenvoudig Node.js gesimuleerd apparaat om dynamische telemetrie te genereren voor het verzenden naar de back-end van de vooraf geconfigureerde oplossing. Vervolgens voegt u aangepaste regels toe aan de RemoteMonitoring-Visual Studio-oplossing en implementeert u deze aangepaste back-end in uw Azure-abonnement.

Voor deze zelfstudie hebt u het volgende nodig:

  • Een actief Azure-abonnement. Als u geen account hebt, kunt u binnen een paar minuten een account voor de gratis proefversie maken. Zie Gratis proefversie van Azure voor meer informatie.
  • Node.js versie 0.12.x of hoger om een gesimuleerd apparaat te maken.
  • Visual Studio 2015 of Visual Studio 2017 om de vooraf geconfigureerde back-end van de oplossing te wijzigen met uw nieuwe regels.

De oplossing inrichten

Als u de vooraf geconfigureerde oplossing voor externe controle in uw account nog niet hebt ingericht:

  1. Meld u aan bij azureiotsuite.com met uw Azure-accountreferenties en klik + om een oplossing te maken.
  2. Klik op de tegel Externe controle op Selecteren.
  3. Voer een oplossingsnaam in voor uw vooraf geconfigureerde oplossing voor externe controle.
  4. Selecteer de regio die en het abonnement dat u wilt gebruiken voor het inrichten van de oplossing.
  5. Klik op Oplossing maken om het inrichtingsproces te starten. Doorgaans duurt het enkele minuten om dit proces uit te voeren.

Wacht tot het inrichtingsproces is voltooid.

  1. Klik op de tegel voor uw oplossing met de status Inrichten.
  2. Tijdens de implementatie van Azure-services in uw Azure-abonnement verschijnen verschillende inrichtingstatuswaarden.
  3. Nadat het inrichten is voltooid, verandert de status in Gereed.
  4. Klik op de tegel om de details van uw oplossing in het rechterdeelvenster weer te geven.

Notitie

Als er problemen zijn met de implementatie van de vooraf geconfigureerde oplossing, leest u Permissions on the azureiotsuite.com site (Machtigingen op de site azureiotsuite.com) en de veelgestelde vragen. Als de problemen zich blijven voordoen, maakt u een serviceticket aan in de portal.

Zijn er voor uw oplossing bepaalde details niet vermeld, die u wel verwacht had te zien? Geef ons suggesties voor functies op User Voice.

Noteer de oplossingsnaam die u hebt gekozen voor uw implementatie. U hebt deze oplossingsnaam verderop in deze zelfstudie nodig.

Het Node.js gesimuleerde apparaat configureren

  1. Klik op het dashboard voor externe bewaking op + Een apparaat toevoegen en voeg vervolgens een aangepast apparaat toe. Noteer de IoT Hub hostnaam, apparaat-id en apparaatsleutel. U hebt deze later in deze zelfstudie nodig wanneer u de remote_monitoring.js apparaatclienttoepassing voorbereidt.

  2. Zorg ervoor dat Node.js versie 0.12.x of hoger is geïnstalleerd op uw ontwikkelcomputer. Voer deze opdracht node --version uit bij een opdrachtprompt of in een shell om de versie te controleren. Zie Installeren van Node.js via Package Manager voor informatie over het gebruik van pakketbeheer om Node.js te installeren in Linux.

  3. Wanneer u Node.js hebt geïnstalleerd, kloont u de nieuwste versie van de opslagplaats azure-iot-sdk-node naar uw ontwikkelcomputer. Gebruik altijd de hoofdvertakking voor de nieuwste versie van de bibliotheken en voorbeelden.

  4. Kopieer vanuit uw lokale kopie van de opslagplaats azure-iot-sdk-node de volgende twee bestanden uit de map node/device/samples naar een lege map op uw ontwikkelcomputer:

    • packages.json
    • remote_monitoring.js
  5. Open het remote_monitoring.js-bestand en zoek naar de volgende variabeledefinitie:

    var connectionString = "[IoT Hub device connection string]";
    
  6. Vervang [IoT Hub apparaat connection string] door uw apparaat connection string. Gebruik de waarden voor uw IoT Hub hostnaam, apparaat-id en apparaatsleutel die u in stap 1 hebt genoteerd. Een apparaat connection string heeft de volgende indeling:

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

    Als uw IoT Hub hostnaam contoso is en uw apparaat-id mydevice is, ziet uw connection string eruit als het volgende fragment:

    var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
    
  7. Sla het bestand op. Voer de volgende opdrachten uit in een shell of opdrachtprompt in de map die deze bestanden bevat om de benodigde pakketten te installeren en voer vervolgens de voorbeeldtoepassing uit:

    npm install
    node remote_monitoring.js
    

Dynamische telemetrie in actie observeren

Het dashboard toont de telemetrie van de temperatuur en vochtigheid van de bestaande gesimuleerde apparaten:

The default dashboard

Als u het Node.js gesimuleerd apparaat selecteert dat u in de vorige sectie hebt uitgevoerd, ziet u telemetrie over temperatuur, vochtigheid en externe temperatuur:

Add external temperature to the dashboard

De externe bewakingsoplossing detecteert automatisch het extra telemetrietype voor externe temperatuur en voegt dit toe aan de grafiek op het dashboard.

U kunt de Node.js-console-app stoppen wanneer u hebt gecontroleerd of er telemetrie van ExternalTemperature naar de vooraf geconfigureerde oplossing wordt verzonden. Houd het consolevenster geopend omdat u deze Node.js console-app opnieuw uitvoert nadat u de aangepaste regel aan de oplossing hebt toegevoegd.

Regelopslaglocaties

Informatie over regels wordt op twee locaties bewaard:

  • DeviceRulesNormalizedTable-tabel : in deze tabel wordt een genormaliseerde verwijzing opgeslagen naar de regels die zijn gedefinieerd door de oplossingsportal. Wanneer in de oplossingsportal apparaatregels worden weergegeven, wordt deze tabel opgevraagd voor de regeldefinities.
  • DeviceRules-blob : deze blob slaat alle regels op die zijn gedefinieerd voor alle geregistreerde apparaten en wordt gedefinieerd als referentie-invoer voor de Azure Stream Analytics-taken.   Wanneer u een bestaande regel bijwerkt of een nieuwe regel definieert in de oplossingsportal, worden zowel de tabel als de blob bijgewerkt om de wijzigingen weer te geven. De regeldefinitie die in de portal wordt weergegeven, komt uit het tabelarchief en de regeldefinitie waarnaar wordt verwezen door de Stream Analytics-taken, komt uit de blob.

De remotemonitoring-Visual Studio-oplossing bijwerken

In de volgende stappen ziet u hoe u de RemoteMonitoring-Visual Studio-oplossing kunt wijzigen om een nieuwe regel op te nemen die gebruikmaakt van de externalTemperature-telemetrie die wordt verzonden vanaf het gesimuleerde apparaat:

  1. Als u dit nog niet hebt gedaan, kloont u de opslagplaats azure-iot-remote-monitoring naar een geschikte locatie op uw lokale computer met behulp van de volgende Git-opdracht:

    git clone https://github.com/Azure/azure-iot-remote-monitoring.git
    
  2. Open in Visual Studio het bestand RemoteMonitoring.sln vanuit uw lokale kopie van de opslagplaats azure-iot-remote-monitoring.

  3. Open het bestand Infrastructure\Models\DeviceRuleBlobEntity.cs en voeg als volgt een eigenschap ExternalTemperature toe:

    public double? Temperature { get; set; }
    public double? Humidity { get; set; }
    public double? ExternalTemperature { get; set; }
    
  4. Voeg in hetzelfde bestand als volgt een eigenschap ExternalTemperatureRuleOutput toe:

    public string TemperatureRuleOutput { get; set; }
    public string HumidityRuleOutput { get; set; }
    public string ExternalTemperatureRuleOutput { get; set; }
    
  5. Open het bestand Infrastructure\Models\DeviceRuleDataFields.cs en voeg de volgende eigenschap ExternalTemperature toe na de bestaande eigenschap Vochtigheid :

    public static string ExternalTemperature
    {
    

    get { return "ExternalTemperature"; } } ```

  1. Werk in hetzelfde bestand de _availableDataFields methode als volgt bij om ExternalTemperature op te nemen:

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

7. Open het bestand Infrastructure\Repository\DeviceRulesRepository.cs en wijzig de methode BuildBlobEntityListFromTableRows als volgt:

```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;
}
```

Bouw de oplossing opnieuw en implementeer deze opnieuw.

U kunt nu de bijgewerkte oplossing implementeren in uw Azure-abonnement.

  1. Open een opdrachtprompt met verhoogde bevoegdheid en navigeer naar de hoofdmap van uw lokale kopie van de opslagplaats azure-iot-remote-monitoring.

  2. Als u de bijgewerkte oplossing wilt implementeren, voert u de volgende opdracht uit door {deployment name} te vervangen door de naam van de vooraf geconfigureerde oplossingsimplementatie die u eerder hebt genoteerd:

    build.cmd cloud release {deployment name}
    

De Stream Analytics-taak bijwerken

Wanneer de implementatie is voltooid, kunt u de Stream Analytics-taak bijwerken om de nieuwe regeldefinities te gebruiken.

  1. Navigeer in de Azure Portal naar de resourcegroep die uw vooraf geconfigureerde oplossingsresources bevat. Deze resourcegroep heeft dezelfde naam die u tijdens de implementatie hebt opgegeven voor de oplossing.

  2. Navigeer naar de Stream Analytics-taak {deployment name}-Rules.

3. Klik op Stoppen om te voorkomen dat de Stream Analytics-taak wordt uitgevoerd. (U moet wachten totdat de streamingtaak is gestopt voordat u de query kunt bewerken).

4. Klik op Query. Bewerk de query om de SELECT-instructie voor ExternalTemperature op te nemen. In het volgende voorbeeld ziet u de volledige query met de nieuwe SELECT-instructie :

```
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. Klik op Opslaan om de bijgewerkte regelquery te wijzigen.

  2. Klik op Startmenu om de Stream Analytics-taak opnieuw uit te voeren.

Uw nieuwe regel toevoegen in het dashboard

U kunt nu de externalTemperature-regel toevoegen aan een apparaat in het oplossingsdashboard.

  1. Navigeer naar de oplossingsportal.

2. Navigeer naar het deelvenster Apparaten .

3. Zoek het aangepaste apparaat dat u hebt gemaakt dat telemetriegegevens van ExternalTemperature verzendt en klik in het deelvenster Apparaatdetails op Regel toevoegen.

4. Selecteer ExternalTemperature in gegevensveld.

  1. Drempelwaarde instellen op 56. Klik vervolgens op Opslaan en regels weergeven.

  2. Ga terug naar het dashboard om de alarmgeschiedenis weer te geven.

  3. Start in het consolevenster dat u hebt geopend de Node.js console-app om te beginnen met het verzenden van telemetriegegevens van ExternalTemperature .

8. U ziet dat in de tabel Alarmgeschiedenis nieuwe waarschuwingen worden weergegeven wanneer de nieuwe regel wordt geactiveerd.  

Aanvullende informatie

Het wijzigen van de operator > is complexer en gaat verder dan de stappen die in deze zelfstudie worden beschreven. Hoewel u de Stream Analytics-taak kunt wijzigen om de gewenste operator te gebruiken, is het weergeven van die operator in de oplossingsportal een complexere taak.

Volgende stappen

Nu u hebt gezien hoe u aangepaste regels maakt, vindt u meer informatie over de vooraf geconfigureerde oplossingen: