Sdílet prostřednictvím


Přizpůsobení předkonfigurovaného řešení

Předkonfigurovaná řešení poskytovaná se sadou Azure IoT Suite demonstrují služby v rámci sady, které společně spolupracují a poskytují ucelené řešení. Od tohoto výchozího bodu existují různá místa, kde můžete rozšířit a přizpůsobit řešení pro konkrétní scénáře. Následující části popisují tyto běžné body přizpůsobení.

Vyhledání zdrojového kódu

Zdrojový kód pro předkonfigurovaná řešení je k dispozici na GitHubu v následujících úložištích:

Zdrojový kód pro předkonfigurovaná řešení se poskytuje k předvedení vzorů a postupů používaných k implementaci kompletních funkcí řešení IoT pomocí sady Azure IoT Suite. Další informace o sestavení a nasazení řešení najdete v úložištích GitHubu.

Změna předkonfigurovaných pravidel

Řešení pro vzdálené monitorování zahrnuje tři úlohy Azure Stream Analytics pro zpracování informací o zařízení, telemetrii a logiky pravidel v řešení.

Tři úlohy analýzy datových proudů a jejich syntaxe jsou podrobně popsány v průvodci předkonfigurovaným řešením vzdáleného monitorování.

Tyto úlohy můžete upravit přímo a změnit logiku nebo přidat logiku specifickou pro váš scénář. Úlohy Stream Analytics najdete takto:

  1. Přejděte na Azure portal.

  2. Přejděte do skupiny prostředků se stejným názvem jako vaše řešení IoT.

  3. Vyberte úlohu Azure Stream Analytics, kterou chcete upravit.

  4. Zastavte úlohu výběrem Zastavit v sadě příkazů.

  5. Upravte vstupy, dotazy a výstupy.

    Jednoduchou úpravou je změna dotazu pro úlohu Pravidla tak, aby používala "<" místo ">". Při úpravě pravidla se na portálu řešení zobrazuje ">" , ale všimněte si, jak se chování překlopí kvůli změně v podkladové úloze.

  6. Zahajte práci

Poznámka:

Řídicí panel pro vzdálené monitorování závisí na konkrétních datech, takže změna úloh může způsobit selhání řídicího panelu.

Přidání vlastních pravidel

Kromě změny předkonfigurovaných úloh Azure Stream Analytics můžete pomocí webu Azure Portal přidat nové úlohy nebo přidat nové dotazy do existujících úloh.

Přizpůsobení zařízení

Jednou z nejběžnějších aktivit rozšíření je práce se zařízeními specifickými pro váš scénář. Pro práci se zařízeními existuje několik metod. Mezi tyto metody patří změna simulovaného zařízení tak, aby odpovídalo vašemu scénáři, nebo použití sady IoT Device SDK k připojení fyzického zařízení k řešení.

Podrobný průvodce přidáním zařízení najdete v článku o připojení zařízení sady Iot Suite a ukázkové sadě C SDK pro vzdálené monitorování. Tato ukázka je navržená tak, aby fungovala s předkonfigurovaným řešením vzdáleného monitorování.

Vytvoření vlastního simulovaného zařízení

Součástí zdrojového kódu řešení pro vzdálené monitorování je simulátor .NET. Tento simulátor je zřízený jako součást řešení a můžete ho změnit tak, aby odesílal různá metadata, telemetrii a reagoval na různé příkazy a metody.

Předkonfigurovaný simulátor v předkonfigurovaném řešení vzdáleného monitorování simuluje chladnější zařízení, které generuje telemetrii teploty a vlhkosti. Simulátor můžete upravit v projektu Simulator.WebJob , když jste vytvořili fork úložiště GitHub.

Dostupná umístění pro simulovaná zařízení

Výchozí sada umístění je v Seattlu/Redmondu, Washingtonu, Usa. Tato umístění můžete změnit v SampleDeviceFactory.cs.

Přidání obslužné rutiny aktualizace požadované vlastnosti do simulátoru

Hodnotu požadované vlastnosti pro zařízení můžete nastavit na portálu řešení. Zařízení je zodpovědné za vyřízení žádosti o změnu vlastnosti, když načte požadovanou hodnotu vlastnosti. Pokud chcete přidat podporu pro změnu hodnoty vlastnosti prostřednictvím požadované vlastnosti, musíte do simulátoru přidat obslužnou rutinu.

Simulátor obsahuje obslužné rutiny pro vlastnosti SetPointTemp a TelemetryInterval , které můžete aktualizovat nastavením požadovaných hodnot na portálu řešení.

Následující příklad ukazuje obslužnou rutinu pro požadovanou vlastnost SetPointTemp ve třídě CoolerDevice.

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

    await SetReportedPropertyAsync(SetPointTempPropertyName, telemetry.SetPointTemperature);
}

Tato metoda aktualizuje teplotu bodu telemetrie a potom nahlásí změnu zpět do služby IoT Hub nastavením ohlášené vlastnosti.

Vlastní obslužné rutiny pro vlastní vlastnosti můžete přidat podle vzoru v předchozím příkladu.

