Yeelink MQTT API

從 Yeelink Wiki
跳到: 導覽搜尋

前言

Yeelink MQTT API可以讓實時的控制你的設備,目前Yeelink MQTT協議僅支持訂閱開關設備最新數據點。通過新版本的開發者中心developer.yeelink.net設備管理頁面中的設備控制對開關設備進行的操作可以即時發佈到MQTT Server並推送給你訂閱了相關信息的客戶端。

MQTT服務器信息

Host port 備註
mqtt.yeelink.net 1883 暫定

認證

連接時使用U-ApiKey或者P-ApiKey作為用戶名,用戶的Access Key或者產品的密鑰作為密碼連接服務器。

 mqtt://U-ApiKey:<api_key>@mqtt.yeelink.net

如果連接時未使用用戶名或密碼,在發佈或者訂閱時,訂閱的topic前面添加登錄類型和密鑰:u/<your-api-key>/v1.1/device/<device_id>/sensor/<sensor_id>/datapoints,詳見訂閱狀態一節

訂閱狀態

訂閱(Subscribe)

 [<auth_type>/<api_key>]/v1.1/device/<device_id>/sensor/<sensor_id>/datapoints
字段 類型 備註
auth_type String 認證類型,固定值:u或者p分別代表用戶access key和產品密鑰
api_key String 密鑰,用戶訪問密鑰或者產品密鑰
device_id int 設備id
sensor_id int 傳感器id

示例:

 开发者使用用户访问密钥访问
 [u/<access-api-key>]/v1.1/device/1/sensor/1/datapoints
 产品使用产品密钥
 [p/<product-key>]/v1.1/device/1/sensor/1/datapoints

代碼

//NodeJS代码,使用了mqtt库
var mqtt = require('mqtt')
client = mqtt.connect("mqtt://U-ApiKey:<should_replace_to_your_key>@mqtt.yeelink.net");
client.subscribe("/v1.1/device/9007/sensor/16262/datapoints");
client.on("message", function(topic, message){
    console.log(topic);
    console.log(message);
});
 
/** 输出内容*****
 * /v1.1/device/12098/sensor/19538/datapoints
 * {"value":1,"timestamp":"2014-06-27T14:59:21","sensor_id":"19538","device_id":"12098"}
 */

注意:

 认证类型和认证密钥只有在建立连接时未提供用户名和密码的情况下才是必须的,如果连接时提供了用户名和密码则可以省略。
 /v1.1/device/1/sensor/1/datapoints

返回值

JSON

{"sensor_id":19538,"timestamp":1403795471,"value":0}
字段 類型 備註
sensor_id int 傳感器ID
timestamp int Unix時間戳
value int 當前值,1或0