文档中心
DOCUMENT CENTER
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 }");