MQTT 接入
接入介绍
针对实时行要求高的智能硬件, 格物云IoT平台定义了一套 MQTT 接入的协议, 该协议实现了对设备进行实时请求和反馈, 也包含的实时数据的收集,和属性的反馈。
接入方案
初始化MQTT客户端
client.connect("You device ID", product_key, device_token);- product_key 为产品的 key
- device_token 为每个设备唯一的 token
MQTT 请求
每个请求都有唯一的消息 ID, 通过订阅 /request/+ 来获取消息, 并发布 /response/:reqid 来完成一个请求。
首先订阅 /request/+
client.subscribe("/request/+");反馈结果 /response/:reqid
void onMqttMessage(
const char* topic,
uint8_t * payload,
unsigned int length)
{
const size_t len = strlen(topic);
char new_topic[len + 2];
// remove "/request/"
char reqid[len - 9];
size_t i;
for (i = 9; i < len; i ++) {
reqid[i - 9] = topic[i];
}
sprintf(new_topic, "/response/%s", reqid);
client.publish(topic, "{ \"key\": \"value\" }");
}发布实时数据
通过发布 /telemetry 的消息来汇报实时数据,数据为 JSON 格式
client.publish("/telemetry", "{ \"temperature\": 30.5 }");发布实时属性
通过发布 /attributes 的消息来汇报实时属性,数据为 JSON 格式
client.publish("/attributes", "{ \"switch_1_state\": 1 }");