从几个小问题谈谈我对华为云产品开发的理解

本文详细阐述了物联网设备中温度、湿度、光照度独立消息的实现方法,强调了命令下发与回应不能合为一条消息的原因,以及messageid和mid在通信过程中的作用。同时,解释了编解码插件在二进制与JSON转换中的关键功能,确保设备与平台间数据准确传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 如果要把温度,湿度,光照度分成三条独立的消息,实操中如何改动?

        在模型定义的时候将温度、湿度和光照度分别放在不同的服务之中,然后再开发编解码插件的时候放在不同的消息之中。有时候多数据不需要放在一起,一些隔很长时间才需要获取一次的数据,可以成为一条独立的消息,以减少开销。

2 平台命令下发和命令回应可以合成一条消息吗?

        不可以,这里的命令下发是指平台发送给设备的命令,命令回应是设备收到平台下发的命令后,才发给平台的响应。设备必须向平台返回ACK响应,平台才认为设备收到了命令,否则平台会认为这条命令没有下发成功,会重复下发这条命令直到收到ACK响应或命令过期。

立即下发
缓存下发

3  理解messageid 和mid的区别。

        messageid更像是标记一条信息是什么类型的信息,比如说平台在下发各种不同的命令时,同一种命令会带有相同的messaged字段,如果需要设备在接到命令后,需要返回命令响应,则要发送messged+1的响应信息。也因为messsged的不同,编解码插件可以对设备发送的数据中的上报消息和命令响应消息进行区分。而messageid,是在开发编解码插件的时候就我们就已经定义好的。

右边框框中有三条数据,倒数第二条是回应倒数第一条的响应消息,第一条是设备上报的数据,显而易见,他们的messageid明显不同

       在对平台下发的命令进行回应时,mid字段就相当重要了,它表示设备的上发的命令响应回应的是哪一条消息,因此,我们可以观察到,命令下发消息和命令响应消息中的mid字段,一定要是相同的。如果不相同,日志会有mid为空的错误。而且平台下发命令,不管有没有收到设备的命令回应,每发一条消息,mid会+1,我们要对这条消息进行回应的话,就必须在我们的命令回应字段加入相同的mid。如此一来,编解码插件可以将命令下发消息和对应的命令响应消息进行关联,进行一一的对应。

观察左下角的日志,响应成功
报错,找不到mid

4 理解编辑码插件作用。

        编解码插件是用来完成二进制格式和JSON格式的转换的。

        在命令上报流程中,它负责将设备上报的二进制码流解码成JSON格式的数据,发送给应用服务器。将应用服务器响应的JSON格式数据编码成二进制码流,下发给设备。

数据上报流程

        在命令下发流程中,将应用服务器下发的JSON格式数据编码成二进制码流,下发给设备。将设备响应的二进制码流解码成JSON格式的数据,上报给应用服务器。

命令下发流程

        完 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值