Definir o modelo de dispositivo de cafeteira

Concluído

Um modelo de dispositivo no Azure IoT Central é um blueprint que define as características e os comportamentos de um tipo de dispositivo que se conecta ao seu aplicativo. Por exemplo, o modelo de dispositivo define a telemetria que um dispositivo envia para que o IoT Central crie visualizações que usam as unidades e os tipos de dados corretos.

Um modelo de dispositivo inclui as seguintes seções:

  • Um modelo do dispositivo. Os dados que o simulador de cafeteira troca com seu aplicativo são especificados em um modelo de dispositivo.
    • Componente raiz. A interface do componente raiz descreve recursos que são específicos do modelo do dispositivo.
    • Componentes. Um modelo de dispositivo pode incluir componentes além do componente raiz para descrever os recursos do dispositivo. Neste cenário, você só usará o componente raiz para definir o modelo de Cafeteira Conectada.
    • Interface herdada. Um modelo de dispositivo contém uma ou mais interfaces que estendem os recursos do componente padrão. Neste cenário, você só definirá uma interface.
  • Exibições. Esta parte do modelo de dispositivo permite que você defina visualizações para exibir dados do dispositivo e formulários para gerenciar e controlar a cafeteira.

Após criar um modelo de dispositivo, você pode conectar um dispositivo simulado. O dispositivo simulado gera telemetria para que você possa testar o comportamento de seu aplicativo antes de conectar um dispositivo real.

Aqui, você verá como as definições de telemetria, propriedades e comandos são especificadas no modelo de dispositivo e as propriedades e exibições de nuvem necessárias para gerenciar e controlar os dispositivos no exemplo de cafeteiras habilitadas para IoT.

Telemetria

Telemetria são os dados que são transmitidos do dispositivo. É possível adicionar vários tipos de telemetria ao modelo do dispositivo de maneira que correspondam aos recursos do seu dispositivo. A cafeteira envia valores de temperatura da água e umidade do ar de seus sensores. Ela também envia informações de estado, indicando se está preparando uma bebida e quando uma xícara é detectada.

Propriedades

Use propriedades para compartilhar dados de configuração entre um dispositivo e seu aplicativo.

Neste cenário, você usa uma propriedade gravável para definir a temperatura ideal da água e a enviá-la para a cafeteira. Quando a propriedade gravável for atualizada no IoT Central, ela será marcada como pendente na interface do usuário até que o dispositivo reconheça que respondeu à atualização.

Você pode usar propriedades somente leitura para habilitar um dispositivo a enviar valores para seu aplicativo. Propriedades somente leitura só podem ser alteradas pelo dispositivo. Neste cenário, você define uma propriedade de dispositivo somente leitura chamada Device Warranty Expired no modelo do dispositivo. O campo Device Warranty Expired permanece vazio até a cafeteira ser conectada ao IoT Central. Uma vez conectada, a cafeteira envia o status da garantia para o aplicativo.

Propriedades de nuvem são metadados do dispositivo associados a ele. Use as propriedades de nuvem para registrar informações sobre o dispositivo em seu aplicativo no IoT Central. Neste cenário, você usa as propriedades de nuvem para registrar o intervalo ideal de temperatura da água da cafeteira. As propriedades de nuvem são armazenadas no aplicativo no IoT Central e não são sincronizadas com o dispositivo.

Comandos

Use comandos para gerenciar remotamente seu dispositivo do seu aplicativo. Você pode executar comandos diretamente no dispositivo da nuvem para controlá-lo. Neste cenário, você executa comandos em sua cafeteira para colocá-la no modo de manutenção ou para começar a preparar o café.

Exibições

Você pode personalizar a interface do usuário que o IoT Central exibe para gerenciar e monitorar dispositivos associados ao modelo de dispositivo. Neste cenário, você cria uma exibição para plotar os valores de telemetria enviados pelo dispositivo e cria um formulário para gerenciar as propriedades do dispositivo.

Modelo Cafeteira Conectada

Um modelo de dispositivo é a parte do modelo de dispositivo que define a telemetria, as propriedades e os comandos aos quais um dispositivo dá suporte. Você pode armazenar um modelo de funcionalidade do dispositivo em um arquivo JSON e importá-lo para o IoT Central. O JSON a seguir é o modelo de funcionalidade do dispositivo da cafeteira conectada.

