Este tópico responde a perguntas frequentes (FAQs) sobre o uso de modelos TSL na comunicação de dispositivos e apresenta as soluções correspondentes.
Adicionar recursos do modelo TSL
Adicione e configure as propriedades, os eventos e os serviços de um modelo TSL no produto que contém o dispositivo. Defina um modelo TSL das seguintes formas:
Chame a API CreateThingModel para adicionar recursos do modelo TSL a um produto específico.
Adicione recursos do modelo TSL no console do IoT Platform. Para mais informações, consulte Adicionar um único modelo TSL e Adicionar modelos TSL em lote.
Falha na verificação do TSL durante importação em lote
Sintomas
Ao importar um modelo TSL para um produto no console do IoT Platform, uma de duas falhas de verificação pode ocorrer na caixa de diálogo Import TSL Model: uma mensagem de erro imediata (The file content is not in a valid JSON format) ou uma exceção de verificação com um link Baixe e Visualize para obter informações detalhadas sobre o erro.
Soluções
As soluções a seguir correspondem aos dois tipos de falha de verificação:
Verifique o arquivo do modelo TSL, corrija quaisquer erros de formatação JSON e envie o arquivo novamente.
-
Clique em Download and View para obter o arquivo errors.txt. Use esse arquivo para identificar e resolver o problema.
Para mais informações sobre o arquivo errors.txt, consulte o exemplo a seguir.
Exemplo de arquivo de modelo TSL:
{ "schema":"https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json", "profile":{ "productKey":"a1Jk***" }, "services":[], "properties": 1, "events": [], "functionBlockId": "modulemtest", "functionBlockName": "Custom Module 1" }Arquivo errors.txt baixado:
[ { "path": [ "properties" ], "property": "instance.properties", "message": "is not of a type(s) array", "schema": { "type": "array", "items": { "$ref": "#/definitions/propertyDefinition" } }, "instance": 1, "name": "type", "argument": [ "array" ], "stack": "instance.properties is not of a type(s) array" }, { "path": [ "functionBlockId" ], "property": "instance.functionBlockId", "message": "does not match pattern \"^[_a-zA-Z0-9]{1,30}$\"", "schema": { "type": "string", "pattern": "^[_a-zA-Z0-9]{1,30}$" }, "instance": "module-test", "name": "pattern", "argument": "^[_a-zA-Z0-9]{1,30}$", "stack": "instance.functionBlockId does not match pattern \"^[_a-zA-Z0-9]{1,30}$\"" } ]Parâmetro
Descrição
path
Caminho do elemento que causou o erro de verificação. Neste exemplo, há dois erros:
// O parâmetro properties está configurado incorretamente. Não é um array. "path": [ "properties" ] // O valor de functionBlockId contém um hífen, o que é inválido. "path": [ "functionBlockId" ]property
Objeto específico no caminho que viola a regra.
Por exemplo, a propriedade para
"path": ["functionBlockId" ]éinstance.functionBlockId.message
Mensagem de erro específica.
Por exemplo, para
"path": ["functionBlockId" ], a mensagem de erro da propriedade édoes not match pattern \"^[_a-zA-Z0-9]{1,30}$\".schema
Nome e conteúdo da regra de verificação.
Por exemplo, para
"path": ["functionBlockId" ], as regras sãotypeepattern.Para mais informações sobre definições de regras, consulte JSON Schema.
instance
Objeto específico em verificação.
Por exemplo, para
"path": ["functionBlockId" ], o conteúdo de"functionBlockId": "module-test"no arquivo do modelo TSL é verificado.name
Nome da regra que falhou na verificação.
Por exemplo, para
"path": ["functionBlockId" ], o objetomodule-testnão está em conformidade com a regrapattern.argument
Definição da regra violada.
Por exemplo, para
"path": ["functionBlockId" ], a regrapatternnão atendida é definida como^[_a-zA-Z0-9]{1,30}$.stack
Mensagem de erro completa que combina os campos property e message.
Para mais informações, consulte a documentação do jsonschema.
Diferenças nos métodos de relatório de dados
Diferenças funcionais
|
Recurso |
Diferença |
|
Relatório de propriedades |
Reporta um snapshot dos dados de propriedade do dispositivo. O timestamp é opcional:
|
|
Relatório de dados históricos |
Reporta valores de diferentes propriedades no mesmo ponto no tempo. Este recurso é baseado em tempo e exige um timestamp. Um único relatório de dados pode incluir dados de vários pontos no tempo. |
|
Relatório de propriedades em lote |
Reporta valores da mesma propriedade em diferentes pontos no tempo. Este recurso é baseado em propriedades e exige um timestamp. Um único relatório de dados pode incluir dados de várias propriedades em vários pontos no tempo. |
Após o relatório de dados de propriedades, dados históricos ou dados de propriedades em lote para o IoT Platform, a plataforma gera registros de dados históricos com base nos timestamps.
Diferenças em tópicos de comunicação e formatos de dados
O tópico e o formato de dados variam conforme o método. Para mais informações, consulte Dispositivo reporta propriedades, Reportar dados históricos do modelo TSL e Dispositivo reporta propriedades em lote.
Exemplo
Este exemplo utiliza um dispositivo que reporta dados de temperatura.
-
Relatório de propriedades:
-
O dispositivo reporta dados de snapshot com timestamps sequencialmente da esquerda para a direita, conforme a tabela a seguir.
13:00
14:00
15:00
15:10
60
70
80
90
-
Em seguida, o dispositivo reporta outro valor de snapshot de 100. A atualização dos dados varia dependendo da inclusão de um timestamp:
Sem timestamp: O horário assume como padrão a hora atual (por exemplo, 15:30). Nesse caso, o valor de snapshot exibido no console do IoT Platform é 100 às 15:30, e a entrada mais recente na lista de dados históricos também é 100 às 15:30.
Com timestamp: Se o timestamp for 15:00, os dados das 15:00 serão atualizados para 100. O valor de snapshot exibido no console do IoT Platform passará a ser 100 às 15:00, mas a entrada mais recente na lista de dados históricos permanecerá 90 às 15:10.
-
-
Relatório de dados históricos:
-
O dispositivo reporta os seguintes dados históricos simultaneamente.
13:00
14:00
15:00
15:10
60
70
80
90
-
Posteriormente, o dispositivo reporta os seguintes dados históricos simultaneamente.
13:10
14:10
100
200
Nesse cenário, o valor de snapshot exibido no console do IoT Platform será 100 às 13:10 ou 200 às 14:10, dependendo de qual valor foi gravado por último no banco de dados. A entrada mais recente na lista de dados históricos permanece 90 às 15:10.
-
Dados TSL não atualizados com tópico personalizado
Reporte os dados do modelo TSL do dispositivo usando um tópico de comunicação do modelo TSL. Para mais informações, consulte Categorias de tópicos e comunicação.
Recuperar dados do modelo TSL
Recupere dados do modelo TSL do dispositivo das seguintes maneiras:
-
Assinatura do lado do servidor: Use o recurso de assinatura do lado do servidor do IoT Platform para assinar mensagens de Device Upstream Notification. O IoT Platform encaminha essas mensagens de todos os dispositivos do produto para o seu servidor com base nas configurações de assinatura. Há suporte para dois métodos de assinatura do lado do servidor:
Assinatura do lado do servidor AMQP: Use um SDK AMQP para receber mensagens de dispositivos encaminhadas pelo IoT Platform.
Assinatura do lado do servidor do Message Service (MNS): Use o SDK do Simple Message Queue (formerly MNS) para receber mensagens de dispositivos que o IoT Platform encaminha para o Simple Message Queue (formerly MNS).
Encaminhamento de Dados: Use o recurso de Encaminhamento de Dados do mecanismo de regras para criar regras que encaminhem dados específicos do dispositivo para outros serviços de nuvem, como Simple Message Queue (formerly MNS), ApsaraDB for RDS, Tablestore, Function Compute, Time Series Database (TSDB), Lindorm, DataHub e Message Queue for Apache RocketMQ. Para mais informações, consulte Encaminhamento de Dados (Legado) e Encaminhamento de Dados (Novo).
-
APIs da Nuvem:
API
Descrição
Consulta todos os snapshots de propriedades de um dispositivo especificado.
Consulta os snapshots originais de propriedades reportados por um dispositivo especificado. Inclui todas as propriedades, independentemente de terem passado pela verificação do modelo TSL.
Consulta os registros originais de propriedades reportados por um dispositivo especificado. Inclui todas as propriedades, independentemente de terem passado pela verificação do modelo TSL.
Consulta os registros originais de eventos reportados por um dispositivo especificado. Inclui todos os eventos, independentemente de terem passado pela verificação do modelo TSL.
Consulta os registros originais de chamadas de serviço de um dispositivo especificado. Inclui todos os serviços, independentemente de terem passado pela verificação do modelo TSL.
Consulta os valores desejados das propriedades de um dispositivo especificado.
Consulta os dados de uma única propriedade para um dispositivo especificado dentro de um intervalo de tempo definido.
Consulta os dados de várias propriedades para um dispositivo especificado dentro de um intervalo de tempo definido.
Consulta os registros de eventos de um dispositivo especificado.
Consulta os registros de chamadas de serviço de um dispositivo especificado.
Dados do modelo TSL ausentes no console
Quando um dispositivo reporta dados do modelo TSL, o IoT Platform verifica esses dados com base no modelo TSL definido e no método de validação de dados configurado. Dados que falham na verificação ou cuja validação é ignorada não aparecem na aba TSL Model Data da página Device Details do dispositivo no console do IoT Platform. Para mais informações, consulte Validar dados do modelo TSL.
Defina o método de validação de dados ao criar um produto. Para mais informações, consulte Criar um produto.
Status dos dados TSL não atualizado após comandos
Para solucionar o problema, investigue os seguintes aspectos:
-
Lado do dispositivo: Certifique-se de que o dispositivo esteja conectado corretamente ao IoT Platform. Para informações sobre como conectar um dispositivo, consulte Baixar SDKs de dispositivo.
ImportanteUm comando bem-sucedido do IoT Platform confirma apenas que a solicitação 'defina' foi enviada da nuvem; isso não garante a execução pelo dispositivo. Para que a propriedade seja considerada definida com sucesso, o dispositivo deve aplicar o novo valor e, em seguida, reportar esse valor de volta à plataforma.
Use o emulador de dispositivo ou a ferramenta MQTT.fx para simular um dispositivo online e, em seguida, use o recurso de depuração online para testar as capacidades de comunicação do dispositivo. Para mais informações, consulte:
-
Lado da nuvem do IoT Platform:
Certifique-se de que a propriedade para a qual você deseja set um valor ou um desired value tenha acesso de leitura/gravação.
-
Garanta que as mensagens do modelo TSL sejam analisadas corretamente.
Os dados aparecem no estado de execução do modelo TSL somente se as mensagens do modelo TSL forem analisadas corretamente. Para mais informações, consulte Modelos TSL e Analisar mensagens do modelo TSL.
Faça login no console do IoT Platform. Na instância, acesse a página Maintenance > Device Log > Cloud run log para visualizar logs e verificar se o dispositivo recebeu a mensagem com sucesso. Para mais informações, consulte Cloud run log.
Dados de temperatura ausentes no console
Os dados do modelo TSL não aparecerão se a propriedade do modelo TSL não estiver definida ou se o formato dos dados reportados estiver incorreto.
Siga estas etapas para garantir que os dados sejam exibidos corretamente:
Defina uma propriedade do modelo TSL chamada Temperature para o produto que contém o dispositivo. Para mais informações, consulte Adicionar recursos do modelo TSL.
-
O dispositivo deve reportar dados de propriedades usando o tópico de comunicação do modelo TSL e o formato de dados corretos. Para mais informações sobre o desenvolvimento no lado do dispositivo, consulte Conexão do dispositivo.
-
Se você selecionou ICA Standard Data Format (Alink JSON) como formato de dados ao criar o produto, o dispositivo deve usar o tópico
/sys/${productKey}/${deviceName}/thing/event/property/poste reportar dados no seguinte formato:{ "id": "123", "version": "1.0", "sys":{ "ack":0 }, "params": { "temperature": { "value": 35, "time": 1524448722000 } }, "method": "thing.event.property.post" }Para mais informações sobre os campos, consulte Dispositivo reporta propriedades.
-
Se você selecionou Passthrough/Custom como formato de dados ao criar o produto, configure um script para analisar as mensagens do modelo TSL.
O dispositivo deve usar o tópico
/sys/${productKey}/${deviceName}/thing/model/up_rawpara transmitir dados em formato hexadecimal. Para mais informações, consulte Dispositivo reporta propriedades e Analisar mensagens do modelo TSL.
-
Importar recursos do modelo TSL rapidamente
Sim. O IoT Platform oferece os seguintes métodos para adicionar recursos do modelo TSL em lote:
Adicionar modelos TSL em lote: No console do IoT Platform, copie recursos do modelo TSL de outro produto em lote ou importe um arquivo TSL.
CreateThingModel: Use um SDK do lado do servidor para chamar esta API da nuvem e adicione recursos do modelo TSL usando o parâmetro ThingModelJson. Para mais informações sobre o formato de dados ThingModelJson, consulte Formato de dados ThingModelJson.