Udostępnij za pośrednictwem


Dostosowanie wstępnie skonfigurowanego rozwiązania

Wstępnie skonfigurowane rozwiązania dostarczane z pakietem Azure IoT Suite pokazują usługi w pakiecie, które współpracują ze sobą w celu dostarczenia kompleksowego rozwiązania. Od tego punktu początkowego istnieją różne miejsca, w których można rozszerzyć i dostosować rozwiązanie dla określonych scenariuszy. W poniższych sekcjach opisano te typowe punkty dostosowywania.

Znajdowanie kodu źródłowego

Kod źródłowy wstępnie skonfigurowanych rozwiązań jest dostępny w GitHub w następujących repozytoriach:

Kod źródłowy wstępnie skonfigurowanych rozwiązań jest dostarczany w celu zademonstrowania wzorców i rozwiązań używanych do implementowania kompleksowej funkcjonalności rozwiązania IoT przy użyciu pakietu Azure IoT Suite. Więcej informacji na temat tworzenia i wdrażania rozwiązań można znaleźć w repozytoriach GitHub.

Zmienianie wstępnie skonfigurowanych reguł

Rozwiązanie do monitorowania zdalnego obejmuje trzy zadania usługi Azure Stream Analytics do obsługi informacji o urządzeniu, telemetrii i logiki reguł w rozwiązaniu.

Trzy zadania usługi Stream Analytics i ich składnia zostały szczegółowo opisane w przewodniku po wstępnie skonfigurowanym rozwiązaniu do monitorowania zdalnego.

Możesz edytować te zadania bezpośrednio, aby zmienić logikę lub dodać logikę specyficzną dla danego scenariusza. Zadania usługi Stream Analytics można znaleźć w następujący sposób:

  1. Przejdź do Azure Portal.

  2. Przejdź do grupy zasobów o takiej samej nazwie jak rozwiązanie IoT.

  3. Wybierz zadanie usługi Azure Stream Analytics, które chcesz zmodyfikować.

  4. Zatrzymaj zadanie, wybierając pozycję Zatrzymaj w zestawie poleceń.

  5. Edytuj dane wejściowe, zapytania i dane wyjściowe.

    Prostą modyfikacją jest zmiana zapytania dla zadania Reguły, aby użyć <"" zamiast ">". Portal rozwiązania nadal wyświetla wartość ">" podczas edytowania reguły, ale zwróć uwagę, jak zachowanie jest przerzucane ze względu na zmianę zadania bazowego.

  6. Uruchamianie zadania

Uwaga

Pulpit nawigacyjny monitorowania zdalnego zależy od określonych danych, więc zmiana zadań może spowodować niepowodzenie pulpitu nawigacyjnego.

Dodawanie własnych reguł

Oprócz zmiany wstępnie skonfigurowanych zadań usługi Azure Stream Analytics można użyć Azure Portal do dodawania nowych zadań lub dodawania nowych zapytań do istniejących zadań.

Dostosowywanie urządzeń

Jedną z najczęstszych działań związanych z rozszerzeniem jest praca z urządzeniami specyficznymi dla danego scenariusza. Istnieje kilka metod pracy z urządzeniami. Te metody obejmują zmianę symulowanego urządzenia w celu dopasowania go do scenariusza lub użycie zestawu SDK urządzenia IoT w celu połączenia urządzenia fizycznego z rozwiązaniem.

Aby zapoznać się z przewodnikiem krok po kroku dotyczącym dodawania urządzeń, zobacz artykuł Iot Suite Connecting Devices (Zestaw Iot Suite Connecting Devices ) i przykładowy zestaw C SDK do monitorowania zdalnego. Ten przykład jest przeznaczony do pracy ze wstępnie skonfigurowanym rozwiązaniem do monitorowania zdalnego.

Tworzenie własnego symulowanego urządzenia