Musíte také přiřadit požadovanou vlastnost k obslužné rutině, jak je znázorněno v následujícím příkladu z konstruktoru CoolerDevice:

_desiredPropertyUpdateHandlers.Add(SetPointTempPropertyName, OnSetPointTempUpdate);

Všimněte si, že SetPointTempPropertyName je konstanta definovaná jako Config.SetPointTemp.

Přidání podpory pro novou metodu do simulátoru

Simulátor můžete přizpůsobit a přidat podporu pro novou metodu (přímou metodu). Vyžaduje se dva klíčové kroky:

  • Simulátor musí informovat centrum IoT v předkonfigurovaném řešení podrobnostmi o metodě.
  • Simulátor musí obsahovat kód pro zpracování volání metody, když ho vyvoláte z panelu Podrobností o zařízení v Průzkumníku řešení nebo prostřednictvím úlohy.

Předkonfigurované řešení vzdáleného monitorování používá ohlášené vlastnosti k odesílání podrobností o podporovaných metodách do ioT Hubu. Back-end řešení udržuje seznam všech metod podporovaných jednotlivými zařízeními spolu s historií vyvolání metod. Tyto informace o zařízeních a vyvolání metod můžete zobrazit na portálu řešení.

Pokud chcete centru IoT oznámit, že zařízení podporuje metodu, musí zařízení přidat podrobnosti o metodě do uzlu SupportedMethods v ohlášených vlastnostech:

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

Podpis metody má následující formát: <method name>--<parameter #0 name>-<parameter #1 type>-...-<parameter #n name>-<parameter #n type>. Pokud například chcete zadat metodu InitiateFirmwareUpdate , očekává řetězcový parametr s názvem FwPackageURI, použijte následující podpis metody:

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

Seznam podporovaných typů parametrů naleznete v commandTypes třída v projektu Infrastructure.

Pokud chcete odstranit metodu, nastavte podpis metody na null v hlášených vlastnostech.

Poznámka:

Back-end řešení aktualizuje pouze informace o podporovaných metodách, když ze zařízení obdrží zprávu o informacích o zařízení .

Následující ukázka kódu z SampleDeviceFactory třídy v projektu Common ukazuje, jak přidat metodu do seznamu SupportedMethods v ohlášených vlastnostech odesílaných zařízením:

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

Tento fragment kódu přidá podrobnosti o metodě InitiateFirmwareUpdate včetně textu pro zobrazení na portálu řešení a podrobností požadovaných parametrů metody.

Simulátor odesílá ohlášené vlastnosti, včetně seznamu podporovaných metod, do služby IoT Hub při spuštění simulátoru.

Přidejte obslužnou rutinu do kódu simulátoru pro každou metodu, která podporuje. Existující obslužné rutiny můžete zobrazit ve třídě CoolerDevice v projektu Simulator.WebJob. Následující příklad ukazuje obslužnou rutinu pro metodu 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));
    }
}

Názvy obslužných rutin metod musí začínat symbolem On následovaným názvem metody. Parametr methodRequest obsahuje všechny parametry předané metodou vyvolání z back-endu řešení. Návratová hodnota musí být typu Task<MethodResponse>. Metoda Nástroje BuildMethodResponse pomáhá vytvořit návratové hodnoty.

V rámci metody obsluhy můžete:

  • Spusťte asynchronní úlohu.
  • Načtěte požadované vlastnosti z dvojčete zařízení ve službě IoT Hub.
  • Aktualizujte jednu hlášenou vlastnost pomocí SetReportedPropertyAsync metoda ve třídě CoolerDevice .
  • Aktualizace více ohlášených vlastností vytvořením TwinCollection instance a volání Transport.UpdateReportedPropertiesAsync metoda.

Předchozí příklad aktualizace firmwaru provádí následující kroky:

  • Zkontroluje, jestli zařízení dokáže přijmout žádost o aktualizaci firmwaru.
  • Asynchronně zahájí operaci aktualizace firmwaru a po dokončení operace resetuje telemetrii.
  • Okamžitě vrátí zprávu FirmwareUpdate přijatou, která indikuje, že zařízení přijalo požadavek.

Vytvoření a použití vlastního (fyzického) zařízení

Sady SDK Azure IoT poskytují knihovny pro připojení mnoha typů zařízení (jazyků a operačních systémů) k řešením IoT.

Úprava limitů řídicího panelu

Počet zařízení zobrazených v rozevíracím seznamu řídicího panelu

Výchozí hodnota je 200. Toto číslo můžete změnit v DashboardController.cs.

Počet špendlíků, které se mají zobrazit v ovládacím prvku Mapy Bingu

Výchozí hodnota je 200. Toto číslo můžete změnit v TelemetryApiController.cs.

Časové období grafu telemetrie

Výchozí hodnota je 10 minut. Tuto hodnotu můžete změnit v TelmetryApiController.cs.

Zpětná vazba

Máte vlastní nastavení, které byste chtěli vidět v tomto dokumentu? Přidání návrhů funkcí do User Voiceu nebo komentáře k tomuto článku

Další kroky

Další informace o možnostech přizpůsobení předkonfigurovaných řešení najdete tady: