2-小熊座KE1连接物联网平台实训(Profile和编解码插件的开发)

2018年12月19日 1250点热度 0人点赞 0条评论

Profile和编解码插件的开发

本节将围绕电信物联网平台提供的线上Profile开发以及插件开发进行展开阐述。

Profile简介

设备的Profile文件是用来描述设备类型和设备服务能力的文件,是定义了同一类设备具备的服务能力,属性,命令等。

我们要模拟数据上报,命令下发的完整过程,就需要创建数据上报、命令下发的数据类型及属性,即上报的数据是什么,控制命令下发什么命令都将在此处制作。

制作Profile

单击“Profile开发>Profile在线开发”,单击页面右上角的“自定义产品”,转至“产品模板”页面。

−您可以使用模板定义您的产品,单击产品模板右上角的“立即使用”,这里的参数需要根据您的设备进行定义。

−您也可单击右上角的“创建全新产品”,直接定义您的产品,这里以创建全新产品为例。

据实际填写“设备类型”、“设备型号”、“厂商ID”、“厂商名称”等数据。单击“确定”,添加产品完成。

设备类型:指示设备的类型。下拉选择类型,

设备型号:指示设备的型号。这里以NB-IoT Device为例。

厂商ID:指示设备厂商ID。

厂商名称:指示设备的厂商名称。

注:如果在之后的部署任务上出现失败部署问题,请注意厂商ID是否被电信物理网平台认可(不认可也不会报错,但是会影响后面的部署)。如果不被认可,厂商ID则填写华为(HUAWEI)或者移远(Quectel)。

添加完后的显示图

添加上传数据消息

添加完设备信息之后,选择“新建服务”,添加相关服务:这里添加各类传感器的总数据,将总服务名称填写为“KE1_Sensor”,并勾选“响应字段”。

注:响应数据是用于终端设备上传数据到平台,待平台成功接收后返回一个响应的数据给终端设备,通知终端设备平台成功接收到了上传的数据。

  • 属性名(propertyName):指示属性名称,这里以KE1_Sensor为例。
  • 属性类型(dataType):指示数据类型。取值范围:int、float、datetime、string、jsonObject、array。这里以int类型为例。上报数据时,复杂类型数据格式如下:DateTime:yyyyMMdd’T’HHmmss’Z’如:20151212T121212Z jsonObject:自定义json结构体,平台不理解只透传。最小(min)/最大值(max):指示最小/最大值。仅当dataType为int、float时生效,逻辑大于等于/小于等于。
  • 访问模式(method):指示访问模式。R:可读;W:可写;E可订阅。取值范围:R、RW、RE、RWE、null。

这里以添加温度传感器的属性为例:设置温度的类型为int类型,数据范围为-40~100之间,访问方式勾选“读取”。

注:属性名只能使用大小写字母和数字命名。

添加完新增属性之后,以同样的方式增加噪音、光感、湿度、电源和开关传感器的属性。添加完属性之后的界面:

添加命令控制:

命令名称:指示设备可以执行的命令。如门磁的Lock命令、摄像头的VIDEO_RECORD命令。这里以继电器的控制命令(JDQ_Cmd)为例。

添加完命令控制之后,填写新增字段的内容,以开关为例:

命令名与参数共同构成一个完整的命令,添加完命令控制后界面显示:

添加响应字段

点击“新增字段”后,填写字段名、属性和枚举值(便于理解),选择“必选”。

属性、命令下发字段及响应字段都创建完成后如下图:

编解码插件介绍

NB-IoT设备和中国电信物联网开放平台之间采用CoAP协议通讯,CoAP消息的数据为应用层数据,应用层数据的格式由设备厂商自行定义。由于NB-IoT设备对省电要求通常较高,所以应用层数据一般采用十六进制格式。应用层数据在中国电信物联网开放平台做协议解析时,会转换成统一的json格式,以方便应用服务器使用。要实现十六进制消息与json格式消息的转换功能,中国电信物联网开放平台需要使用设备厂商提供的编解码插件,一款设备对应一个编解码插件。

