首先我们先打开ocean connect开发中心https://iot-dev.huaweicloud.com。
然后我们新建一个项目记住行业选择公用事业。
然后我们选择产品开发-自定义产品,按照自己需要创建产品,协议为coap。
然后我们创建profile分别为sensordata。
smoke
lightsensor
Peofile创建完毕之后我们紧接着就创建编解码插件。
Sensordata
Messageld直接勾选标记为地址域即可保存。
Temperature数据类型为int8s长度1偏移1-2
Humidity数据类型为int8u长度为1偏移为2-3
Battery数据类型为int8u长度1偏移3-4
接下来新增消息smoke。
Messageld依然为勾选标记为地址域
Concentration数据类型为int8u长度1偏移1-2
接下来创建lightsensor。
Ligheness数据类型为string长度5偏移1-6
接下来先点击保存在点击部署。
接下来我们直接选择没有真实的物理设备。

我们进去的时候会弹这个,不用管。
然后我们发送00193C64会得到这样。
但是我们发送0119又会这样。
我们多发几位又会这样。
我们发送0319又不会显示。
我们发送01194561时和发送0119接收到的数据都是一样的这是因为编解码插件读取到01时由于我们只在后面添加了一个数据上报的字段,所以只会给后面留一个16进制位数,超过的是不会理解的。
我们发送0319时收不到数据是因为编解码插件那里对03是没有定义的,所以收到03开头的信息是无法做出反应的。
为什么应用模拟器能够根据不同的设备命令收到做出不同的反应呢?
那是因为我们在编解码插件那里的创建的messageld对不同的数据开头划分了不同的代码所以平台才能知道设备传上来的是什么数据。
为什么我们上传00193C64会得到这个呢?
因为我们上传的时候上传的是16进制的数字,平台会将16进制按照约定好的规则转换成不同的数据,这里就是将16进制转换成10进制。
而这个lightness 251.6则是因为我们上传的16进制数被转换成了ASCII码。