全部产品
Search
文档中心

阿里云物联网平台:物模型相关问题

更新时间:Sep 20, 2022

本文介绍设备使用物模型通信常见相关问题及解决方法。

批量导入物模型,TSL检验失败怎么办?

问题现象

如下图所示,在物联网平台为产品导入物模型过程,出现校验失败现象。问题现象

解决方法

  • ①:对物模型文件进行JSON格式化校验,完成修正。

  • ②:单击下载查看,获取errors.txt文件,定位问题及原因,完成修正。

    errors.txt文件的详细说明,请参见如下示例。

    物模型文件示例:

    {
        "schema":"https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json",
        "profile":{
            "productKey":"a1Jk***"
        },
        "services":[],
        "properties": 1,
        "events": [],
        "functionBlockId": "模块mtest",
        "functionBlockName": "自定义模块1"
    }

    下载的errors.txt文件:

    [
      {
        "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": "模块mtest",
        "name": "pattern",
        "argument": "^[_a-zA-Z0-9]{1,30}$",
        "stack": "instance.functionBlockId does not match pattern \"^[_a-zA-Z0-9]{1,30}$\""
      }
    ]

    参数

    说明

    path

    校验后,出错的路径。本文示例校验出2处错误:

    // properties配置错误,不是数组
    "path": [
          "properties"
        ]
    // functionBlockId含有中文
    "path": [
          "functionBlockId"
        ]
    propertypath

    下不合规则的具体对象。

    例如"path": ["functionBlockId" ]中的instance.functionBlockId

    message

    具体的错误提示信息。

    例如"path": ["functionBlockId" ]中,提示

    property

    的错误为does not match pattern \"^[_a-zA-Z0-9]{1,30}$\"

    schema

    校验的规则名称及对应内容。

    例如"path": ["functionBlockId" ]中的规则typepattern

    有关规则定义的详细内容,请参见schama

    instance

    校验的具体对象。

    例如"path": ["functionBlockId" ]中,校验物模型文件中"functionBlockId": "模块mtest"的内容。

    name

    校验未通过规则的名称。

    例如"path": ["functionBlockId" ]中,校验对象模块mtest不符合规则pattern

    argument

    校验未通过规则的内容。

    例如"path": ["functionBlockId" ]中,不符合规则pattern的定义为^[_a-zA-Z0-9]{1,30}$

    stack

    堆栈信息。由

    property

    message

    内容组合的完整错误提示信息。

更多信息,请参见校验工具jsonschema的说明

物模型的属性上报、历史数据上报、批量属性上报有什么区别

功能区别

功能

区别

物模型属性上报

上报设备属性快照数据。时间戳可选:

  • 若携带时间戳,物联网平台的云端保存该时间作为属性上报时间。

    单次数据上报中,只能上报一个时间点的数据。

  • 若不携带时间戳,物联网平台的云端自动生成属性上报时间(上报属性的当前时间)并保存。

物模型历史数据上报

以时间为维度,上报同一时间点下不同属性的值。需携带时间戳。

单次数据上报中,支持上报多个时间点下不同属性的数据。

物模型批量属性上报

以属性为维度,上报同一属性下不同时间点的值。需携带时间戳。

单次数据上报中,支持上报多个属性下不同时间点的数据。

物模型的属性上报、历史数据上报、批量属性上报到物联网平台后,均会根据时间戳形成历史数据。

通信Topic区别

Topic和数据格式不同,详细说明,请参见设备上报属性物模型历史数据上报设备批量上报属性

示例

以设备的温度数据为例:

  • 物模型属性上报:

    1. 如下表所示,从左至右,携带时间戳依次上报快照数据。

      13:00

      14:00

      15:00

      15:10

      60

      70

      80

      90

    2. 然后上报一个快照值100。

      • 不携带时间戳时,默认当前时间(假设15:30)。此时,物联网平台控制台显示的快照值是15:30的100;历史数据列表中最新数据是15:30的100。

      • 携带时间戳15:00,更新15:00的数据为100。此时,物联网平台控制台显示的快照值是15:00的100;历史数据列表中最新数据还是15:10的90。

  • 物模型历史数上报

    1. 先同时上报以下历史数据。

      13:00

      14:00

      15:00

      15:10

      60

      70

      80

      90

    2. 然后再同时上报以下历史数据。

      13:10

      14:10

      100

      200

      此时,物联网平台控制台显示的快照值为13:10的100或14:10的200(以最后写入数据库的值为准);历史数据列表中最新数据还是15:10的90。