Anpassen vorkonfigurierter Lösungen

Die vorkonfigurierten Lösungen in der Azure IoT Suite veranschaulichen das Bereitstellen einer umfassenden Lösung basierend auf dem Zusammenwirken der Dienste in der Suite. Von hier ausgehend gibt es verschiedene Möglichkeiten zur Erweiterung und Anpassung der Lösung für bestimmte Szenarios. Diese allgemeinen Anpassungsmöglichkeiten werden in den folgenden Abschnitten beschrieben.

Suchen des Quellcodes

Der Quellcode für die vorkonfigurierten Lösungen ist auf GitHub in den folgenden Repositorys verfügbar:

Der Quellcode für die vorkonfigurierten Lösungen wird bereitgestellt, um Muster und Verfahren zum Implementieren der umfassenden Funktionalität von IoT-Lösungen mithilfe von Azure IoT Suite zu veranschaulichen. Weitere Informationen zur Erstellung und Bereitstellung von Lösungen finden Sie in den GitHub-Repositorys.

Ändern der vorkonfigurierten Regeln

Die Remoteüberwachungslösung enthält drei Azure Stream Analytics-Aufträge, um Geräteinformationen, Telemetriedaten und Regellogik in der Lösung zu behandeln.

Die drei Stream Analytics-Aufträge und ihre Syntax werden ausführlich unter Exemplarische Vorgehensweise zur vorkonfigurierten Lösung für Remoteüberwachung beschrieben.

Sie können diese Aufträge direkt bearbeiten, um die Logik zu ändern oder spezifische Logik für das Szenario hinzuzufügen. Sie finden die Stream Analytics-Aufträge wie folgt:

  1. Navigieren Sie zum Azure-Portal.

  2. Navigieren Sie zu der Ressourcengruppe mit demselben Namen wie Ihre IoT-Lösung.

  3. Wählen Sie den Azure Stream Analytics-Auftrag aus, den Sie ändern möchten.

  4. Beenden Sie den Auftrag, indem Sie aus den Befehlen Beendenauswählen.

  5. Bearbeiten Sie die Eingaben, die Abfrage und die Ausgaben.

    Eine einfache Änderung besteht darin, die Abfrage für den Regelauftrag zu ändern, um eine "<" anstelle einer ">" zu verwenden. Das Lösungsportal zeigt weiterhin ">" an, wenn Sie eine Regel bearbeiten. Beachten Sie jedoch, wie das Verhalten aufgrund der Änderung des zugrunde liegenden Auftrags gekippt wird.

  6. Starten des Auftrags

Hinweis

Das Remoteüberwachungs-Dashboard hängt von bestimmten Daten ab. Deshalb kann das Ändern der Aufträge dazu führen, dass das Dashboard fehlschlägt.

Hinzufügen eigener Regeln

Sie können nicht nur die vorkonfigurierten Azure Stream Analytics-Aufträge ändern, sondern auch im Azure-Portal neue Aufträge hinzufügen oder vorhandenen Aufträgen neue Abfragen hinzufügen.

Anpassen von Geräten

Eine der am häufigsten Erweiterungsaktivitäten ist das Arbeiten mit speziellen Geräten für Ihr Szenario. Es gibt mehrere Methoden zum Arbeiten mit Geräten. Dazu gehören das Anpassen eines simulierten Geräts an Ihr Szenario und das Verknüpfen des physischen Geräts mit der Lösung mithilfe des IoT-Geräte-SDK.

Unter Verbinden Ihres Geräts mit der vorkonfigurierten Remoteüberwachungslösung und im Beispiel für ein Remoteüberwachungs-SDK für C finden Sie eine schrittweise Anleitung zum Hinzufügen von Geräten. Das Beispiel ist für die Verwendung mit der vorkonfigurierten Remoteüberwachungslösung ausgelegt.

Erstellen eines eigenen simulierten Geräts

Der Quellcode der Remoteüberwachungslösung enthält einen .NET-Simulator. Dieser Simulator wird als Teil der Lösung bereitgestellt, und Sie können ihn ändern, um andere Metadaten oder Telemetriedaten zu senden und auf andere Befehle und Methoden zu reagieren.

