产品模型定义:创建产品、定义服务属性、定义命令、定义事件
好,咱们接着往下走。设备注册搞定了,接下来要做什么?
你得告诉华为云IoT平台,你的设备长什么样,能干什么。这就是产品模型定义。说白了,就是给设备画个像,定个规矩。
我个人习惯,把这步叫做「设备上云前的户口本」。没有这个,平台根本不认识你的设备。
一、创建产品:给设备一个身份
先登录华为云IoT平台的控制台。找到「产品」菜单,点进去,然后点「创建产品」。
这里要填几个关键信息:
- 产品名称:比如「智能温控器v2.0」。别太随意,后面找起来麻烦。
- 所属资源空间:选你之前创建的那个资源空间。我建议一个项目一个资源空间,别混在一起。
- 协议类型:选MQTT。咱们这课就是讲MQTT对接的。
- 数据格式:选JSON。这是最通用的,解析也方便。
- 厂商名称:填你公司名或者你自己起的名字。
填完点「确定」。嗯,产品就创建好了。是不是很简单?
但别高兴太早。产品只是个空壳子,你得往里填东西。
二、定义服务属性:告诉平台设备能上报什么
产品创建好了,接下来要定义「服务」。一个产品可以包含多个服务。每个服务里,再定义属性、命令、事件。
我举个例子。假设你做一个智能灯。它有一个服务叫「LightControl」。这个服务里,属性就是灯的当前状态。
点击产品名称,进入产品详情。找到「服务」选项卡,点「添加服务」。
- 服务ID:比如
LightControl。注意,这个ID在代码里会用到,别用中文。 - 服务类型:一般和服务ID保持一致就行。
- 描述:随便写点,方便以后维护。
服务建好了,接下来定义属性。点「添加属性」。
| 参数 | 说明 | 示例值 |
|---|---|---|
| 属性名称 | 属性的名字,比如「开关状态」 | power |
| 属性ID | 代码里用的标识符 | power |
| 数据类型 | int、string、float等 | int |
| 取值范围 | 属性的有效值范围 | 0-1 |
| 步长 | 数值变化的粒度 | 1 |
| 单位 | 比如百分比、摄氏度 | 无 |
| 访问模式 | 可读、可写、可上报 | 可读、可上报 |
举个例子。灯的开关状态,属性ID叫 power,数据类型是int,取值范围0或1。0表示关,1表示开。
再比如,灯的亮度。属性ID叫 brightness,数据类型int,取值范围0-100,单位是百分比。
定义完属性,设备就能上报这些数据了。平台收到后,会按照你定义的格式来解析。
三、定义命令:让平台能控制设备
属性是设备告诉平台「我是什么状态」。命令是平台告诉设备「你给我做什么」。
你想想看,智能灯不能只上报状态吧?你还得能远程开关它。这就用到命令了。
在服务里,点「添加命令」。
| 参数 | 说明 | 示例值 |
|---|---|---|
| 命令名称 | 命令的名字 | setPower |
| 命令ID | 代码里用的标识符 | setPower |
| 描述 | 说明这个命令是干嘛的 | 设置灯的开关状态 |
命令可以带参数。比如 setPower 命令,需要一个参数叫 power,类型是int,取值范围0-1。
添加参数的方法:在命令详情里,点「添加参数」。参数的定义方式和属性类似。
命令定义好后,平台下发命令时,设备会收到一个MQTT消息。设备处理完,要回复一个响应。这样平台才知道命令执行成功了。
四、定义事件:让设备能主动报告异常
事件和属性有点像,但用途不同。属性是周期性上报的,比如每5秒上报一次温度。事件是突发性的,比如设备故障、告警。
我个人习惯,把事件定义为「设备主动告诉平台,我出事了」。
在服务里,点「添加事件」。
| 参数 | 说明 | 示例值 |
|---|---|---|
| 事件名称 | 事件的名字 | alarm |
| 事件ID | 代码里用的标识符 | alarm |
| 事件类型 | 告警、故障、信息等 | 告警 |
| 描述 | 说明什么情况下触发这个事件 | 温度超过阈值时触发 |
事件也可以带参数。比如告警事件,可以带一个参数叫 temperature,表示触发告警时的温度值。
举个例子。你做一个温度传感器,正常温度范围是0-50度。一旦超过50度,设备就上报一个告警事件。平台收到后,可以发短信通知你。
message 字段,类型是string。这样设备可以把具体的错误信息带上来,方便排查问题。
定义完事件,整个产品模型就差不多了。总结一下:
- 属性:设备的状态,周期性上报。
- 命令:平台下发给设备的指令,设备要执行并回复。
- 事件:设备主动上报的突发情况,比如告警。
嗯,到这里,产品模型定义这块就讲完了。下一章,咱们开始写代码,让设备真正连上华为云IoT平台。