阿里云物联网物模型TSL字段详细说明

news/2024/4/29 10:02:29/文章来源:https://blog.csdn.net/vpssf/article/details/137018741

本文介绍物模型TSL文件中JSON字段及其详细说明。

完整的官网文档请阅读:阿里云物联网物模型TSL字段详细说明


说明 为了完整展示TSL的结构,以下示例中包含所有参数,不代表实际使用中可能出现的组合。参数后的文字为参数说明,非参数值。各参数的使用场景,请参见参数说明。
放大查看复制代码
{
“schema”: “物模型结构定义的访问URL。”,
“profile”: {
“productKey”: “当前产品的ProductKey。”
},
“properties”: [
{
“identifier”: “属性唯一标识符(物模型模块下唯一)。”,
“name”: “属性名称”,
“accessMode”: “属性读写类型:只读(r)或读写(rw)。”,
“required”: “是否是标准功能的必选属性:是(true),否(false)。”,
“dataType”: {
“type”: “属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的值方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs”:[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。“,
“specs”: {
“min”: “参数最小值(int、float、double类型特有)。”,
“max”: “参数最大值(int、float、double类型特有)。”,
“unit”: “属性单位(int、float、double类型特有,非必填)。”,
“unitName”: “单位名称(int、float、double类型特有,非必填)。”,
“size”: “数组元素的个数,最大512(array类型特有)。”,
“step”: “步长(text、enum类型无此参数)。”,
“length”: “数据长度,最大10240(text类型特有)。”,
“0”: “0的值(bool类型特有)。”,
“1”: “1的值(bool类型特有)。”,
“item”: {
“type”: “数组元素的类型(array类型特有)。”
}
}
}
}
],
“events”: [
{
“identifier”: “事件唯一标识符(物模型模块下唯一,其中post是默认生成的属性上报事件)。”,
“name”: “事件名称。”,
“desc”: “事件描述。”,
“type”: “事件类型(info、alert、error)。”,
“required”: “是否是标准功能的必选事件:是(true),否(false)。”,
“outputData”: [
{
“identifier”: “参数唯一标识符。”,
“name”: “参数名称。”,
“dataType”: {
“type”: “属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的值方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs”:[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。”,
“specs”: {
“min”: “参数最小值(int、float、double类型特有)。”,
“max”: “参数最大值(int、float、double类型特有)。”,
“unit”: “属性单位(int、float、double类型特有,非必填)。”,
“unitName”: “单位名称(int、float、double类型特有,非必填)。”,
“size”: “数组元素的个数,最大512(array类型特有)。”,
“step”: “步长(text、enum类型无此参数)。”,
“length”: “数据长度,最大10240(text类型特有)。”,
“0”: “0的值(bool类型特有)。”,
“1”: “1的值(bool类型特有)。”,
“item”: {
“type”: “数组元素的类型(array类型特有)。”
}
}
}
}
],
“method”: “事件对应的方法名称(根据identifier生成)。”
}
],
“services”: [
{
“identifier”: “服务唯一标识符(物模型模块下唯一,其中set/get是根据属性的accessMode默认生成的服务)。”,
“name”: “服务名称。”,
“desc”: “服务描述。”,
“required”: “是否是标准功能的必选服务:是(true),否(false)。”,
“callType”: “async(异步调用)或sync(同步调用)。”,
“inputData”: [
{
“identifier”: “入参唯一标识符。”,
“name”: “入参名称。”,
“dataType”: {
“type”: “属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的值方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs”:[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。“,
“specs”: {
“min”: “参数最小值(int、float、double类型特有)。”,
“max”: “参数最大值(int、float、double类型特有)。”,
“unit”: “属性单位(int、float、double类型特有,非必填)。”,
“unitName”: “单位名称(int、float、double类型特有,非必填)。”,
“size”: “数组元素的个数,最大512(array类型特有)。”,
“step”: “步长(text、enum类型无此参数)。”,
“length”: “数据长度,最大10240(text类型特有)。”,
“0”: “0的值(bool类型特有)。”,
“1”: “1的值(bool类型特有)。”,
“item”: {
“type”: “数组元素的类型(array类型特有)。”
}
}
}
}
],
“outputData”: [
{
“identifier”: “出参唯一标识符。”,
“name”: “出参名称。”,
“dataType”: {
“type”: “属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs”:[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。”,
“specs”: {
“min”: “参数最小值(int、float、double类型特有)。”,
“max”: “参数最大值(int、float、double类型特有)。”,
“unit”: “属性单位(int、float、double类型特有,非必填)。”,
“unitName”: “单位名称(int、float、double类型特有,非必填)。”,
“size”: “数组元素的个数,最大512(array类型特有)。”,
“step”: “步长(text、enum类型无此参数)。”,
“length”: “数据长度,最大10240(text类型特有)。”,
“0”: “0的值(bool类型特有)。”,
“1”: “1的值(bool类型特有)。”,
“item”: {
“type”: “数组元素的类型(array类型特有)。”
}
}
}
}
],
“method”: “服务对应的方法名称(根据identifier生成)。”
}
],
//仅自定义模块的TSL中有以下参数。
“functionBlockId”: “自定义模块的唯一标识符,模块ID。”,
“functionBlockName”: “自定义模块名称。”,

//当产品下添加了自定义模块,默认模块TSL中会包含以下参数,表示已添加的自定义模块列表。
"functionBlocks": [
{"functionBlockId": "自定义模块的唯一标识符,模块ID。","functionBlockName": "自定义模块名称。","productKey": "产品ProductKey。"
}

]
}
若产品的节点类型是网关子设备,且接入网关协议为Modbus、OPC UA或自定义时,可以查看物模型扩展配置信息。

Modbus协议产品的扩展配置可用于Modbus子设备的物联网边缘计算,请参见物联网边缘计算文档。

Modbus协议产品的扩展配置数据结构如下:

放大查看复制代码
{
“profile”: {
“productKey”: “产品ProductKey。”
},
“properties”: [
{
“identifier”: “属性唯一标识符(产品下唯一)。”,
“operateType”: “(线圈状态/离散量输入/保持寄存器/输入寄存器: coilStatus/inputStatus/holdingRegister/inputRegister)。”,
“registerAddress”: “寄存器地址。”,
“originalDataType”: {
“type”: “原始数据类型:int16、uint16、int32、uint32、int64、uint64、float、double、string、bool、customized data(按大端顺序返回hex data)。”,
“specs”: {
“registerCount”: “寄存器数据个数,string、customized data特有。”,
“swap16”: “交换寄存器内高低字节,把寄存器内16位数据的前后8个bit互换(byte1byte2 -> byte2byte1),除string和bool外,其他数据类型特有。”,
“reverseRegister”: “交换寄存器顺序,把原始数据32位数据的前后16个bit互换(byte1byte2byte3byte4 -> byte3byte4byte1byte2),除string和bool外,其他数据类型特有。”
}
},
“scaling”: “缩放因子,除string和bool外,其他数据类型特有。”,
“trigger”: “数据上报方式。1代表按时上报,2代表变更上报。”,
“writeFunctionCode”:“读写操作,对于不同的operateType,可选的取值不同。coilStatus:5代表读写(读0x01,写0x05),15代表读写(读0x01,写0x0F),0代表只读0x01,6代表只写0x05,15代表只写0x0F。inputStatus:0代表只读0x02。holdingRegister:6代表读写(读0x03,写0x06),16代表读写(读0x03,写0x10),0代表只读0x03,6代表只写0x06,16代表只写0x10。inputRegister:0代表只读0x04。”,
“writeOnly”:“是否只写。0代表非只写,1代表只写。”,
“pollingTime”:“采集间隔,单位是ms。无需传入,将使用设备配置的采集间隔。”,
“bitMask”:“掩码,bool特有。取值:1、2、4、8、16、32、64、128、256、512、1024、2048、4096、8192、16384、32768,即1<<(0~15)。”
}
]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1027706.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】数据探索(Data Exploration)---数据质量和数据特征分析

一、引言 在机器学习项目中&#xff0c;数据探索是至关重要的一步。它不仅是模型构建的基础&#xff0c;还是确保模型性能稳定、预测准确的关键。数据探索的过程中&#xff0c;数据质量和数据特征分析占据了核心地位。数据质量直接关系到模型能否从数据中提取有效信息&#xff…

linux中查看内存占用空间

文章目录 linux中查看内存占用空间 linux中查看内存占用空间 使用 df -h 查看磁盘空间 使用 du -sh * 查看每个目录的大小 注意这里是当前目录下的文件大小&#xff0c;查看系统的可以回到根目录 经过查看没有发现任何大的文件夹。 继续下面的步骤 如果您的Linux磁盘已满&a…

VScode中cmake调试

一般的cmake命令行测试方法&#xff1a; cmake -S . -B build cmake --build build ./build/cmake_debug 在vscode中使用图形化界面操作的方法 main.cpp #include <iostream>int main() {int num_a, num_b;num_a 10;num_b 20;std::cout << "num_a &qu…

TTS通用播放库技术设计

TTS音频播放库技术设计 目录介绍 01.整体介绍概述 1.1 项目背景介绍1.2 遇到问题1.3 基础概念介绍1.4 设计目标1.5 问题答疑和思考 02.技术调研说明 2.1 语音播放方案2.2 TTS技术分析2.3 语音合成技术2.4 方案选择说明2.5 方案设计思路2.6 文本生成音频 03.系统TTS使用实践 3…

CSS(六)

一、精灵图 1.1 为什么需要精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度。 因此&#xff0c;为了有效…

Vue挂载全局方法

简介&#xff1a;有时候&#xff0c;频繁调用的函数&#xff0c;我们需要把它挂载在全局的vue原型上&#xff0c;方便调用&#xff0c;具体怎么操作&#xff0c;这里来记录一下。 一、这里以本地存储的方法为例 var localStorage window.localStorage; const db {/** * 更新…

面试八股——Redis——分布式锁——Redisson

1.看门狗机制 注意看门狗机制&#xff1a;redisson会监听持有锁的线程&#xff0c;并每隔一段时间(releaseTime/3&#xff0c;默认releaseTime为30s)&#xff0c;如果线程还未释放锁的话&#xff0c;会给锁做一次续期。 2. 主从一致性 实际开发中我们会搭建多台redis服务器&a…

八大技术趋势案例(区块链量子计算)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

BOT攻击是什么,应当如何防护?

抢票失败、小程序崩溃、平台遭恶意灌水……这些我们日常都可能遇到过的问题的背后很有可能是BOT攻击在兴风作浪。对于企业用户来说&#xff0c;据相关调研显示&#xff0c;近八成企业都曾因BOT攻击而受到经济损失&#xff0c;而面对越来越复杂的BOT攻击&#xff0c;大多数企业表…

数据结构 之 队列习题 力扣oj(附加思路版)

优先级队列 #include<queue> --队列 和 优先级队列的头文件 优先级队列&#xff1a; 堆结构 最大堆 和 最小堆 相关函数&#xff1a; front() 获取第一个元素 back() 获取最后一个元素 push() 放入元素 pop() 弹出第一个元素 size() 计算队列中元素…

鸿蒙HarmonyOS应用开发之USB DDK开发指导

场景介绍 USB DDK&#xff08;USB Driver Develop Kit&#xff09;是为开发者提供的USB驱动程序开发套件&#xff0c;支持开发者基于用户态&#xff0c;在应用层开发USB设备驱动。提供了一系列主机侧访问设备的接口&#xff0c;包括主机侧打开和关闭接口、管道同步异步读写通信…

学习JavaEE的日子 Day32 线程池

Day32 线程池 1.引入 一个线程完成一项任务所需时间为&#xff1a; 创建线程时间 - Time1线程中执行任务的时间 - Time2销毁线程时间 - Time3 2.为什么需要线程池(重要) 线程池技术正是关注如何缩短或调整Time1和Time3的时间&#xff0c;从而提高程序的性能。项目中可以把Time…

没学数模电可以玩单片机吗?

我们首先来看一下数电模电在单片机中的应用。数电知识在单片机中主要解决各种数字信号的处理、运算&#xff0c;如数制转换、数据运算等。模电知识在单片机中主要解决各种模拟信号的处理问题&#xff0c;如采集光照强度、声音的分贝、温度等模拟信号。而数电、模电的相互转换就…

Ubuntu 系统下安装 Redis

目录 一、上传 Redis 安装包并解压缩 二、编译 1、安装gcc&#xff0c;不然后面编译报错 2、开始编译 三、生成后台服务 四、修改配置文件 1、设置密码 2、设置后台启动 五、启动服务 一、上传 Redis 安装包并解压缩 tar -zxvf redis-6.0.2.tar.gz 二、编译 1、安装g…

【分布式】——CAPBASE理论

CAP&BASE理论 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html Sprin…

C语言用if语句设计选择结构程序

在C语言中&#xff0c;if语句是一种常用的选择结构语句&#xff0c;用于根据条件选择性地执行不同的代码块。if语句的设计使得程序可以根据条件的真假进行分支控制&#xff0c;从而实现灵活的程序逻辑。本文将深入介绍C语言中如何使用if语句设计选择结构程序&#xff0c;包括if…

Elasticsearch 和 Kibana 8.13:简化 kNN 和改进查询并行化

作者&#xff1a;Gilad Gal, Tyler Perkins, Srikanth Manvi, Aris Papadopoulos, Trevor Blackford 在 8.13 版本中&#xff0c;Elastic 引入了向量搜索的重大增强&#xff0c;并将 Cohere 嵌入集成到其统一 inference API 中。这些更新简化了将大型语言模型&#xff08;LLM&a…

企业微信变更主体公证怎么弄?

企业微信变更主体有什么作用&#xff1f;现在很多公司都用企业微信来加客户&#xff0c;有时候辛辛苦苦积累了很多客户&#xff0c;但是公司却因为各种各样的原因需要注销&#xff0c;那么就需要通过企业微信变更主体的方法&#xff0c;把企业微信绑定的公司更改为最新的。企业…

【python 数据可视化】 WordCloud词云图

目录 词云简介 准备工作 安装方法一&#xff1a; 安装方法二&#xff1a; 生成词云步骤 数据预处理&#xff1a; 分词&#xff1a; 统计词频出现的次数&#xff1a; 去除词语&#xff1a; 生成词云&#xff1a; 显示词云&#xff1a; 保存词云&#xff1a; 完整代码 词…

ClickHouse06-ClickHouse中基础的增删改查

使用数据库&#xff0c;最基础的学习都是增、删、改、查&#xff0c;然后才会去了解基础函数和高阶函数&#xff0c;今天就来看看大火的 ClickHouse 中简单的增删改查怎么写&#xff1f; 创建数据库&#xff1a;create database创建表格&#xff1a;create table修改表格&…