Zawarty w kodzie źródłowym rozwiązania do monitorowania zdalnego jest symulatorem platformy .NET. Ten symulator jest jednym z aprowizowania w ramach rozwiązania i można go zmienić w celu wysyłania różnych metadanych, telemetrii i reagowania na różne polecenia i metody.

Wstępnie skonfigurowany symulator w wstępnie skonfigurowanym rozwiązaniu do monitorowania zdalnego symuluje chłodniejsze urządzenie emitujące dane telemetryczne temperatury i wilgotności. Symulator można zmodyfikować w projekcie Simulator.WebJob po utworzeniu rozwidlenia repozytorium GitHub.

Dostępne lokalizacje dla symulowanych urządzeń

Domyślny zestaw lokalizacji znajduje się w Seattle/Redmond w stanie Waszyngton Stany Zjednoczone Ameryki. Możesz zmienić te lokalizacje w pliku SampleDeviceFactory.cs.

Dodawanie procedury obsługi aktualizacji żądanej właściwości do symulatora

Możesz ustawić wartość żądanej właściwości dla urządzenia w portalu rozwiązania. Urządzenie jest odpowiedzialne za obsługę żądania zmiany właściwości, gdy urządzenie pobiera żądaną właściwość. Aby dodać obsługę zmiany wartości właściwości za pomocą żądanej właściwości, należy dodać procedurę obsługi do symulatora.

Symulator zawiera programy obsługi właściwości SetPointTemp i TelemetryInterval , które można zaktualizować, ustawiając żądane wartości w portalu rozwiązania.

Poniższy przykład przedstawia procedurę obsługi żądanej właściwości SetPointTemp w klasie CoolerDevice :

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

    await SetReportedPropertyAsync(SetPointTempPropertyName, telemetry.SetPointTemperature);
}

Ta metoda aktualizuje temperaturę punktu telemetrii, a następnie zgłasza zmianę z powrotem do IoT Hub przez ustawienie zgłaszanej właściwości.

Możesz dodać własne programy obsługi dla własnych właściwości, postępując zgodnie ze wzorcem w poprzednim przykładzie.

Należy również powiązać żądaną właściwość z procedurą obsługi, jak pokazano w poniższym przykładzie z konstruktora CoolerDevice :

_desiredPropertyUpdateHandlers.Add(SetPointTempPropertyName, OnSetPointTempUpdate);

Należy zauważyć, że SetPointTempPropertyName jest stałą zdefiniowaną jako "Config.SetPointTemp".

Dodawanie obsługi nowej metody do symulatora

Możesz dostosować symulator, aby dodać obsługę nowej metody (metody bezpośredniej). Wymagane są dwa kluczowe kroki:

  • Symulator musi powiadomić centrum IoT w wstępnie skonfigurowanym rozwiązaniu ze szczegółami metody.
  • Symulator musi zawierać kod do obsługi wywołania metody podczas wywoływania go z panelu Szczegóły urządzenia w Eksploratorze rozwiązań lub za pośrednictwem zadania.

Wstępnie skonfigurowane rozwiązanie do monitorowania zdalnego używa zgłaszanych właściwości do wysyłania szczegółów obsługiwanych metod do centrum IoT. Zaplecze rozwiązania przechowuje listę wszystkich metod obsługiwanych przez każde urządzenie wraz z historią wywołań metod. Te informacje o urządzeniach i metodach wywoływanych można wyświetlić w portalu rozwiązania.

Aby powiadomić centrum IoT, że urządzenie obsługuje metodę, urządzenie musi dodać szczegóły metody do węzła SupportedMethods we zgłoszonych właściwościach:

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

Podpis metody ma następujący format: <method name>--<parameter #0 name>-<parameter #1 type>-...-<parameter #n name>-<parameter #n type>. Aby na przykład określić metodę InitiateFirmwareUpdate oczekuje parametru ciągu o nazwie FwPackageURI, użyj następującej sygnatury metody:

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

