使用步骤
import { OpenSaasSDK } from ‘xxx/openSaasSdk’
- 初始化开发者信息,对应涂鸦云 clientId、secret、访问令牌、刷新令牌。
OpenSaasSDK.set({clientId, secret, access_token, refresh_token})
OpenSaasSDK.request({
data: {
action: "***.***",
version: "1.0",
params: {"***":{}}
}
});
方法列表
动作 |
版本号 |
描述 |
mqtt.getMqttConfig |
1.0 |
获取MQTT连接配置 |
device.listDevices |
1.0 |
获取设备列表 |
device.getDeviceStatus |
1.0 |
获取设备最新状态 |
device.batchQuerySwitchStatus |
1.0 |
批量查询开关状态 |
device.getDeviceFunctions |
1.0 |
获取设备功能集列表 |
device.getDeviceSpecifications |
1.0 |
获取设备规格属性列表 |
device.controlDevice |
1.0 |
下发设备指令 |
device.controlDeviceSwitch |
1.0 |
控制设备开关 |
device.controlInfraredDevice |
1.0 |
控制红外设备 |
device.getInfraredStatus |
1.0 |
获取红外设备最新状态 |
scene.listScenes |
1.0 |
获取场景列表 |
scene.triggerScenes |
1.0 |
触发场景 |
doorLock.remoteUnlock |
1.0 |
zigbee远程开锁 |
elevator.qrcode |
1.0 |
获取梯控二维码 |
见底部 |
1.0 |
小程序蓝牙SDK使用步骤 |
获取MQTT连接配置
方法说明
获取MQTT连接配置
方法参数
action |
version |
mqtt.getMqttConfig |
1.0 |
请求参数
参数名 |
类型 |
说明 |
connect_id |
String |
终端设备唯一标识(非必传,建议传) |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Object |
MQTT连接配置 |
result参数说明
参数名 |
类型 |
说明 |
client_id |
String |
mqtt连接client_id(用户账号及unique_id 生成的一个唯一不变的映射)一个clientId 即可以用于发布也可以订阅 |
expire_time |
Integer |
当前配置失效期,当前配置失效,所有的链接都将断开 |
username |
String |
mqtt连接用户名(用户账号生成的一个唯一不变的映射) |
password |
String |
mqtt连接密码 ,失效期内该字段不变 |
sink_topic |
Map |
mqtt topic:用户下发设备控制的mqtt,格式cloud/token/out/{dev_id},传具体控制的iot设备id |
source_topic |
Map |
mqtt topic:设备上报消息推送给该账号(支持多个clientId取链接) |
url |
String |
Mmqtt链接地址(包括协议、ip、port) |
请求示例
OpenSaasSDK.request({
data: {
action: "mqtt.getMqttConfig",
version: "1.0",
params: {
"connect_id": "******"
},
}
});
成功响应示例
{
"result": {
"client_id": "******",
"expire_time": 7200,
"username": "******",
"password": "******",
"sink_topic":{
"device":"cloud/token/out/{device_id}"
},
"source_topic":{
"device":"cloud/token/in/22e37df6e53bc8******"
},
"url": "wss://m1.tuyacn.com:443/mqtt"
},
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
获取设备列表
方法描述
获取设备列表
方法参数
action |
version |
device.listDevices |
1.0 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Array |
设备列表 |
result参数说明
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
product_id |
String |
产品唯一标识 |
device_name |
String |
设备名称 |
category_name |
String |
品类名称 |
category_code |
String |
品类编码 |
sub |
Boolean |
子设备标识 |
online |
Boolean |
是否在线 |
position |
String |
位置 |
dp_count |
Integer |
Data point数量 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.listDevices",
version: "1.0"
}
});
成功响应示例
{
"result": [
{
"category_code": "ckqdkg",
"category_name": "",
"device_id": "6c423606c35******",
"device_name": "Zigbee low-frequency card power switch",
"dp_count": 0,
"online": true,
"position": "Living room",
"product_id": "iqsefpek",
"sub": false
}
],
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
获取设备最新状态
方法描述
获取设备最新状态
方法参数
action |
version |
device.getDeviceStatus |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Array |
设备状态列表 |
result参数说明
参数名 |
类型 |
说明 |
code |
String |
状态码 |
value |
String |
状态值 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.getDeviceStatus",
version: "1.0",
params: {
"device_id": "6c760b4d9668******_switch_2"
}
}
});
成功响应示例
{
"result": [
{
"code": "switch",
"value": "true"
}
],
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
批量查询设备开关状态
方法描述
批量查询设备开关状态
方法参数
action |
version |
device.batchQuerySwitchStatus |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_ids |
List |
设备唯一标识列表 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Array |
设备开关状态列表 |
result参数说明
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
status |
Boolean |
开关状态 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.batchQuerySwitchStatus",
version: "1.0",
params: {
"device_id": "6c760b4d9668******"
}
}
});
成功响应示例
{
"result": [
{
"device_id": "6c760b4d9668******",
"status": true
}
],
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
获取设备功能集
方法描述
获取设备功能集
方法参数
action |
version |
device.getDeviceFunctions |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Object |
返回结果 |
result参数说明
参数名 |
类型 |
说明 |
category_code |
String |
品类编码 |
functions |
Array |
功能集列表 |
result.functions参数说明
参数名 |
类型 |
说明 |
code |
String |
功能码 |
type |
String |
功能类型 |
values |
String |
参数取值范围 |
name |
String |
功能名称 |
desc |
String |
功能详情 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.getDeviceFunctions",
version: "1.0",
params: {
"device_id": "6c760b4d96688******"
}
}
});
成功响应示例
{
"result": {
"category": "kg",
"functions": [
{
"name": "Switch",
"desc": "Main switch. true: all on. false: all off.",
"code": "switch",
"type": "Boolean",
"values": "{}"
}
]
},
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
获取设备规格属性
方法描述
获取设备规格属性
方法参数
action |
version |
device.getDeviceSpecifications |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Object |
返回结果 |
result参数说明
参数名 |
类型 |
说明 |
category_code |
String |
品类编码 |
functions |
Array |
功能集列表 |
status |
Array |
状态集列表 |
result.functions参数说明
参数名 |
类型 |
说明 |
code |
String |
功能码 |
type |
String |
功能类型 |
values |
String |
参数取值范围 |
name |
String |
功能名称 |
desc |
String |
功能详情 |
result.status参数说明
参数名 |
类型 |
说明 |
code |
String |
状态码 |
type |
String |
状态类型 |
values |
String |
参数取值范围. |
请求示例
OpenSaasSDK.request({
data: {
action: "device.getDeviceSpecifications",
version: "1.0",
params: {
"device_id": "6c760b4d96688******"
}
}
});
成功响应示例
{
"result": {
"category": "kg",
"functions": [
{
"name": "Switch",
"desc": "Main switch. true: all on. false: all off.",
"code": "switch",
"type": "Boolean",
"values": "{}"
}
],
"status":[
{
"code":"switch_1",
"type":"Boolean",
"values":"{}"
}
]
},
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
控制设备
方法描述
根据设备唯一标识下发指令
方法参数
action |
version |
device.controlDevice |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
commands |
Array |
指令集 |
commands参数说明
参数名 |
类型 |
说明 |
code |
String |
指令码 |
value |
Object |
指令值 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Boolean |
操作结果 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.getDeviceSpecifications",
version: "1.0",
params: {
"device_id": "6c760b4d96688******",
"commands": [
{
"code": "switch_1",
"value": false
}
]
}
}
});
成功响应示例
{
"result": true,
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
控制设备开关
方法描述
根据设备唯一标识控制开关
方法参数
action |
version |
device.controlDeviceSwitch |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
value |
Boolean |
Device switch. true:开;false:关 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Boolean |
操作结果 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.controlDeviceSwitch",
version: "1.0",
params: {
"device_id": "6c760b4d96688******",
"value": true
}
}
});
成功响应示例
{
"result": true,
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
控制红外设备
方法描述
根据设备唯一标识控制红外设备
方法参数
action |
version |
device.controlInfraredDevice |
1.0 |
请求参数
参数名 |
类型 |
说明 |
infrared_id |
String |
红外设备唯一标识 |
standard_key |
String |
红外设备标准key |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Boolean |
操作结果 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.controlInfraredDevice",
version: "1.0",
params: {
"infrared_id": "6c760b4d966882******",
"standard_key": "PowerOn"
}
}
});
成功响应示例
{
"result": true,
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
获取红外设备最新状态
方法描述
根据设备唯一标识获取红外设备最新状态
方法参数
action |
version |
device.getInfraredStatus |
1.0 |
请求参数
参数名 |
类型 |
说明 |
infrared_id |
String |
红外设备唯一标识 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Object |
返回结果 |
请求示例
OpenSaasSDK.request({
data: {
action: "device.getInfraredStatus",
version: "1.0",
params: {
"infrared_id": "6c760b4d966882******"
}
}
});
成功响应示例
{
"result": {
"mode": "4",
"temp": "22",
"power": "1",
"wind": "2"
},
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
获取场景列表
方法描述
获取场景列表
方法参数
action |
version |
scene.listScenes |
1.0 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Array |
场景列表 |
result参数说明
参数名 |
类型 |
说明 |
scene_id |
String |
场景唯一标识 |
name |
String |
场景名称 |
请求示例
OpenSaasSDK.request({
data: {
action: "scene.listScenes",
version: "1.0"
}
});
成功响应示例
{
"result": [
{
"scene_id": "*******",
"name": "Turn on all lights"
}
],
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
触发场景
方法描述
根据场景唯一标识触发场景
方法参数
action |
version |
scene.triggerScenes |
1.0 |
请求参数
参数名 |
类型 |
说明 |
scene_id |
String |
场景唯一标识 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Boolean |
操作结果 |
请求示例
OpenSaasSDK.request({
data: {
action: "scene.triggerScenes",
version: "1.0",
params: {
"scene_id": "6c760******f"
}
}
});
成功响应示例
{
"result": true,
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
zigbee远程开锁
方法描述
zigbee门锁免密开锁
方法参数
action |
version |
doorLock.remoteUnlock |
1.0 |
请求参数
参数名 |
类型 |
说明 |
device_id |
String |
设备唯一标识 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
Boolean |
操作结果 |
请求示例
OpenSaasSDK.request({
data: {
action: "doorLock.remoteUnlock",
version: "1.0",
params: {
device_id: "04020475840d8e*****"
}
}
});
成功响应示例
{
"result": true,
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
MQTT连接、监听消息
引入模块
import { SaasMqtt } from 'xxx/openSaasSdk'
连接MQTT
方法描述: 连接mqtt(含消息订阅)
方法: SaasMqtt.connectMqtt(config)
参数说明
参数名 |
类型 |
说明 |
config |
Object |
mqtt连接配置 |
config参数说明
参数名 |
类型 |
说明 |
client_id |
String |
mqtt连接client_id(用户账号及unique_id 生成的一个唯一不变的映射)一个clientId 即可以用于发布也可以订阅 |
expire_time |
Integer |
当前配置失效期,当前配置失效,所有的链接都将断开 |
username |
String |
mqtt连接用户名(用户账号生成的一个唯一不变的映射) |
password |
String |
mqtt连接密码 ,失效期内该字段不变 |
sink_topic |
Map |
mqtt topic:用户下发设备控制的mqtt,格式cloud/token/out/{dev_id},传具体控制的iot设备id |
source_topic |
Map |
mqtt topic:设备上报消息推送给该账号(支持多个clientId取链接) |
url |
String |
Mmqtt链接地址(包括协议、ip、port) |
示例
async function () {
const { result } = await OpenSaasSDK.getgetMqttConfig()
SaasMqtt.connectMqtt(result)
}
监听消息
方法描述: 监听MQTT实例
方法: SaasMqtt.on(event, fn)
参数说明
参数名 |
类型 |
说明 |
event |
Object |
监听事件名称 |
fn |
Function |
监听事件的处理函数 |
event参数说明
参数名 |
类型 |
说明 |
close |
String |
关闭连接事件 |
disconnect |
String |
连接断开事件 |
offline |
String |
脱机事件 |
error |
String |
发生错误事件 |
message |
String |
接收消息事件 |
特殊情况
对应监听事件为message时,fn回调函数有三个回调参数可使用
event参数说明
参数名 |
类型 |
说明 |
topic |
String |
消息队列topic |
message |
String |
消息体 |
packet |
String |
数据包 |
示例
SaasMqtt.on('message', (topic, message) => {
console.log(message)
});
建议将mqtt对象放入全局变量中使用,方法处理对应面板的消息推送
注意事项
由于微信的websocket机制问题,mqtt会经常断开连接所以需要在app.js文件中的onShow生命周期监听函数中添加如下代码:
SassMqtt.connectMqtt(config)
SassMqtt.on(‘close’, (errMsg) => {
SassMqtt.connectMqtt(config)
console.log(‘errorMsg: mqttClose’, errMsg)
})
SassMqtt.on(‘error, (errMsg) => {
SassMqtt.connectMqtt(config)
console.log(‘errorMsg: mqttError, errMsg)
})
获取梯控二维码
方法描述
获取梯控二维码
方法参数
action |
version |
elevator.qrcodes |
1.0 |
响应参数
参数名 |
类型 |
说明 |
code |
Integer |
响应码(详情见错误码章节),成功时为空 |
success |
Boolean |
是否成功:(true:成功,false:失败) |
msg |
String |
请求失败的信息,成功时为空 |
result |
String |
梯控二维码 |
请求示例
OpenSaasSDK.request({
data: {
action: "elevator.qrcodes",
version: "1.0"
}
});
成功响应示例
{
"result": "1d3edf0002ad00736ff1e775da***************8cd5a9f51e2b957749e738c2*********730a8ad372f1",
"success": true
}
失败响应示例
{
"code":500,
"msg":"system error,please contact the admin",
"success":false
}
小程序蓝牙SDK使用步骤
- (一) index.js 为小程序SDK的js文件,bleSDK是蓝牙相关,导出OpenSaasSDK,BleSDK
import { OpenSaasSDK,BleSDK } from ‘xxx/index’
- (二)pre 为预发测试环境,prod为线上环境 ,线上环境暂未部署,先预发测试环境调试
OpenSaasSDK.setEnv('pre')
- (三)初始化开发者信息,对应涂鸦云clientId、secret、访问令牌、刷新令牌。
OpenSaasSDK.set({clientId, secret, access_token, refresh_token})
- (四)调用device.listDevices,获取设备列表,会获取到device_id,并保存后续使用,
OpenSaasSDK.request({
data: {
version: "1.0",
action: "device.listDevices",
params: {}
}
})
- (五)蓝牙初始化,需要传入设备ID:device_id,获取到的instance是蓝牙的实例,只要实例存在,就可以直接调用开锁,获取实例下面获取已创建的实例
const instance = await BleSDK.initBle(device_id)
- (六)注册监听蓝牙通信,instance.onReceivePackage((parseReceiveData) => {}),会有相对应的连接失败,未发现蓝牙设备,蓝牙连接成功等回调,可以针对相对应的状态展示不同情况以及开锁等操作
instance.onReceivePackage(async(parseReceiveData) => {
const {
type,
status,
dpState,
deviceId,
} = parseReceiveData
if (type === 'connect' && status === 'fail') {
if (deviceId) {
console.log('连接失败 或 连接后又断开');
} else {
console.log('未发现当前蓝牙设备');
}
} else if (type === 'connect' && status === 'connected') {
console.log('蓝牙连接成功');
await BleSDK.sendOpenRandomSync()
BleSDK.sendDpOpenDoor()
} else if (!(deviceId in parseReceiveData) && dpState) {
this.handleData(dpState)
}
})
回调参数说明
参数名 |
类型 |
说明 |
type |
string |
状态类型:connect-连接状态; otaStatus-OTA 升级状态;send-发送状态 |
status |
string |
状态值 |
deviceId |
string |
蓝牙设备 ID,安卓下为mac地址 |
dpState |
Object |
当前蓝牙设备的功能状态集 |
回调参数status数值说明
type |
status数值 |
说明 |
connect |
ready |
SDK 准备进行蓝牙连接,进入此状态后,请勿再重复调用connectBlue进行连接,否则可能会导致连接失败 |
– |
connecting |
连接中 |
– |
connected |
蓝牙连接成功 |
– |
fail |
蓝牙连接失败 |
otaStatus |
updating |
OTA中 |
– |
updated |
OTA成功 |
– |
fail |
OTA失败 |
send |
sending |
数据发送中 |
– |
sended |
数据发送完毕 |
instance.connectBlue()
- (八)开锁需要调用的方法,内部已经封装好,可直接调用
BleSDK.sendOpenRandomSync()
BleSDK.sendDpOpenDoor()
const instance = BleSDK.config.bleService.instance[device_id]
参数说明
字段 |
数据类型 |
说明 |
device_id |
String |
蓝牙设备配网后生成的虚拟 ID |
BleSDK.config.bleService.destroyInstance(device_id)