MQTT

MQTT 是轻量级基于代理的发布/订阅的消息传输协议,进行低带宽、不可靠或间歇性的通信。MQTT Server 为 MQTT 客户端提供 3.1 兼容版本的 MQTT API 接口连接服务,支持 QoS 0, QoS 1 的消息传递服务质量。

登陆 IoT 云平台官网,进入 开发者 页面,在 基本设置 中得到用于连接的 AppID(应用唯一标示符 - MQTT username/clientId), AppSecret(消息签名密钥 - MQTT password)。在 MQTT配置 中设置消息传输服务质量, Beta 阶段服务端默认 QoS 0。在 消息推送设置 中 设置消息传输模式为 安全模式 时,MQTT 推送的数据采用相同的加密方案对数据进行加密。

MQTT BROKER IP 端口 是否加密
iot.sensoro.com 1883 安全模式下加密

一、客户端设置

连接 MQTT Server 之前,需要设置 username, password,clientId 等基本参数。

  • 将从 IoT 云平台官网的 开发者 页面中得到的 AppID 作为 username,

  • AppSecret 作为 password。

  • clientId 需要满足正则表达式 ^#AppId#(\/[-_a-zA-Z0-9]{0,36})?$。(假设 AppID 为foobar,则 clientId 需要满足正则: ^foobar(/[-_0-9a-zA-Z]{0,36})?$; foobarfoobar/foobar/abc,都是合法的 clientID)。

注意:

  • 如果有多个客户端使用相同的AppID,确保它们使用不同的clientID。

  • 成功与服务器建立连接后立即被断开,并收到 [Error: Connection refused: Not authorized] 信息时,请确定填写的参数是否正确。

NodeJS 示例代码如下:

var mqtt = require('mqtt'), debug = require('debug')('client'); var clientOption = { username: $YOUR_APPID, password: $YOUR_APPSECRET, clientId: $YOUR_APPID + '/' + $UUID, reconnectPeriod: '10000', clean: true }; var client = mqtt.connect('mqtt://iot.sensoro.com:1883', clientOption); client.on('connect', function () { debug('SUBSCRIBE users/' + clientOption.username + '/devices'); client.subscribe('users/' + clientOption.username + '/devices', { qos: 1 }); }); client.on('message', function (topic, message) { // message is Buffer debug(message.toString()); });

二、接收传感器数据推送(users/:APPID/devices)

MQTT 客户端通过 users/:APPID/devices topic 接收传感器数据的推送,数据格式与 Webhook(自定义回调URL) 推送的数据格式一致。