用户可以直接通过SDK提供的MQTT API与阿里云物联网平台通信,即可以通过向指定的Topic发送消息的方式将数据发送到阿里云物联网平台,也可以通过订阅指定的Topic从阿里云物联网平台接收数据,这些Topic都是用户自定义的。
通信流程图
使用MQTT Topic与物联网平台通信的流程示意图如下:
通过调用
IOT_MQTT_Construct()
接口调用, 建立设备和云平台之间的长连接 。该接口用来向云平台发起连接请求,需要的“签名信息”可以通过
dev_sign
功能中的IOT_Sign_MQTT()
获得。连接成功后,会返回一个
handle
参数,这是连接的句柄,可用作之后所有MQTT网络接口的输入参数。
通过
IOT_MQTT_Subscribe()
接口调用,可以向云平台表达设备将接收哪些Topic上的报文。进入业务主循环 。
通过
IOT_MQTT_Publish()
或IOT_MQTT_Publish_Simple()
,可将消息上报到云端。IOT_MQTT_Yield()
用于接收云端下发的消息,并调用用户在IOT_MQTT_Subscribe()
时指定的回调函数,用于对数据进行处理。
功能API接口
函数名 | 说明 |
MQTT连接后,调用此函数检查长连接是否正常。 | |
MQTT实例的构造函数,入参为 | |
MQTT实例的摧毁函数,入参为 | |
MQTT会话阶段,组织一个完整的 | |
MQTT会话阶段,组织一个完整的 | |
MQTT会话阶段,组织一个完整的 | |
MQTT会话阶段,组织一个完整的 | |
MQTT会话阶段,组织一个完整的 | |
MQTT会话阶段,MQTT主循环函数,内含了心跳的维持,服务器下行报文的收取等。 |
需要实现的HAL接口
以下函数为可选实现,如果希望SDK提供MQTT通道功能,则需要用户对接。
函数名 | 说明 |
返回设备加电以来到当前时间点过去的毫秒数 | |
按照入参指定的毫秒数睡眠相应时间 | |
销毁一个TLS连接,用于MQTT功能,加密连接的情况 | |
建立一个TLS连接,用于MQTT功能,加密连接的情况 | |
从一个TLS连接中读数据,用于MQTT功能,加密连接的情况 | |
向一个TLS连接中写数据,用于MQTT功能,加密连接的情况 | |
销毁一个TLS连接,用于MQTT功能 | |
建立一个TCP连接,包含了域名解析的动作和TCP连接的建立 | |
在指定时间内,从TCP连接读取流数据,并返回读到的字节数 | |
在指定时间内,向TCP连接发送流数据,并返回发送的字节数 |
SDK提供的用户API接口都列在src/mqtt/mqtt_api.h
,可能需要对接的HAL函数都列在src/mqtt/mqtt_wrapper.h
,具体以代码为准。