Delen via


Een vooraf geconfigureerde oplossing aanpassen

De vooraf geconfigureerde oplossingen die worden geleverd met azure IoT Suite demonstreren de services in de suite die samenwerken om een end-to-end oplossing te leveren. Vanaf dit startpunt zijn er verschillende plaatsen waar u de oplossing voor specifieke scenario's kunt uitbreiden en aanpassen. In de volgende secties worden deze algemene aanpassingspunten beschreven.

De broncode zoeken

De broncode voor de vooraf geconfigureerde oplossingen is beschikbaar op GitHub in de volgende opslagplaatsen:

De broncode voor de vooraf geconfigureerde oplossingen wordt geleverd om de patronen en procedures te demonstreren die worden gebruikt om de end-to-end-functionaliteit van een IoT-oplossing te implementeren met behulp van Azure IoT Suite. U vindt meer informatie over het bouwen en implementeren van de oplossingen in de GitHub opslagplaatsen.

De vooraf geconfigureerde regels wijzigen

De externe bewakingsoplossing bevat drie Azure Stream Analytics-taken voor het verwerken van apparaatgegevens, telemetrie en regelslogica in de oplossing.

De drie stream analytics-taken en hun syntaxis worden uitgebreid beschreven in het overzicht van de vooraf geconfigureerde oplossing voor externe bewaking.

U kunt deze taken rechtstreeks bewerken om de logica te wijzigen of logica toe te voegen die specifiek is voor uw scenario. U vindt de Stream Analytics-taken als volgt:

  1. Ga naar Azure Portal.

  2. Navigeer naar de resourcegroep met dezelfde naam als uw IoT-oplossing.

  3. Selecteer de Azure Stream Analytics-taak die u wilt wijzigen.

  4. Stop de taak door Stoppen in de set opdrachten te selecteren.

  5. Bewerk de invoer, query en uitvoer.

    Een eenvoudige wijziging is het wijzigen van de query voor de taak Regels om een '<' te gebruiken in plaats van een ''>. In de oplossingsportal wordt nog steeds '>' weergegeven wanneer u een regel bewerkt, maar u ziet hoe het gedrag wordt gespiegeld vanwege de wijziging in de onderliggende taak.

  6. Taak starten

Notitie

Het dashboard voor externe bewaking is afhankelijk van specifieke gegevens, zodat het wijzigen van de taken ertoe kan leiden dat het dashboard mislukt.

Uw eigen regels toevoegen

Naast het wijzigen van de vooraf geconfigureerde Azure Stream Analytics-taken, kunt u de Azure Portal gebruiken om nieuwe taken toe te voegen of nieuwe query's toe te voegen aan bestaande taken.

Apparaten aanpassen

Een van de meest voorkomende uitbreidingsactiviteiten is het werken met apparaten die specifiek zijn voor uw scenario. Er zijn verschillende methoden voor het werken met apparaten. Deze methoden omvatten het wijzigen van een gesimuleerd apparaat dat overeenkomt met uw scenario of het gebruik van de IoT Device SDK om uw fysieke apparaat te verbinden met de oplossing.

Zie het artikel Iot Suite Connecting Devices en het C SDK-voorbeeld voor externe bewaking voor een stapsgewijze handleiding voor het toevoegen van apparaten. Dit voorbeeld is ontworpen om te werken met de vooraf geconfigureerde oplossing voor externe bewaking.

Uw eigen gesimuleerde apparaat maken

Opgenomen in de broncode van de externe bewakingsoplossing, is een .NET-simulator. Deze simulator is de simulator die is ingericht als onderdeel van de oplossing en u kunt deze wijzigen om verschillende metagegevens, telemetrie te verzenden en te reageren op verschillende opdrachten en methoden.

De vooraf geconfigureerde simulator in de vooraf geconfigureerde oplossing voor externe bewaking simuleert een koeler apparaat dat telemetriegegevens over temperatuur en vochtigheid verzendt. U kunt de simulator in het project Simulator.WebJob wijzigen wanneer u de GitHub opslagplaats hebt gevorkt.

Beschikbare locaties voor gesimuleerde apparaten

De standaardset locaties is in Seattle/Redmond, Washington, Verenigde Staten van Amerika. U kunt deze locaties wijzigen in SampleDeviceFactory.cs.

Een gewenste handler voor eigenschapsupdates toevoegen aan de simulator

U kunt een waarde instellen voor een gewenste eigenschap voor een apparaat in de oplossingsportal. Het is de verantwoordelijkheid van het apparaat om de aanvraag voor eigenschapswijziging te verwerken wanneer het apparaat de gewenste eigenschapswaarde ophaalt. Als u ondersteuning wilt toevoegen voor een wijziging van een eigenschapswaarde via een gewenste eigenschap, moet u een handler toevoegen aan de simulator.

De simulator bevat handlers voor de eigenschappen SetPointTemp en TelemetryInterval die u kunt bijwerken door de gewenste waarden in te stellen in de oplossingsportal.

In het volgende voorbeeld ziet u de handler voor de gewenste eigenschap SetPointTemp in de klasse CoolerDevice :

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

    await SetReportedPropertyAsync(SetPointTempPropertyName, telemetry.SetPointTemperature);
}

Met deze methode wordt de temperatuur van het telemetriepunt bijgewerkt en wordt de wijziging vervolgens teruggegeven aan IoT Hub door een gerapporteerde eigenschap in te stellen.

U kunt uw eigen handlers toevoegen voor uw eigen eigenschappen door het patroon in het voorgaande voorbeeld te volgen.