Aby uzyskać listę obsługiwanych typów parametrów, zobacz klasę CommandTypes w projekcie Infrastruktura.

Aby usunąć metodę, ustaw sygnaturę metody na null w zgłaszanych właściwościach.

Uwaga

Zaplecze rozwiązania aktualizuje tylko informacje o obsługiwanych metodach po odebraniu komunikatu o informacjach o urządzeniu z urządzenia.

Poniższy przykładowy kod z klasy SampleDeviceFactory w projekcie Common pokazuje, jak dodać metodę do listy elementów SupportedMethods we zgłoszonych właściwościach wysyłanych przez urządzenie:

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

Ten fragment kodu dodaje szczegóły metody InitiateFirmwareUpdate , w tym tekst do wyświetlenia w portalu rozwiązania oraz szczegóły wymaganych parametrów metody.

Symulator wysyła zgłoszone właściwości, w tym listę obsługiwanych metod, aby IoT Hub po uruchomieniu symulatora.

Dodaj procedurę obsługi do kodu symulatora dla każdej obsługiwanej metody. Istniejące programy obsługi są widoczne w klasie CoolerDevice w projekcie Simulator.WebJob. W poniższym przykładzie przedstawiono procedurę obsługi metody 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));
    }
}

Nazwy procedur obsługi metod muszą zaczynać się On od nazwy metody. Parametr methodRequest zawiera wszystkie parametry przekazywane z wywołaniem metody z zaplecza rozwiązania. Zwracana wartość musi być typu TaskMethodResponse<>. Metoda narzędzia BuildMethodResponse ułatwia utworzenie wartości zwracanej.

Wewnątrz procedury obsługi metody można wykonać następujące elementy:

  • Uruchom zadanie asynchroniczne.
  • Pobierz żądane właściwości z bliźniaczej reprezentacji urządzenia w IoT Hub.
  • Zaktualizuj pojedynczą zgłoszoną właściwość przy użyciu metody SetReportedPropertyAsync w klasie CoolerDevice .
  • Zaktualizuj wiele zgłoszonych właściwości, tworząc wystąpienie TwinCollection i wywołując metodę Transport.UpdateReportedPropertiesAsync .

Powyższy przykład aktualizacji oprogramowania układowego wykonuje następujące kroki:

  • Sprawdza, czy urządzenie może zaakceptować żądanie aktualizacji oprogramowania układowego.
  • Asynchronicznie inicjuje operację aktualizacji oprogramowania układowego i resetuje dane telemetryczne po zakończeniu operacji.
  • Natychmiast zwraca komunikat "FirmwareUpdate accepted", aby wskazać, że żądanie zostało zaakceptowane przez urządzenie.

Tworzenie i używanie własnego urządzenia (fizycznego)

Zestawy SDK usługi Azure IoT udostępniają biblioteki do łączenia wielu typów urządzeń (języków i systemów operacyjnych) z rozwiązaniami IoT.

Modyfikowanie limitów pulpitu nawigacyjnego

Liczba urządzeń wyświetlanych na liście rozwijanej pulpitu nawigacyjnego

Wartość domyślna to 200. Tę liczbę można zmienić w pliku DashboardController.cs.

Liczba pinezek do wyświetlenia w kontrolce mapy Bing

Wartość domyślna to 200. Tę liczbę można zmienić w pliku TelemetryApiController.cs.

Okres wykresu telemetrii

Wartość domyślna to 10 minut. Tę wartość można zmienić w pliku TelmetryApiController.cs.

Opinia

Czy masz dostosowanie, które chcesz zobaczyć w tym dokumencie? Dodaj sugestie dotyczące funkcji do funkcji User Voice lub dodaj komentarz do tego artykułu.

Następne kroki

Aby dowiedzieć się więcej na temat opcji dostosowywania wstępnie skonfigurowanych rozwiązań, zobacz: