Share via


Personalizar uma solução pré-configurada

As soluções pré-configuradas fornecidas com a Suite Azure IoT demonstram os serviços dentro da suite que trabalham em conjunto para oferecer uma solução de ponta a ponta. A partir deste ponto de partida, existem vários locais onde pode estender e personalizar a solução para cenários específicos. As seguintes secções descrevem estes pontos de personalização comuns.

Encontre o código fonte

O código-fonte das soluções pré-configuradas está disponível em GitHub nos seguintes repositórios:

O código fonte para as soluções pré-configuradas é fornecido para demonstrar os padrões e práticas utilizados para implementar a funcionalidade de ponta a ponta de uma solução IoT utilizando a Suite Azure IoT. Pode encontrar mais informações sobre como construir e implementar as soluções nos repositórios GitHub.

Alterar as regras pré-configuradas

A solução de monitorização remota inclui três trabalhos do Azure Stream Analytics para lidar com informações do dispositivo, telemetria e lógica de regras na solução.

Os três trabalhos de análise de fluxo e a sua sintaxe são descritos em profundidade na monitorização remota da solução pré-configurada.

Pode editar estes trabalhos diretamente para alterar a lógica, ou adicionar lógica específica ao seu cenário. Pode encontrar os trabalhos stream Analytics da seguinte forma:

  1. Vai para portal do Azure.

  2. Navegue para o grupo de recursos com o mesmo nome que a sua solução IoT.

  3. Selecione o trabalho Azure Stream Analytics que gostaria de modificar.

  4. Parar o trabalho selecionando Stop no conjunto de comandos.

  5. Editar as entradas, consultas e saídas.

    Uma simples modificação é alterar a consulta para que o trabalho do Regimento utilize um "<" em vez de um ">". O portal da solução ainda mostra ">" quando edita uma regra, mas note como o comportamento é invertido devido à mudança no trabalho subjacente.

  6. Iniciar a tarefa

Nota

O painel de monitorização remoto depende de dados específicos, pelo que alterar os trabalhos pode fazer com que o painel falhe.

Adicione as suas próprias regras

Além de alterar os trabalhos pré-configurados do Azure Stream Analytics, pode utilizar o portal do Azure para adicionar novos empregos ou adicionar novas consultas aos empregos existentes.

Personalizar dispositivos

Uma das atividades de extensão mais comuns é trabalhar com dispositivos específicos do seu cenário. Existem vários métodos para trabalhar com dispositivos. Estes métodos incluem alterar um dispositivo simulado para corresponder ao seu cenário, ou usar o Dispositivo IoT SDK para ligar o seu dispositivo físico à solução.

Para obter um guia passo a passo para adicionar dispositivos, consulte o artigo Iot Suite Connecting Devices e a amostra C SDK de monitorização remota. Esta amostra foi concebida para funcionar com a solução pré-configurada de monitorização remota.

Crie o seu próprio dispositivo simulado

Incluído no código fonte da solução de monitorização remota, é um simulador .NET. Este simulador é o que é a previsto como parte da solução e pode alterá-lo para enviar diferentes metadados, telemetria e responder a diferentes comandos e métodos.

O simulador pré-configurado na solução pré-configurada de monitorização remota simula um dispositivo mais frio que emite telemetria de temperatura e humidade. Pode modificar o simulador no projeto Simulator.WebJob quando tiver feito o repositório GitHub.

Locais disponíveis para dispositivos simulados

O conjunto padrão de localizações é em Seattle/Redmond, Washington, Estados Unidos da América. Pode alterar estas localizações na SampleDeviceFactory.cs.

Adicione um manipulador de atualização de propriedade desejado ao simulador

Pode definir um valor para uma propriedade desejada para um dispositivo no portal da solução. É da responsabilidade do dispositivo lidar com o pedido de alteração de propriedade quando o dispositivo recupera o valor de propriedade pretendido. Para adicionar suporte para uma alteração de valor da propriedade através de uma propriedade desejada, você precisa adicionar um manipulador ao simulador.

O simulador contém manipuladores para as propriedades SetPointTemp e TelemetriaInterval que pode atualizar definindo os valores desejados no portal da solução.

O exemplo a seguir mostra o manipulador para a propriedade desejada setPointPointTemp na classe CoolerDevice :

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

    await SetReportedPropertyAsync(SetPointTempPropertyName, telemetry.SetPointTemperature);
}

Este método atualiza a temperatura do ponto de telemetria e, em seguida, reporta a alteração de volta para Hub IoT, definindo uma propriedade reportada.

Pode adicionar os seus próprios manipuladores para as suas próprias propriedades seguindo o padrão no exemplo anterior.

Deve também ligar a propriedade desejada ao manipulador, como mostra o seguinte exemplo do construtor CoolerDevice :

_desiredPropertyUpdateHandlers.Add(SetPointTempPropertyName, OnSetPointTempUpdate);

Note que SetPointTempPropertyName é uma constante definida como "Config.SetPointTemp".

Adicione suporte para um novo método ao simulador

Pode personalizar o simulador para adicionar suporte a um novo método (método direto). São necessários dois passos-chave:

  • O simulador deve notificar o hub IoT na solução pré-configurada com detalhes do método.
  • O simulador deve incluir código para lidar com a chamada de método quando o invocar do painel de detalhes do Dispositivo no explorador de solução ou através de um trabalho.

A solução de monitorização remota pré-configurada utiliza propriedades reportadas para enviar detalhes de métodos suportados para o hub IoT. A solução back end mantém uma lista de todos os métodos suportados por cada dispositivo juntamente com um histórico de invocações de métodos. Pode ver esta informação sobre dispositivos e invocar métodos no portal da solução.

Para notificar o hub IoT de que um dispositivo suporta um método, o dispositivo deve adicionar detalhes do método ao nó Demethods Suportado nas propriedades relatadas :

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

A assinatura do método tem o seguinte formato: <method name>--<parameter #0 name>-<parameter #1 type>-...-<parameter #n name>-<parameter #n type>. Por exemplo, para especificar o método InitiateFirmwareUpdate espera um parâmetro de cadeia chamado FwPackageURI, utilize a seguinte assinatura do método:

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

Para obter uma lista de tipos de parâmetros suportados, consulte a classe CommandTypes no projeto Infraestrutura.

Para eliminar um método, desa estale a assinatura null do método nas propriedades relatadas.

Nota

A solução de fundo apenas atualiza informações sobre métodos suportados quando recebe uma mensagem de informação do dispositivo do dispositivo.

A seguinte amostra de código da classe SampleDeviceFactory no projeto Comum mostra como adicionar um método à lista de Métodos Suportados nas propriedades relatadas enviadas pelo dispositivo:

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

Este código de corte adiciona detalhes do método InitiateFirmwareUpdate , incluindo texto para visualizar no portal da solução e detalhes dos parâmetros do método necessários.

O simulador envia propriedades reportadas, incluindo a lista de métodos suportados, para Hub IoT quando o simulador começar.

Adicione um manipulador ao código do simulador para cada método que suporta. Pode ver os manipuladores existentes na classe CoolerDevice no projeto Simulator.WebJob. O exemplo a seguir mostra o manipulador para o método 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));
    }
}

Os nomes do manipulador de métodos devem começar On por seguir o nome do método. O parâmetro métodoRequest contém quaisquer parâmetros passados com a invocação do método a partir da extremidade traseira da solução. O valor de devolução deve ser do tipo TaskMethodResponse<>. O método de utilidade BuildMethodResponse ajuda-o a criar o valor de retorno.

Dentro do manipulador de métodos, podia:

  • Comece uma tarefa assíncronea.
  • Recupere as propriedades desejadas do twin do dispositivo em Hub IoT.
  • Atualize uma única propriedade reportada utilizando o método SetReportedPropertyAsync na classe CoolerDevice .
  • Atualize várias propriedades reportadas criando uma instância TwinCollection e chamando o método Transport.UpdateReportedPropertiesAsync .

O exemplo anterior da atualização do firmware executa os seguintes passos:

  • Verifica se o dispositivo é capaz de aceitar o pedido de atualização do firmware.
  • Assíncroticamente inicia a operação de atualização do firmware e reinicia a telemetria quando a operação estiver concluída.
  • Devolve imediatamente a mensagem "FirmwareUpdate aceite" para indicar que o pedido foi aceite pelo dispositivo.

Construa e use o seu próprio dispositivo (físico)

Os SDKs Azure IoT fornecem bibliotecas para ligar inúmeros tipos de dispositivos (idiomas e sistemas operativos) a soluções IoT.

Modificar os limites do painel

Número de dispositivos apresentados no dropdown do painel

O padrão é de 200. Pode alterar este número no DashboardController.cs.

Número de pinos para exibir no controlo Bing mapa

O padrão é de 200. Pode alterar este número no TelemetryApiController.cs.

Período de tempo do gráfico de telemetria

A predefinição é de 10 minutos. Pode alterar este valor no TelmetryApiController.cs.

Comentários

Tem alguma personalização que gostaria de ver coberta neste documento? Adicione sugestões de funcionalidades ao User Voice ou comente este artigo.

Passos seguintes

Para saber mais sobre as opções de personalização das soluções pré-configuradas, consulte: