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