3、我们对大疆的消息包做了什么?
跟大疆无人机操控对接的部分其实就是服务器与设备相互的发送publish消息包。。。(PS:不清楚为什么大疆不利用mqtt其他的消息包类型。)
然后大疆对消息包分为了这几个部分(通过mqttpublish的topic进行区分):
1、state 属性
2、status 状态
3、requests 请求。
4、property_set 属性被修改。
5、service 指令
6、service_reply 指令响应结果。
7、events 事件
这里举个例子分别解释一下:
比如无人机用的是M30 Camera 摄像头,那么在属性中就会获取到该摄像头的信息。
比如无人机开关机(上下线)就会从status里获取到上下线的状态。
比如摄像头拍照之后,需要上传到服务器。机场就会发送一个requests去获取上传的oss服务器地址以及临时凭证。
比如通过遥控器修改了无人机的一些信息。那么机场就会发送一个property_set给服务器,用于状态同步。
比如服务器需要给机场发送指令去控制无人机,那么就会通过service去发送指令,并且从service_reply中获取到指令执行的结果。
比如无人机上天之后,无人机就会上报一些避障信息。这些都是发生在无人机周围的事件,通过events上报。
根据上面的描述,我们可以了解,如果要做个无人机操作平台的话,基本上state,status是需要定时转发给前端,前端发送的指令通过service 主题去下发。service_reply返回给前端,events事件是实时转发给前端的。
而requests,property_set等前端是可以忽略的。
这里发一下部分代码:
==== 添加相应设备的编解码器 ====
==== 通过发送的publish消息包确认消息类型 =====