一个模拟数据上报和命令下发的完整过程,离不开“数据上报”、“命令下发”和“命令下发响应”三种类型的消息,因此我们需要新建这三种类型的消息。

开发完Profile文件后,可以在界面上通过图形化的方式完成设备与平台之间的消息映射。在平台中预集成了编解码插件的模板,可以根据设备类型和接入协议在插件模板中选择模板修改开发编解码插件。单击“插件开发”,单击右上角的“添加插件”,转到“插件模板”页签,单击“查看”,您可以查看各个模板的内容。

编解码插件开发

若您的业务和模板中类似,可使用模板再根据实际来修改。若您不需要使用模板则可自己新建插件,下面以新建插件来说明如何开发编解码插件:

新建上报数据消息

点击左上角的插件模板,选择右上的“新建插件”,选择前面创建的profile(KE1):

进入界面后,选择“新建消息”:

为消息定义一个总消息名称“kE1_Sensor”,定义消息类型属于“数据上报”并添加响应字段。

每个新建的消息必须有消息地址域。地址域为标识唯一此消息唯一ID的字段,即唯一标识不同的消息。地址域的名称必须为messageId,且只有地址域的名称可以为messageId。勾选“标记为地址域”即可,点击“完成”。添加第一个地址域一般默认自动设置为0x0。

添加完地址域字段后,开始添加与Profile服务属性之中定义相连的字段。该字段是用于与Profile之中定义的属性进行对接,即建立映射所创建的。

需要注意的地方:

  • 除了数据类型要与Profile之中定义的数据类型相同之外,还要根据数据的正负号来判断是否使用无符号整形,如温度的数据范围存在负数,因此需要选择有符号整形,湿度则选择无符号整形。
  • 偏移值是指从有效数据(并非地址开始,如第一个有效值位湿度的开头)开始进行偏移对应的范围,偏移值和长度会随着数据类型的选择而改变。

这里以添加湿度字段为例:

新建完成后,单击“完成”。再以同样的方式将温度、噪音、光感、电源和开关等Profile属性建立映射关系。

其中:光感和电源的类型为int16u(16位无符号整形)、温度为int8(8位有符号整形)、噪音和开关为int8u(8位无符号整形)。

创建了新的消息之后需要将Profile与新消息建立连接,也就意味着新消息与Profile定义的属性信息建立完映射关系。

注:messageId不需要建立映射关系。

新建命令下发

点击左上角“新建消息”,创建一个新的消息用于命令的下发,在基本信息中选择消息类型“命令下发”:

与数据上报的消息相同,也需要建立一个属于命令下发的消息对应的地址域,此处图略。

注:此时会发现,地址域的默认值会自动+1,即新建的地址域为0x1,这是为了区分消息的地址而产生的。

同样,也和数据上报相同,第一个建立的字段是地址域,第二个字段为添加命令下发字段。

注:长度和偏移值会随着数据类型的选择而改变,不需要额外设置。

在命令下发消息之中也可以添加响应字段,用于设备接收到平台命令后回射的一个响应。在“添加字段”之中,添加响应表示字段,只需勾选响应字段即可。在这里的响应字段通常会自动命名不可别修改,其值会放在消息之中和命令一起下发,终端设备回射一个响应时需要夹带该值,以告知平台终端设备响应的是平台下发命令中的哪一条命令。

“添加响应字段”的作用是指设备执行完下发命令之后返回一个执行结果到物联网平台,因此也需要建立地址域。建完地址后其值为0x2(一共3个地址域,第一个地址域是0x0开始递增),在添加响应字段:只需勾选命令执行状态字段即可。并且数据类型和profile命令中ack的数据保持一致。

最后添加一个响应标识字段:

与之前拖拽Profile湿度属性sd相同将剩余的所有属性及命令全部与消息建立映射,如下图所示:

完成映射关系后,单击页面右上角的“保存”,保存之后再进行“部署”。部署成功后,系统会将您的设计结果自动生成编解码插件包。

 

 

文章评论