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 |