{
    "@id": "dtmi:com:example:ConnectedCoffeeMaker;1",
    "@type": "Interface",
    "contents": [
        {
            "@type": ["Telemetry", "NumberValue", "Temperature"],
            "displayName": {
                "en": "Water Temperature"
            },
            "name": "WaterTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "decimalPlaces": 1,
            "maxValue": 100,
            "minValue": 86
        },
        {
            "@type": ["Telemetry", "NumberValue", "Humidity"],
            "displayName": {
                "en": "Air Humidity"
            },
            "name": "AirHumidity",
            "schema": "integer",
            "unit": "percent",
            "maxValue": 100,
            "minValue": 20
        },
        {
            "@type": ["Telemetry", "State"],
            "displayName": {
                "en": "Brewing"
            },
            "name": "Brewing",
            "schema": {
                "@type": "Enum",
                "enumValues": [
                    {
                        "displayName": {
                            "en": "Brewing"
                        },
                        "enumValue": "brewing",
                        "name": "Brewing"
                    },
                    {
                        "displayName": {
                            "en": "Not Brewing"
                        },
                        "enumValue": "notbrewing",
                        "name": "NotBrewing"
                    }
                ],
                "valueSchema": "string"
            }
        },
        {
            "@type": ["Telemetry", "State"],
            "displayName": {
                "en": "Cup Detected"
            },
            "name": "CupDetected",
            "schema": {
                "@type": "Enum",
                "enumValues": [
                    {
                        "displayName": {
                            "en": "Detected"
                        },
                        "enumValue": "detected",
                        "name": "Detected"
                    },
                    {
                        "displayName": {
                            "en": "Not Detected"
                        },
                        "enumValue": "notdetected",
                        "name": "NotDetected"
                    }
                ],
                "valueSchema": "string"
            }
        },
        {
            "@type": ["Property", "NumberValue", "Initialized", "Temperature"],
            "displayName": {
                "en": "Optimal Temperature"
            },
            "name": "OptimalTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "writable": true,
            "decimalPlaces": 1,
            "initialValue": 98,
            "maxValue": 100,
            "minValue": 86
        },
        {
            "@type": ["Property", "BooleanValue"],
            "displayName": {
                "en": "Device Warranty Expired"
            },
            "name": "DeviceWarrantyExpired",
            "schema": "boolean",
            "writable": false
        },
        {
            "@type": ["Property", "Cloud", "NumberValue", "Temperature"],
            "displayName": {
                "en": "Coffee Maker Min Temperature"
            },
            "name": "CoffeeMakerMinTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "decimalPlaces": 1,
            "maxValue": 92,
            "minValue": 88
        },
        {
            "@type": ["Property", "Cloud", "NumberValue", "Temperature"],
            "displayName": {
                "en": "Coffee Maker Max Temperature"
            },
            "name": "CoffeeMakerMaxTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "decimalPlaces": 1,
            "maxValue": 99,
            "minValue": 96
        },
        {
            "@type": "Command",
            "commandType": "synchronous",
            "displayName": {
                "en": "Set Maintenance Mode"
            },
            "name": "SetMaintenanceMode"
        },
        {
            "@type": "Command",
            "commandType": "synchronous",
            "displayName": {
                "en": "Start Brewing"
            },
            "name": "StartBrewing"
        }
    ],
    "displayName": {
        "en": "Connected Coffee Maker"
    },
    "@context": [
        "dtmi:iotcentral:context;2",
        "dtmi:dtdl:context;2"
    ]
}
  • O campo @id é o DTMI (Identificador de Modelo de Gêmeo Digital) para o modelo, no formato dtmi:<domain>:<unique-model-identifier>;<model-version-number>.
  • O @type identifica o tipo de informações que estão sendo descritas. Por exemplo, "@type": "Interface" é usado para indicar o tipo da entidade DTDL (Linguagem de Definição dos Gêmeos Digitais). Neste caso, a entidade é uma Interface.
  • O campo contents é uma matriz de definições de atributo. Cada atributo precisa fornecer um @type para identificar o tipo de informações de interface que ele descreve. Nesse caso, os objetos Telemetry, Property e Command descrevem os recursos da cafeteira conectada.
  • O campo displayName é um objeto que fornece um nome legível para a interface ou entidade em idiomas diferentes. Nesse caso, a interface displayName é Connected Coffee Maker em inglês.
  • O campo @context é usado para especificar o contexto DTDL no qual a interface ou a entidade é definida. Nesse caso, ele faz referência aos contextos iotcentral e dtdl.
  • O campo name é um identificador exclusivo de Telemetry, Property ou Command.
  • Cada campo de telemetria representa medições ou eventos, e geralmente esses campos são usados para descrever as leituras do sensor de dispositivo. Por exemplo, Water Temperature tem um schema de double e unit de degreeCelsius. Os campos decimalPlaces, maxValue e minValue especificam mais detalhes sobre os dados telemétricos.
  • Cada campo de propriedade representa o estado de uma entidade. Por exemplo, Device Warranty Expired é do tipo booliano e pode ter o próprio estado definido pelo dispositivo conectado como true ou false.
  • O campo writable especifica se a propriedade pode ser definida do aplicativo IoT Central. Neste caso, Optimal Temperature pode ser definido na interface do usuário do aplicativo, ao contrário de Device Warranty Expired.
  • Se uma propriedade tiver Cloud na lista de tipos, ela será uma Propriedade de Nuvem. Neste caso, Coffee Maker Min Temperature e Coffee Maker Max Temperature são propriedades de nuvem.
  • Cada campo de comando descreve uma ação que o dispositivo pode executar. Por exemplo, Start Brewing é um comando que a nuvem pode enviar para o dispositivo para começar a preparar café.
  • O campo commandType especifica se um comando é síncrono (aguarda uma resposta) ou assíncrono (não aguarda uma resposta).

Verificar seus conhecimentos

1.

Quantas funcionalidades de telemetria são definidas no modelo Cafeteira Conectada?

2.

True ou false: Temperatura Ideal é uma propriedade gravável.

3.

Verdadeiro ou falso: a cafeteira conectada pode ser acionada remotamente para começar a preparar café usando o comando StartBrewing.