U moet ook de gewenste eigenschap binden aan de handler, zoals wordt weergegeven in het volgende voorbeeld van de CoolerDevice-constructor :

_desiredPropertyUpdateHandlers.Add(SetPointTempPropertyName, OnSetPointTempUpdate);

SetPointTempPropertyName is een constante die is gedefinieerd als 'Config.SetPointTemp'.

Ondersteuning voor een nieuwe methode toevoegen aan de simulator

U kunt de simulator aanpassen om ondersteuning voor een nieuwe methode (directe methode) toe te voegen. Er zijn twee belangrijke stappen vereist:

  • De simulator moet de IoT-hub in de vooraf geconfigureerde oplossing op de hoogte stellen met details van de methode.
  • De simulator moet code bevatten om de methode-aanroep af te handelen wanneer u deze aanroept vanuit het deelvenster Apparaatdetails in solution Explorer of via een taak.

De vooraf geconfigureerde oplossing voor externe bewaking maakt gebruik van gerapporteerde eigenschappen om details van ondersteunde methoden naar IoT Hub te verzenden. De back-end van de oplossing onderhoudt een lijst met alle methoden die door elk apparaat worden ondersteund, samen met een geschiedenis van methode-aanroepen. U kunt deze informatie over apparaten weergeven en methoden aanroepen in de oplossingsportal.

Als u de IoT-hub wilt waarschuwen dat een apparaat een methode ondersteunt, moet het apparaat details van de methode toevoegen aan het knooppunt SupportedMethods in de gerapporteerde eigenschappen:

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

De methodehandtekening heeft de volgende indeling: <method name>--<parameter #0 name>-<parameter #1 type>-...-<parameter #n name>-<parameter #n type>. Als u bijvoorbeeld de methode InitiateFirmwareUpdate wilt opgeven, verwacht u een tekenreeksparameter met de naam FwPackageURI, met de volgende methodehandtekening:

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

Zie de klasse CommandTypes in het infrastructuurproject voor een lijst met ondersteunde parametertypen.

Als u een methode wilt verwijderen, stelt u de methodehandtekening null in op de gerapporteerde eigenschappen.

Notitie

De back-end van de oplossing werkt alleen informatie over ondersteunde methoden bij wanneer er een bericht over apparaatgegevens van het apparaat wordt ontvangen.

In het volgende codevoorbeeld uit de klasse SampleDeviceFactory in het common-project ziet u hoe u een methode toevoegt aan de lijst met SupportedMethods in de gerapporteerde eigenschappen die door het apparaat worden verzonden:

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

Met dit codefragment worden details toegevoegd van de methode InitiateFirmwareUpdate , inclusief tekst die moet worden weergegeven in de oplossingsportal en details van de vereiste methodeparameters.

De simulator verzendt gerapporteerde eigenschappen, inclusief de lijst met ondersteunde methoden, naar IoT Hub wanneer de simulator wordt gestart.

Voeg een handler toe aan de simulatorcode voor elke methode die wordt ondersteund. U ziet de bestaande handlers in de klasse CoolerDevice in het project Simulator.WebJob. In het volgende voorbeeld ziet u de handler voor de 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));
    }
}

Namen van methode-handler moeten beginnen met On gevolgd door de naam van de methode. De parameter methodRequest bevat alle parameters die worden doorgegeven met de methodeaanroep vanuit de back-end van de oplossing. De retourwaarde moet van het type TaskMethodResponse<> zijn. Met de methode BuildMethodResponse kunt u de retourwaarde maken.

In de methode-handler kunt u het volgende doen:

  • Een asynchrone taak starten.
  • Haal de gewenste eigenschappen op van de apparaatdubbel in IoT Hub.
  • Werk één gerapporteerde eigenschap bij met behulp van de methode SetReportedPropertyAsync in de klasse CoolerDevice .
  • Werk meerdere gerapporteerde eigenschappen bij door een TwinCollection-exemplaar te maken en de methode Transport.UpdateReportedPropertiesAsync aan te roepen.

In het voorgaande voorbeeld van de firmware-update worden de volgende stappen uitgevoerd:

  • Controleert of het apparaat de aanvraag voor de firmware-update kan accepteren.
  • Asynchroon initieert de firmware-updatebewerking en stelt de telemetrie opnieuw in wanneer de bewerking is voltooid.
  • Retourneert onmiddellijk het bericht 'FirmwareUpdate geaccepteerd' om aan te geven dat de aanvraag door het apparaat is geaccepteerd.

Uw eigen (fysieke) apparaat bouwen en gebruiken

De Azure IoT SDK's bieden bibliotheken voor het verbinden van tal van apparaattypen (talen en besturingssystemen) in IoT-oplossingen.

Dashboardlimieten wijzigen

Aantal apparaten dat wordt weergegeven in de vervolgkeuzelijst dashboard

De standaardwaarde is 200. U kunt dit nummer wijzigen in DashboardController.cs.

Aantal pinnen dat moet worden weergegeven in Bing Kaartbesturing

De standaardwaarde is 200. U kunt dit nummer wijzigen in TelemetryApiController.cs.

Tijdsperiode van telemetriegrafiek

De standaardperiode is 10 minuten. U kunt deze waarde wijzigen in TelmetryApiController.cs.

Feedback

Hebt u een aanpassing die u in dit document wilt bekijken? Voeg functiesuggesties toe aan User Voice of voeg opmerkingen toe aan dit artikel.

Volgende stappen

Zie voor meer informatie over de opties voor het aanpassen van de vooraf geconfigureerde oplossingen: