物的模型TSL

更新时间:2019-07-25 14:37:16

TSL概念

物模型是对设备是什么,能做什么的描述,包括设备身份标识、连接状态、描述信息,以及设备的属性(properties)、服务(services)、事件(events),后三者构成了设备的功能定义。阿里IoT通过定义一种物的描述语言来描述物模型,称之为 TSL(即 Thing Specification Language)。

产品功能

在每个产品中,都需要定义一套物的模型,即“功能定义”。每个产品有两类功能:

功能类型 描述
标准功能 根据ICA数据标准,平台为每个品类创建了默认的标准功能,分为可选和必选
自定义功能 如果标准功能不符合您的设备特征,您也可以自定义功能

而功能的组成为三要素:属性、事件、服务。分别用于:

功能三要素 描述
属性 用于描述设备运行时的状态,支持状态读取和设置,如开关、温度、颜色等。
服务 用于实现更复杂的业务逻辑,可包含输入参数和输出参数,可用于让设备执行某项定特定的任务。如烤箱的烘焙功能中,需要设定时间和温度等。
事件 用于描述设备运行时的事件,如瞬时性的通知信息,也可包含多个输出参数。如人体红外传感器识别到有人经过、空调上报了故障等。

自动生成TSL

功能定义完成后,平台能够根据“标准功能” 和“自定义功能”,自动生成一份Json格式的TSL。
image.png

image.png

TSL字段描述说明

{
    "schema": "物的TSL描述schema",
    "link": "云端系统级uri,用来调用服务/订阅事件",
    "profile": {
        "productKey": "产品key",
        "deviceName": "设备名称"
    },
    "properties": [
        {
            "identifier": "属性唯一标识符(产品下唯一)",
            "name": "属性名称",
            "accessMode": "属性读写类型,只读(r),只写(w),读写(rw)",
            "required": "是否是必选属性",
            "dataType": {
                "type": "属性类型: int(原生),float(原生),double(原生), text(原生),date(String类型UTC毫秒),bool(0或1的int类型),enum(int类型), struct(结构体类型,可包含前面6种类型)",
                "specs": {
                    "min": "属性最小值(int,float,double类型特有)",
                    "max": "属性最大值(int,float,double类型特有)",
                    "unit": "属性单位",
                    "unitName": "单位的名称"
                }
            }
        }
    ],
    "events": [
        {
            "name": "事件名称",
            "identifier": "事件唯一标识符",
            "desc": "事件描述",
            "type": "事件类型(info,alert,error)",
            "required": "是否是必选事件",
            "outputData": [
                {
                    "identifier": "参数唯一标识符",
                    "name": "参数名称",
                    "dataType": {
                        "type": "参数类型: int(原生),float(原生),double(原生), text(原生),date(String类型UTC毫秒),bool(0或1的int类型),enum(int类型), struct(结构体类型,可包含前面6种类型)",
                        "specs": {
                            "min": "参数最小值(int,float,double类型特有)",
                            "max": "参数最大值(int,float,double类型特有)",
                            "unit": "参数单位",
                            "unitName": "单位的名称"
                        }
                    }
                }
            ],
            "method": "事件对应的方法名称(根据identifier生成)"
        }
    ],
    "services": [
        {
            "name": "服务名称",
            "identifier": "服务唯一标识符",
            "desc": "服务描述",
            "required": "是否是必选服务",
            "inputData": [
                {
                    "identifier": "入参唯一标识符",
                    "name": "入参名称",
                    "dataType": {
                        "type": "入参类型: int(原生),float(原生),double(原生), text(原生),date(String类型UTC毫秒),bool(0或1的int类型),enum(int类型), struct(结构体类型,可包含前面6种类型)",
                        "specs": {
                            "min": "入参最小值(int,float,double类型特有)",
                            "max": "入参最大值(int,float,double类型特有)",
                            "unit": "入参单位",
                            "unitName": "单位的名称"
                        }
                    }
                }
            ],
            "outputData": [
                {
                    "identifier": "出参唯一标识符",
                    "name": "出参名称",
                    "dataType": {
                        "type": "出参类型: int(原生),float(原生),double(原生), text(原生),date(String类型UTC毫秒),bool(0或1的int类型),enum(int类型), struct(结构体类型,可包含前面6种类型)",
                        "specs": {
                            "min": "出参最小值(int,float,double类型特有)",
                            "max": "出参最大值(int,float,double类型特有)",
                            "unit": "出参单位",
                            "unitName": "单位的名称"
                        }
                    }
                }
            ],
            "method": "服务对应的方法名称(根据identifier生成)"
        }
    ]
}

