2024/11/1
在使用 ThingsCloud 平台的过程中,理解设备属性的相关概念和逻辑,对于接入和管理物联网设备,以及在具体场景中充分应用,都至关重要。
本节将深入介绍设备属性的概念,以及属性当前值和属性历史数据的使用逻辑。
在物联网设备中,属性是指设备自身的某种状态,例如各种测量值、开关状态、传感器数值等。
举几个常见的例子:
由此可见,一个设备可能包含多个属性,我们通过这些设备属性,来记录和管理设备的各种状态。
由于设备的状态会不断发生变化,因此属性的值也会随之变化,这就产生了 属性当前值 和 属性历史数据 两种概念,它们有着不同的使用逻辑,后边我们会详细介绍。
那么,我们如何改变设备的属性值呢?ThingsCloud 支持以下几种方式:
通过设备端的 属性上报 来实现平台设备属性的更新。
例如:设备端将温度、湿度、压力、光照、开关状态、继电器状态等信息上报到平台,平台会自动更新设备属性当前值,同时也记录到属性历史数据中。
属性上报的方法请参考 MQTT 接入指南。
在属性上报过程中,设备端需要按照平台规定的格式,将属性数据发送到平台。平台接收到属性数据后,会根据属性标识符来更新相应的设备属性。属性上报是实现设备状态实时更新的关键步骤,它确保了平台上的设备属性与设备端实际状态保持一致。
以 MQTT 属性上报为例,设备端通过 JSON 格式来上报设备属性,例如上报温度数值,如下:
{ "temperature": 25,}
也可以一次上报多个属性值,例如:
{ "humidity": 50, "pressure": 1013, "light": 500,}
或者,一次上报多个不同数据类型的属性值,例如:
{ "temperature": 25, "humidity": 50, "pressure": 1013, "light": 500, "version": "1.0.0", "iccid": "8986010123456789012", "location": { "lat": 39.9042, "lng": 116.4074 }}
对于不支持直接上报 JSON 格式数据的设备,ThingsCloud 支持多种自定义数据格式,例如 HEX 格式、Plaintext 格式,详情请浏览 自定义数据流。
在平台更新属性值,并同时向设备端下发指令,以更新设备的状态。我们将这种方式称为属性下发。
这种方式通常用于远程控制设备,例如改变设备的继电器开关、工作模式,以及设置阈值、更新配置参数等。
属性下发可通过控制台、看板、App 面板或 API 实现。
例如:在控制台中,将开关状态属性的开关值设置为 true,平台会将该指令下发到设备端,设备端接收到指令后,会执行相应的动作。
若通过 API 来下发属性,例如下发继电器闭合,如下:
{ "relay": true,}
或者一次下发控制多个继电器,如下:
{ "relay1": false, "relay2": true, "relay3": false, "relay4": false}
在平台更新属性值,但不下发到设备。也就是说设备端并不知道也无需关心平台的这类属性。
例如:用户在平台设置设备的智能模式,用于平台的消息规则中判断是否执行设备联动。
云端属性更新同样可通过控制台、看板、App 面板或 API 实现。
在 ThingsCloud 中,属性标识符是设备属性的唯一标识。同一个设备中,属性标识符不能重复。
属性标识符中只能包含:英文大小写字母、数字、下划线、横线,长度不超过 64 个字节。
例如:
属性名称 | 属性标识符 |
---|---|
温度 | temperature |
土壤湿度 | humidity |
大气压力 | pressure |
光照强度 | light |
开关状态 | switch |
继电器状态 | relay |
固件版本 | version |
ICCID | iccid |
位置经纬度 | location |
位置经纬度 | location |
以上的属性标识符只是举例,实际使用中,您可以自行约定属性标识符,只需在设备端和平台保持一致即可。例如:
temperature
或 temp
humidity
或 humi
pressure
或 press
light
或 lightness
。temperature1
、temperature2
、temperature3
。属性值支持多种数据类型,包括:数值、开关量、文本、键值对、列表等。
属性的数据类型决定了属性值的取值范围和操作方式。例如:
再举几个例子如下:
设备名称 | 属性标识符 | 数据类型 | 属性值 |
---|---|---|---|
温度 | temperature | 数值 | 25.5℃ |
土壤湿度 | humidity | 数字 | 50% |
大气压力 | pressure | 数字 | 1013hPa |
光照强度 | light | 数字 | 500lx |
开关状态 | switch | 开关量 | true |
继电器状态 | relay | 开关量 | false |
固件版本 | version | 文本 | "1.0.0" |
ICCID | iccid | 文本 | "8986010123456789012" |
位置经纬度 | location | 键值对 | {"lat": 39.9042, "lng": 116.4074} |
通过设备类型的属性定义,您可以为设备属性预先定义属性名称、数据类型以及其它约束条件,并且为不同类型的设备创建标准化的属性模板,确保设备属性的一致性和可管理性。请参考 属性定义
设备属性当前值,代表着设备属性最后一次更新的值。
例如,对于一个温度传感器设备,其当前温度值会随着传感器的测量和数据上传而不断更新,而平台所记录的属性当前值就是最新的那个测量结果。
在控制台进入任意设备详情页的概览中,即可查看设备属性的当前值。
在控制台进入任意设备详情页的属性列表中,可勾选多个属性,点击移除选中属性,如下图:
值得注意的是,删除设备属性只是删除属性的当前值,并不会自动删除属性历史数据。如果希望删除属性历史数据,需要通过 删除属性历史数据 来实现。
在 ThingsCloud 物联网平台中,删除属性当前值的操作是不可逆的。一旦删除,平台将不再保留该属性的当前值,并且无法通过历史数据来还原该属性的当前值,只能等待下一次改变属性时生成新的属性当前值。因此,在执行删除操作之前,请务必确认是否真的需要删除该属性的当前值。
对于已经删除的设备属性,如果再次使用同样的属性标识符,仍然可以浏览属性历史数据,除非您已经删除了属性历史数据。
与属性当前值不同,属性历史数据是一个时间序列。它记录了设备属性在不同时间点的值,形成了一条随时间变化的数据序列,也称为“时序数据”。
属性历史数据能够反映设备属性在过去一段时间内的变化趋势。比如,对于温度传感器设备,历史数据可以显示出一天内温度的波动情况,有助于分析设备的工作环境变化和性能稳定性。
再举个例子,智能电表用于记录家庭或企业的用电情况,它的一个关键属性是 “总有供电能”,也就是耗电量(度)。每过一段时间(比如每隔 15 分钟),电表会上报最新值到 ThingsCloud 平台。
假设在一天内,电表上传了以下耗电量数据:
时间 | 耗电量(度) |
---|---|
上午 8 点 00 分 | 0.25 |
上午 8 点 15 分 | 0.3 |
上午 8 点 30 分 | 0.33 |
上午 8 点 45 分 | 0.38 |
... | ... |
晚上 10 点 00 分 | 3.5 |
这些按照时间顺序记录的耗电量数据就是属性历史数据。通过这些数据,可以分析出一天内用电的高峰和低谷时段。例如,我们可以发现下午 6 点 - 7 点之间耗电量增长较快,可能是因为这个时间段是园区使用电器较多的时候。并且,ThingsCloud 还可以将这些数据用于统计每日、每月的用电量,用于电费计算或者节能分析。
再比如,在一个工厂车间里,有多个温度传感器来监测生产设备的运行温度。每个传感器都有 “温度” 这个属性。以其中一个传感器为例,它每隔 1 分钟记录一次温度并上传到 ThingsCloud 平台,其历史数据可能如下:
时间 | 温度(℃) |
---|---|
上午 9 点 00 分 | 25 |
上午 9 点 01 分 | 25.2 |
上午 9 点 02 分 | 25.3 |
上午 9 点 03 分 | 25.1 |
... | ... |
下午 5 点 00 分 | 28 |
这组温度历史数据可以帮助工程师了解设备在不同时间的温度变化情况。如果在某一时刻温度突然升高,比如从 25℃快速上升到 35℃,通过查看历史数据就能追溯这个变化发生的时间点。同时,长期的温度历史数据还可以用于预测设备是否可能因为温度过高而出现故障,从而提前进行维护。
在控制台的设备详情页中,点击任意属性的 “查看历史数据” 图标,即可查看属性历史数据,如下图:
对于数值类型的属性,还可以点击 “查看时序图表” 图标,查看属性历史数据的时序图表,如下图:
在控制台进入任意设备详情页的属性列表中,点击删除属性历史数据,如下图:
可以选择删除历史数据的时间范围,如下图:
删除历史数据的时间范围支持以下几种:
需要注意的是,删除历史数据操作时,平台不支持仅对特定的属性删除历史数据。也就是说,在选定的时间范围内,设备下所有属性的历史数据都会被删除。这是因为在属性历史数据的存储机制下,每个时间点的数据是一个整体的概念,如果单独删除某个属性,这将破坏数据的完整性和一致性,也使得使用逻辑变得更加复杂。
快来试试吧,我们期待您的反馈和建议。
物联网设备接入 ThingsCloud ,请参考 设备接入指南。
ThingsCloud 是新一代物联网设备统一接入平台,帮助企业在极短的时间内搭建个性化的物联网平台和应用,并适应不断变化的发展需求。目前广泛应用于制造、电力、能源、环境、农业、楼宇、家居、教育、交通、物流、自动化等领域。
ThingsCloud 可接入各类网关,传感器、执行器、控制器、通信模组、智能硬件等,实现数据采集、远程控制,数据分析、告警通知、智能联动。还可以零代码生成项目应用 SaaS 和用户应用 App,并开放 API 和实时消息,便于业务系统集成和扩展开发。
通过使用 ThingsCloud,企业可以大大缩短搭建物联网系统的时间,节省软件开发费用,降低定制开发的风险,快速落地数字化和智能化项目。我们的客户遍布各行业,包括中国石化、中国铁塔、中国燃气、吉林大学、北控水务、ACE、中国民航大学、西安交通大学、精量电子、大秦铁路、宁波水利局等。
5000+ 企业在使用 ThingsCloud