更新时间:2024-06-05 03:15:10下载pdf
设备功能是对产品功能的抽象表示,是具体智能设备功能的抽象,用于描述产品功能及其参数。
功能 Code:设备功能的编码。设备与云端的功能数据通过功能 Code 进行传输。支持字母、数字和下划线,以字母开头。
功能名称:功能的名称。
数据类型:
| 类型 | 参数名 | 说明 | 示例 | 
|---|---|---|---|
| 布尔型 | bool | 非真即假的二值型变量。 | 开关功能的开或者关。 | 
| 数值型 | value | 可线性调节类型的数据。 | 温度调节,温度范围 20-40℃。 | 
| 枚举型 | enum | 自定义的有限集合值。 | 工作档位,低档/中档/高档。 | 
| 故障型 | fault | 用于上报和统计故障的功能,支持多故障,数据只上报。 | 温度传感器故障、电机故障和高温故障等。 | 
| 字符串型 | string | 以字符串形式传输的功能。 | - | 
| 透传型 | raw | 以二进制形式透传的功能。raw 型数据需要转换成 HEX 格式的数据 | - | 
数据传输类型
以灯具产品为例,其设备功能如下所示:
| code | 名称 | 模式 | 类型 | 类型详情 | 
|---|---|---|---|---|
| switch_led | 开关 | rw | bool | {“type”:“bool”} | 
| work_mode | 模式 | rw | enum | {“range”:[“white”, “colour”, “scene”, “music”, “scene_1”,“scene_2”, “scene_3”, “scene_4”]} | 
| bright_value | 亮度 | rw | value | {“min”:25,“scale”:0, “unit”:“”, “max”:255, “step”:1} | 
| temp_value | 冷暖 | rw | value | {“min”:0, “scale”:0, “unit”:“”, “max”:255,“step”:1} | 
通过上面的设备功能可以看出,这个灯有开关、亮度、冷暖度调节的功能,还有白光模式、音乐模式等模式调节的能力。
通过调用云函数,即可查询设备功能。如果没有部署云函数,请参考 微信小程序云函数 完成部署。
查询设备功能示例代码如下所示:
    import { request } from '../../utils/request';
    const params = {
        data: {
            action: "device.specifications",
            params: {
                "device_id": "xxx" // 填写自己的设备 id
            }
        }
    };
    request(params).then(res =>{
        console.log('res', res);
    }).catch(err => console.log('err', err))
接口返回的内容如下所示:
{
	"category":"dj", // 品类(设备的类别)
	"functions":[  // 功能集合,是一个数组,这里只展示了一个
	{
		"code":"switch_led",  // 设备功能 code,(数据下发通过这个 code 就可以下发)
		"type":"Boolean", // 数据类型
		"values":"{}" // 类型详情
	},
	]
}
取决于设备的通信方式,微信小程序里下发设备功能目前有两种方式:
device.control 接口对于具备自联网能力的设备来说,通过调用云函数,即可下发设备功能。如果没有部署云函数,请参考 微信小程序云函数 完成部署。
如果接口返回权限拒绝,检查别的接口是否也出现同样的情况。如果只有查询设备功能的接口出现权限拒绝,说明该设备未能标准化,可通过 提交工单 的方式申请透传。
下发设备功能示例代码如下所示:
const params = {
    data: {
        action: "device.control",
	// params 接口参数
        params: {
            "device_id": "xxx", // 填写自己的设备 id
	    "commands": [{ "code": "switch_led", "value": true }] // 下面的命令,
        }
    }
};
request(params).then(res =>{
    console.log('res', res); // 结果里如果返回 true 则说明下发设备成功
}).catch(err => console.log('err', err))
对于无联网能力的蓝牙设备来说,想要下发设备功能,需要先使其与手机系统建立蓝牙连接通道,再通过微信原生提供的蓝牙 API 进行下发。
为方便小程序开发者更加快速地实现小程序蓝牙功能,涂鸦提供了蓝牙 SDK。更多详情,请参考 微信小程序蓝牙 SDK。
微信小程序里查询设备状态目前有三种方式:
device.status。device.status 接口const params = {
    data: {
        action: "device.status",
	// params 接口参数
        params: {
		"device_id": "xxx", // 填写自己的设备 id
		"commands": [{ "code": "switch_led", "value": true }] // 下面的命令,
        }
    }
};
request(params).then(res =>{
    console.log('res', res); 
}).catch(err => console.log('err', err))
返回的内容:
"result": [{ // 返回的数组里包含所有的状态
		"code": "switch_led",
		"value": true
	}]
在微信小程序的 app.js 文件下连接 MQTT。
// 引入 mqtt 文件
import wxMqtt from './utils/mqtt/wxMqtt'
// 在 onLaunch 生命周期里开启连接和对 mqtt 的监听
onLaunch: function () {
	wxMqtt.connectMqtt()
	wxMqtt.on('close', (errorMsg) => {
	wxMqtt.connectMqtt()
	console.log('errorMsg: mqttClose', errorMsg);
	})
	wxMqtt.on('error', (errorMsg) => {
	wxMqtt.connectMqtt()
	console.log('errorMsg: mqttError', errorMsg);
	})
}
在需要监听的页面开发监听。
wxMqtt.on('message', (topic, newVal) => {
console.log('message') // 监听的数据
})
对于无联网能力的蓝牙设备来说,查询设备状态的操作如下:
为方便小程序开发者更加快速地实现小程序蓝牙功能,涂鸦提供蓝牙 SDK。更多详情,请参考 微信小程序蓝牙 SDK。
device.status 查询设备状态?在刚刚进入页面或者设备状态明显变化时,通过调用该接口来查询设备状态,也可以在你认为需要使用的地方进行调用。
请检查别的接口是否也出现同样的情况,如果只有查询设备功能的接口出现权限拒绝,说明该设备未能标准化。可通过 提交工单 的方式申请透传。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