TSL样例

{
    "schema": "http://aliyun/iot/thing/desc/schema",
    "link": "/sys/q408EXte2fy/airCondition/thing/",
    "profile": {
        "productKey": "q408EXte2fy",
        "deviceName": "airCondition"
    },
    "properties": [
        {
            "identifier": "fan_doule_property",
            "name": "风扇双精度型属性",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "double",
                "specs": {
                    "min": "0.0",
                    "max": "100.0",
                    "unit": "g/ml",
                    "unitName": "毫升"
                }
            }
        },
        {
            "identifier": "fan_int_property",
            "name": "风扇整数型属性",
            "accessMode": "rw",
            "required": true,
            "dataType": {
                "type": "int",
                "specs": {
                    "min": "0",
                    "max": "100",
                    "unit": "g/ml",
                    "unitName": "毫升"
                }
            }
        },
        {
            "identifier": "batch_enum_attr_id",
            "name": "风扇枚举型属性",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "enum",
                "specs": {
                    "0": "one",
                    "1": "two",
                    "2": "three"
                }
            }
        },
        {
            "identifier": "fan_float_property",
            "name": "风扇浮点型测试",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "float",
                "specs": {
                    "min": "0.0",
                    "max": "100.0",
                    "unit": "g/ml",
                    "unitName": "毫升"
                }
            }
        },
        {
            "identifier": "fan_text_property",
            "name": "风扇字符型属性",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "text",
                "specs": {
                    "length": "64",
                    "unit": "g/ml",
                    "unitName": "毫升"
                }
            }
        },
        {
            "identifier": "fan_date_property",
            "name": "风扇时间型属性",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "date",
                "specs": {}
            }
        },
        {
            "identifier": "batch_boolean_attr_id",
            "name": "风扇布尔型属性",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "bool",
                "specs": {
                    "0": "close",
                    "1": "open"
                }
            }
        },
        {
            "identifier": "fan_struct_property",
            "name": "风扇结构型属性",
            "accessMode": "r",
            "required": true,
            "dataType": {
                "type": "struct",
                "specs": [
                    {
                        "identifier": "fan_struct_property_float_child",
                        "name": "风扇双精度型属性",
                        "dataType": {
                            "type": "double",
                            "specs": {
                                "min": "0.0",
                                "max": "100.0",
                                "unit": "g/ml",
                                "unitName": "毫升"
                            }
                        }
                    },
                    {
                        "identifier": "fan_struct_property_float_child",
                        "name": "风扇结构型属性浮点子属性",
                        "dataType": {
                            "type": "float",
                            "specs": {
                                "min": "0.0",
                                "max": "255.0",
                                "unit": "°",
                                "unitName": "度"
                            }
                        }
                    },
                    {
                        "identifier": "fan_struct_property_int_child",
                        "name": "风扇结构型属性整数子属性",
                        "dataType": {
                            "type": "int",
                            "specs": {
                                "min": "0",
                                "max": "255",
                                "unit": "°",
                                "unitName": "度"
                            }
                        }
                    },
                    {
                        "identifier": "fan_struct_property_text_child",
                        "name": "风扇结构型属性字符子属性",
                        "dataType": {
                            "type": "text",
                            "specs": {
                                "length": "200",
                                "unit": "unit",
                                "unitName": "单位"
                            }
                        }
                    },
                    {
                        "identifier": "fan_struct_property_date_child",
                        "name": "风扇结构型属性时间子属性",
                        "dataType": {
                            "type": "date",
                            "specs": {}
                        }
                    },
                    {
                        "identifier": "fan_struct_property_enum_child",
                        "name": "风扇结构型属性枚举子属性",
                        "dataType": {
                            "type": "enum",
                            "specs": {
                                "0": "one",
                                "1": "two",
                                "2": "three"
                            }
                        }
                    },
                    {
                        "identifier": "fan_struct_property_boolean_child",
                        "name": "风扇结构型属性布尔子属性",
                        "dataType": {
                            "type": "bool",
                            "specs": {
                                "0": "close",
                                "1": "open"
                            }
                        }
                    }
                ]
            }
        }
    ],
    "events": [
        {
            "name": "alarm",
            "identifier": "alarm",
            "desc": "警报",
            "type": "info",
            "required": true,
            "outputData": [
                {
                    "identifier": "errorCode",
                    "name": "错误码",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "255",
                            "unit": ""
                        }
                    }
                }
            ],
            "method": "thing.event.alarm.post"
        },
        {
            "identifier": "post",
            "name": "post",
            "type": "info",
            "required": true,
            "desc": "属性上报",
            "method": "thing.event.property.post",
            "outputData": [
                {
                    "identifier": "fan_doule_property",
                    "name": "风扇双精度型属性",
                    "dataType": {
                        "type": "double",
                        "specs": {
                            "min": "0.0",
                            "max": "100.0",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "fan_int_property",
                    "name": "风扇整数型属性",
                    "dataType": {
                        "type": "int",
                        "specs": {
                            "min": "0",
                            "max": "100",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "batch_enum_attr_id",
                    "name": "风扇枚举型属性",
                    "dataType": {
                        "type": "enum",
                        "specs": {
                            "0": "one",
                            "1": "two",
                            "2": "three"
                        }
                    }
                },
                {
                    "identifier": "fan_float_property",
                    "name": "风扇浮点型测试",
                    "dataType": {
                        "type": "float",
                        "specs": {
                            "min": "0.0",
                            "max": "100.0",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "fan_text_property",
                    "name": "风扇字符型属性",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "64",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "fan_date_property",
                    "name": "风扇时间型属性",
                    "dataType": {
                        "type": "date",
                        "specs": {}
                    }
                },
                {
                    "identifier": "batch_boolean_attr_id",
                    "name": "风扇布尔型属性",
                    "dataType": {
                        "type": "bool",
                        "specs": {
                            "0": "close",
                            "1": "open"
                        }
                    }
                },
                {
                    "identifier": "fan_struct_property",
                    "name": "风扇结构型属性",
                    "dataType": {
                        "type": "struct",
                        "specs": [
                            {
                                "identifier": "fan_struct_property_double_child",
                                "name": "风扇双精度型属性",
                                "dataType": {
                                    "type": "double",
                                    "specs": {
                                        "min": "0.0",
                                        "max": "100.0",
                                        "unit": "g/ml",
                                        "unitName": "毫升"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_float_child",
                                "name": "风扇结构型属性浮点子属性",
                                "dataType": {
                                    "type": "float",
                                    "specs": {
                                        "min": "0.0",
                                        "max": "255.0",
                                        "unit": "°",
                                        "unitName": "度"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_int_child",
                                "name": "风扇结构型属性整数子属性",
                                "dataType": {
                                    "type": "int",
                                    "specs": {
                                        "min": "0",
                                        "max": "255",
                                        "unit": "°",
                                        "unitName": "度"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_text_child",
                                "name": "风扇结构型属性字符子属性",
                                "dataType": {
                                    "type": "text",
                                    "specs": {
                                        "length": "200",
                                        "unit": "unit",
                                        "unitName": "单位"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_date_child",
                                "name": "风扇结构型属性时间子属性",
                                "dataType": {
                                    "type": "date",
                                    "specs": {}
                                }
                            },
                            {
                                "identifier": "fan_struct_property_enum_child",
                                "name": "风扇结构型属性枚举子属性",
                                "dataType": {
                                    "type": "enum",
                                    "specs": {
                                        "0": "one",
                                        "1": "two",
                                        "2": "three"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_boolean_child",
                                "name": "风扇结构型属性布尔子属性",
                                "dataType": {
                                    "type": "bool",
                                    "specs": {
                                        "0": "0",
                                        "1": "1"
                                    }
                                }
                            }
                        ]
                    }
                }
            ]
        }
    ],
    "services": [
        {
            "name": "upgrade",
            "identifier": "upgrade",
            "desc": "升级服务",
            "inputData": [
                {
                    "identifier": "model",
                    "name": "模型",
                    "dataType": {
                        "type": "int",
                        "specs": {
                            "min": "1",
                            "max": "100",
                            "unit": "cm"
                        }
                    }
                },
                {
                    "identifier": "mac",
                    "name": "mac号",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "255"
                        }
                    }
                }
            ],
            "outputData": [
                {
                    "identifier": "firmVersion",
                    "name": "固件版本号",
                    "dataType": {
                        "type": "int",
                        "specs": {
                            "min": "1",
                            "max": "100",
                            "unit": ""
                        }
                    }
                }
            ],
            "method": "thing.service.upgrade"
        },
        {
            "identifier": "set",
            "name": "set",
            "required": true,
            "desc": "属性设置",
            "method": "thing.service.property.set",
            "inputData": [
                {
                    "identifier": "fan_int_property",
                    "name": "风扇整数型属性",
                    "accessMode": "rw",
                    "required": true,
                    "dataType": {
                        "type": "int",
                        "specs": {
                            "min": "0",
                            "max": "100",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                }
            ],
            "outputData": []
        },
        {
            "identifier": "get",
            "name": "get",
            "required": true,
            "desc": "属性获取",
            "method": "thing.service.property.get",
            "inputData": [
                "fan_doule_property",
                "fan_int_property",
                "batch_enum_attr_id",
                "fan_float_property",
                "fan_text_property",
                "fan_date_property",
                "batch_boolean_attr_id",
                "fan_struct_property"
            ],
            "outputData": [
                {
                    "identifier": "fan_doule_property",
                    "name": "风扇双精度型属性",
                    "dataType": {
                        "type": "double",
                        "specs": {
                            "min": "0.0",
                            "max": "100.0",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "fan_int_property",
                    "name": "风扇整数型属性",
                    "dataType": {
                        "type": "int",
                        "specs": {
                            "min": "0",
                            "max": "100",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "batch_enum_attr_id",
                    "name": "风扇枚举型属性",
                    "dataType": {
                        "type": "enum",
                        "specs": {
                            "0": "one",
                            "1": "two",
                            "2": "three"
                        }
                    }
                },
                {
                    "identifier": "fan_float_property",
                    "name": "风扇浮点型测试",
                    "dataType": {
                        "type": "float",
                        "specs": {
                            "min": "0.0",
                            "max": "100.0",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "fan_text_property",
                    "name": "风扇字符型属性",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "64",
                            "unit": "g/ml",
                            "unitName": "毫升"
                        }
                    }
                },
                {
                    "identifier": "fan_date_property",
                    "name": "风扇时间型属性",
                    "dataType": {
                        "type": "date",
                        "specs": {}
                    }
                },
                {
                    "identifier": "batch_boolean_attr_id",
                    "name": "风扇布尔型属性",
                    "dataType": {
                        "type": "bool",
                        "specs": {
                            "0": "close",
                            "1": "open"
                        }
                    }
                },
                {
                    "identifier": "fan_struct_property",
                    "name": "风扇结构型属性",
                    "dataType": {
                        "type": "struct",
                        "specs": [
                            {
                                "identifier": "fan_struct_property_double_child",
                                "name": "风扇双精度型属性",
                                "dataType": {
                                    "type": "double",
                                    "specs": {
                                        "min": "0.0",
                                        "max": "100.0",
                                        "unit": "g/ml",
                                        "unitName": "毫升"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_float_child",
                                "name": "风扇结构型属性浮点子属性",
                                "dataType": {
                                    "type": "float",
                                    "specs": {
                                        "min": "0.0",
                                        "max": "255.0",
                                        "unit": "°",
                                        "unitName": "度"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_int_child",
                                "name": "风扇结构型属性整数子属性",
                                "dataType": {
                                    "type": "int",
                                    "specs": {
                                        "min": "0",
                                        "max": "255",
                                        "unit": "°",
                                        "unitName": "度"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_text_child",
                                "name": "风扇结构型属性字符子属性",
                                "dataType": {
                                    "type": "text",
                                    "specs": {
                                        "length": "200",
                                        "unit": "unit",
                                        "unitName": "单位"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_date_child",
                                "name": "风扇结构型属性时间子属性",
                                "dataType": {
                                    "type": "date",
                                    "specs": {}
                                }
                            },
                            {
                                "identifier": "fan_struct_property_enum_child",
                                "name": "风扇结构型属性枚举子属性",
                                "dataType": {
                                    "type": "enum",
                                    "specs": {
                                        "0": "one",
                                        "1": "two",
                                        "2": "three"
                                    }
                                }
                            },
                            {
                                "identifier": "fan_struct_property_boolean_child",
                                "name": "风扇结构型属性布尔子属性",
                                "dataType": {
                                    "type": "bool",
                                    "specs": {
                                        "0": "close",
                                        "1": "open"
                                    }
                                }
                            }
                        ]
                    }
                }
            ]
        }
    ]
}

results matching ""

    No results matching ""