[干货分享] 之三-呕血制作-Lettuce IOT框架-移远BC35G+树莓派+华为OC+SpringBoot后台+微信小程序

上一篇主要介绍一下华为OceanConnect平台的profile文件与编解码插件开发而这一篇将要讲解华为OceanConnect平台调测profile文件与编解码插件。

 

华为OceanConnect平台操作二,模拟设备调试


进入在线调测,添加一个测试设备,选择没有真实物理设备。


大家可以看到这个界面,

应用模拟器就是模拟服务端的接收和发送。

IoT Platform就是华为OC平台,

设备模拟器就是模拟我们的线下设备。

接下来我们来检验一下我们的profile文件和编解码插件是否正常。

 

在检验之前,我们先了解一下设备的消息接收。

我们这个演示使用的是Coap物联网协议,这个协议是专门给物联网提供的协议之一。

因为普通互联网协议http/https对于物联网环境而言过于笨重。因此这个REST架构的Coap轻量级协议孕育而生,这个协议采用二进制码流的方式使用UDP进行传输。报文之类的这里就不在赘述了,因为此次演示没有涉及,这里主要讲的是Coap中的主体部分。

 

设备与平台的主体部分皆采用十六进制的方式,因此线下设备发送的数据也是十六进制。

那么我们再设备端发送什么规则的十六进制才能被OC平台成功解析呢,这要回过头来看一下编解码插件中定义的消息模板了。

 

拿bulb_status消息模板为例:

 

第一个字段为地址域,这个地址域ID是平台自动生成的,因为我们点开这个字段,就可以看到平台生成的ID,

大家可以看到值为十六进制的0x0,长度为1个字节,那就是00。因此消息的第一个字段为00.

 

然后是属性status,因为我们现在模拟的是线下设备上报属性给平台,因此这个属性其实是设备赋的值。之前添加消息的时候,作者说过“我们Profile文件中所有属性和命令内属性都是0/1,因此长度设置1即可。”而属性status是表示灯的当前状态,因此我们就模拟设备上报的是开启状态,也就是1。转为1字节长度的话就是01,那么和前面那个字段组合起来就是00 + 01 = 0001。0001就是表示设备上传为当前灯为开启状态,接下来我们试一试。


接下我们可以看到OC平台已经成功的翻译为我们理解的json信息。

 

但是这个并没有指明是哪个服务能力的status属性啊?没关系,使用接口与OC平台对接时,会提供的,别忘了,这只是在测试。

 

接下来我们来模拟一下命令下发以后,设备响应。

这里可以直接模拟下发命令到设备,我们就下发一个关灯的命令,toggleBulb为0。

这时我们就可以看到设备端已经接收到信息了。

大家可能会想,这个数据咋这么长?

那是因为这个是命令下发种类的消息模板,我们不仅添加了messageId字段,还添加了mid字段。可以看一下这个字段。

 

这个字段是OC平台在下发时自动生成的,而且每次下发的ID都不同。长度为2个字节,所以我们来解析一下设备接收到的这条数据。

 

01000300

 

因为第一个字段是地址域,长度为1,因此01就是地址域。对应编解码消息模板里的ON_OFF下发的地址域字段。

果然是01,这说明OC平台向设备发送的消息也是通过编解码插件转为十六进制的。在设备端就可以知道这个数据对应的是哪个命令了。

第二个字段是mid,这个字段是2个字节,因此0003就是这个字段的值。这个字段需要设备响应这个命令时与这个值一致。

剩下的就是这个命令传递的属性值了,就是00,toggleBulb为0关灯。

 

01 + 0003 + 00

messageId + mid + toggleBulb

 

现在设备理解了平台下发的是ON_OFF命令,属性为0。

 

但是在设备理解了以后,还需要给平台响应,也就是设备要给平台也发一条信息。回复ON_OFF这个命令的响应,我们看一下ON_OFF这个消息模板的响应字段。

 

messageId是平台生成的,点进去看一下。我这个是0x2,翻译过来就是02。

mid使用平台下发时传递过来的mid,也就是0003。

errcode只有两个值00与01,表示成功和失败,我们发送00,执行成功。

result 表示设备给平台的响应属性,我们这里就设置当前灯的状态就可以了,因为这个命令下发是关灯00,因此状态也就是00。

好了,现在将字段以序号的顺序组合起来就是02+0003+00+00=0200030000


 

然后我们就可以看到平台这边有了数据上来

 

表示这个命令下发已经执行成功了。

在左侧选择设备管理,然后点击我们刚才新建的那个模拟设备,再点击历史命令,就可以看到所有命令的状态。

把之前编解码插件中新建的5个消息模板都测试一遍,如果都没有问题,那说明华为OC平台的开发工作完成了。

祝贺你啊!

 

下一章节将讲解移远BC35G模组的初次使用,如果使用AT指令给华为OC平台发送消息。

欢迎加入我们的QQ群一起讨论IOT的问题。