Sdílet prostřednictvím


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

Předkonfigurovaná řešení poskytovaná se sadou Azure IoT Suite ukazují služby v rámci sady, které společně spolupracují a poskytují ucelené řešení. Od tohoto počáteční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 předkonfigurovaných řešení je k dispozici na GitHub v následujících úložištích:

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

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ě popsané v průvodci předkonfigurovaným řešením vzdáleného monitorování.

Tyto úlohy můžete upravit přímo tak, aby změnily logiku, nebo můžete 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 možnosti Zastavit v sadě příkazů.

  5. Upravte vstupy, dotaz 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í stále zobrazuje ">" , ale všimněte si, jak se chování překlopí kvůli změně v podkladové úloze.

  6. Spuštění úlohy

Poznámka

Řídicí panel vzdáleného 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í 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 pro připojení fyzického zařízení k řešení.

Podrobný průvodce přidáním zařízení najdete v článku Iot Suite Připojení zařízení a ukázky sady 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 se odesílala různá metadata, telemetrie a reagovaly 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 Simulátor.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 Ameriky. Tato umístění můžete změnit v SampleDeviceFactory.cs.

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

Na portálu řešení můžete nastavit hodnotu požadované vlastnosti pro zařízení. Za zpracování žádosti o změnu vlastnosti zodpovídá zařízení, když zařízení 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 SetPointTemp desired vlastnost 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 pak nahlásí změnu zpět na 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é vytvořit vazbu požadované vlastnosti na obslužnou rutinu, 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 tak, aby přidal podporu pro novou metodu (přímou metodu). Je potřeba provést dva klíčové kroky:

  • Simulátor musí informovat IoT Hub v předkonfigurovaném řešení s podrobnostmi o metodě.
  • Simulátor musí obsahovat kód pro zpracování volání metody, když ho vyvoláte z panelu podrobností 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 službě IoT Hub 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 chcete například zadat metodu InitiateFirmwareUpdate , očekává parametr řetězce s názvem FwPackageURI, použijte následující podpis metody:

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

Seznam podporovaných typů parametrů najdete v části CommandTypes třídy v projektu Infrastruktura.

Pokud chcete odstranit metodu, nastavte podpis metody na null ohlášené vlastnosti.

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 common projektu ukazuje, jak přidat metodu do seznamu SupportedMethods v hláš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 k zobrazení na portálu řešení a podrobností požadovaných parametrů metody.

Simulátor odesílá hlášené vlastnosti, včetně seznamu podporovaných metod, 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 InitiateFirmwareUpdate metoda:

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 metody musí začínat On názvem metody. Parametr methodRequest obsahuje všechny parametry předané s vyvoláním metody z back-endu řešení. Návratová hodnota musí být typu TaskMethodResponse<>. Metoda Nástroje BuildMethodResponse vám pomůže vytvořit návratovou hodnotu.

Uvnitř obslužné rutiny metody můžete:

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

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

  • Zkontroluje, že zařízení může přijmout žádost o aktualizaci firmwaru.
  • Asynchronně zahájí operaci aktualizace firmwaru a po dokončení operace obnoví telemetrii.
  • Okamžitě vrátí zprávu FirmwareUpdate přijatou, aby se zobrazila žádost, kterou zařízení přijalo.

Sestavení 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ů) do řešení 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 řídicím panelu DashboardController.cs.

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

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

Časové období grafu telemetrie

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

Váš názor

Máte vlastní nastavení, které chcete zobrazit v tomto dokumentu? Přidejte do uživatelského hlasu návrhy funkcí nebo přidejte komentář k tomuto článku.

Další kroky

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