Der vorkonfigurierte Simulator in der vorkonfigurierten Remoteüberwachungslösung simuliert ein kühleres Gerät, das Temperatur- und Luftfeuchtigkeits-Telemetriedaten ausgibt. Sie können den Simulator im Simulator.WebJob-Projekt ändern, wenn Sie das GitHub-Repository aufgesucht haben.

Verfügbare Standorte für simulierte Geräte

Die Standorte befinden sich standardmäßig in Seattle/Redmond, Washington, USA. Diese Standorte können in SampleDeviceFactory.cs geändert werden.

Hinzufügen eines Updatehandlers für gewünschte Eigenschaften zum Simulator

Sie können einen Wert für eine gewünschte Eigenschaft für ein Gerät im Lösungsportal festlegen. Es ist die Zuständigkeit des Geräts, die Änderungsanforderung für die Eigenschaft zu verarbeiten, wenn das Gerät den Wert der gewünschten Eigenschaft abruft. Sie müssen dem Simulator einen Handler hinzufügen, um Unterstützung für eine Änderung eines Eigenschaftswerts über eine gewünschte Eigenschaft hinzuzufügen.

Der Simulator beinhaltet Handler für die Eigenschaften SetPointTemp und TelemetryInterval, die Sie aktualisieren können, indem Sie im Lösungsportal gewünschte Wert festlegen.

Das folgende Beispiel zeigt den Handler für die gewünschte Eigenschaft SetPointTemp in der Klasse CoolerDevice:

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

    await SetReportedPropertyAsync(SetPointTempPropertyName, telemetry.SetPointTemperature);
}

Diese Methode aktualisiert die Telemetriepunkttemperatur und meldet die Änderung anschließend an IoT Hub, indem eine gemeldete Eigenschaft festgelegt wird.

Sie können eigene Handler für Ihre eigenen Eigenschaften hinzufügen, indem Sie wie im vorherigen Beispiel beschrieben vorgehen.

Sie müssen die gewünschte Eigenschaft an den Handler binden, was im folgenden Beispiel anhand des CoolerDevice-Konstruktors gezeigt wird:

_desiredPropertyUpdateHandlers.Add(SetPointTempPropertyName, OnSetPointTempUpdate);

SetPointTempPropertyName ist eine Konstante, die als „Config.SetPointTemp“ definiert ist.

Hinzufügen von Unterstützung für eine neue Methode zum Simulator

Sie können den Simulator anpassen, um Unterstützung für eine neue Methode (direkte Methode) hinzuzufügen. Zwei Schritte sind hierfür erforderlich:

  • Der Simulator muss IoT Hub in der vorkonfigurierten Lösung über die Details der Methode benachrichtigen.
  • Der Simulator muss Code zum Verarbeiten des Methodenaufrufs umfassen, wenn Sie ihn über den Bereich Gerätedetails im Projektmappen-Explorer oder über einen Auftrag aufrufen.

Die vorkonfigurierte Remoteüberwachungslösung verwendet gemeldete Eigenschaften, um Details zu unterstützten Methoden an IoT Hub zu senden. Das Lösungs-Back-End enthält eine Liste aller Methoden, die von den einzelnen Geräten unterstützt werden, zusammen mit einem Verlauf der Methodenaufrufe. Sie können die Informationen zu Geräten und Aufrufmethoden im Lösungsportal anzeigen.

Damit der IoT Hub darüber benachrichtigt wird, dass ein Gerät eine Methode unterstützt, muss das Gerät Details der Methode zum Knoten SupportedMethods in den gemeldeten Eigenschaften hinzufügen:

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

Die Methodensignatur weist das folgende Format auf: <method name>--<parameter #0 name>-<parameter #1 type>-...-<parameter #n name>-<parameter #n type>. Verwenden Sie z.B. die folgende Methodensignatur, um festzulegen, dass die Methode InitiateFirmwareUpdate einen Zeichenfolgenparameter namens FwPackageURI erwartet:

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

Eine Liste der unterstützten Parametertypen finden Sie unter der Klasse CommandTypes im Projekt „Infrastructure“.

Legen Sie für die Methodensignatur in den gemeldeten Eigenschaften null fest, um eine Methode zu löschen.

Hinweis

Das Lösungs-Back-End aktualisiert nur Informationen zu unterstützten Methoden, wenn es vom Gerät eine Meldung zu Geräteinformationen erhält.

Das folgende Codebeispiel aus der Klasse SampleDeviceFactory im Projekt „Common“ zeigt, wie der Liste SupportedMethods in den vom Gerät gesendeten Eigenschaften eine Methode hinzugefügt wird:

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") }
));

Dieser Codeausschnitt fügt Details der Methode InitiateFirmwareUpdate hinzu, einschließlich des im Lösungsportal anzuzeigenden Texts sowie Details der erforderlichen Methodenparameter.

Der Simulator sendet beim Start des Simulators gemeldete Eigenschaften, einschließlich der Liste unterstützter Methoden, an den IoT Hub.

Fügen Sie dem Simulatorcode für jede unterstützte Methode einen Handler hinzu. Sie können die vorhandenen Handler in der CoolerDevice-Klasse im Projekt „Simulator.WebJob“ sehen. Das folgende Beispiel zeigt den Handler für die Methode 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));
    }
}

Methodenhandlernamen müssen mit On beginnen, gefolgt vom Namen der Methode. Der Parameter methodRequest enthält Parameter, die beim Methodenaufruf vom Lösungs-Back-End übergeben werden. Der Rückgabewert muss vom Typ Task<MethodResponse> sein. Die Hilfsmethode BuildMethodResponse hilft Ihnen beim Erstellen des Rückgabewerts.

Im Methodenhandler können Sie folgende Aktionen ausführen:

  • Starten einer asynchronen Aufgabe
  • Abrufen gewünschter Eigenschaften vom Gerätezwilling in IoT Hub
  • Aktualisieren einer einzelnen gemeldeten Eigenschaft mithilfe der Methode SetReportedPropertyAsync in der Klasse CoolerDevice.
  • Aktualisieren mehrerer gemeldeter Eigenschaften durch Erstellen einer TwinCollection-Instanz und Aufrufen der Methode Transport.UpdateReportedPropertiesAsync

Im o.g. Beispiel für Firmwareupdates werden die folgenden Schritte ausgeführt:

  • Überprüfen, ob das Gerät die Anforderung für ein Firmwareupdate akzeptieren kann
  • Asynchrones Initiieren des Firmwareupdatevorgangs und Zurücksetzen der Telemetrie nach Abschluss des Vorgangs
  • Sofortiges Ausgeben der Meldung „FirmwareUpdate accepted“ (Firmwareupdate akzeptiert), um anzugeben, dass die Anforderung vom Gerät akzeptiert wurde

Erstellen und Verwenden eines eigenen (physischen) Geräts

Die Azure IoT-SDKs bieten Bibliotheken zum Verbinden zahlreicher Gerätetypen (Sprachen und Betriebssysteme) mit IoT-Lösungen.

Ändern von Dashboardgrenzwerten

Anzahl angezeigter Geräte im Dropdownfeld des Dashboards

Standardwert: 200. Diese Zahl kann in DashboardController.cs geändert werden.

Anzahl angezeigter Pins im Bing Karten-Steuerelement

Standardwert: 200. Diese Zahl kann in TelemetryApiController.cs geändert werden.

Zeitraum der Telemetriegrafik

Standardwert: 10 Minuten. Diesen Wert können Sie in TelemetryApiController.cs ändern.

Feedback

Möchten Sie Anpassungsvorschläge zu diesem Dokument machen? Nutzen Sie UserVoice, um neue Features vorzuschlagen, oder verfassen Sie einen Kommentar zu diesem Artikel.

Nächste Schritte

Weitere Informationen zu den Optionen zum Anpassen der vorkonfigurierten Lösungen finden Sie unter: