Last Updated on : 2024-11-20 08:51:30download
综合 SDK 支持搭配涂鸦网关蓝牙模组使用,使用涂鸦网关蓝牙模组可以直接接入涂鸦生态下的蓝牙 MESH & BLE 子设备,并且支持蓝牙配网。
本文档将介绍如何集成涂鸦蓝牙模组,开发蓝牙网关。
集成涂鸦蓝牙业务包含硬件和软件两方面,硬件上主控与涂鸦蓝牙模组通过串口连接,要求支持硬件流控,软件上调用蓝牙业务的初始化和启动接口。
SDK 将通过串口与蓝牙模组进行通信,蓝牙配网适配和设备管理等操作全部由 SDK 实现,应用无需处理任何逻辑。
蓝牙初始化接口的入参主要是配置信息,为 JSON 数据,字段说明:
字段 | 描述 |
---|---|
enable_hb | 是否使能心跳管理。若使能心跳管理,网关在心跳超时主动读取子设备属性。 |
scan_timeout | BLE 扫描超时时间,单位是秒 |
mode | 配网模式,支持按位与操作配置多模式。例如,即支持 MESH PB-ADV 和 BLE Master,则 mode = (MESH_ADV | BLE_MASTER) = 0x05。模式定义: MESH_ADV = 0x01, MESH_GATT = 0x02, BLE_MASTER = 0x04, BLE_SLAVE = 0x08 |
我们在 快速入门指南 的实例工程基础上实现蓝牙网关功能。
首先,修改 Makefile 文件,添加链接蓝牙库。
LINKFLAGS = -L$(ROOT_DIR)/sdk/lib \
-lty_iot_sdk \
-lty_module_gw_base \
+ -lty_module_bluetooth \
-lpthread -lm
接着,修改代码,添加蓝牙业务初始化和启动。值得注意的是,必须在调用 SDK 其他接口之前配置蓝牙模组的串口设备号。
// ...
#if defined(TY_BT_MOD) && (TY_BT_MOD == 1)
#include "tuya_bt_api.h"
#include "tuya_os_adapt_bt.h"
#endif
// ...
int main(int argc, char **argv)
{
#if defined(TY_BT_MOD) && (TY_BT_MOD == 1)
// 指定蓝牙模组串口设备号,必须要在最前面调用
op_ret = tuya_bt_set_devname("/dev/ttyS1");
if (op_ret != OPRT_OK) {
PR_ERR("tuya_bt_set_devname err: %d", op_ret);
return op_ret;
}
tuya_os_adapt_reg_bt_intf();
#endif
tuya_os_intf_init();
// ...
ty_cJSON *bt_cfg = ty_cJSON_CreateObject();
if (bt_cfg == NULL) {
return OPRT_CJSON_GET_ERR;
}
ty_cJSON_AddNumberToObject(bt_cfg, "enable_hb", 1);
ty_cJSON_AddNumberToObject(bt_cfg, "scan_timeout", 60);
ty_cJSON_AddNumberToObject(bt_cfg, "mode", 5);
/* initiate application service, more service in here */
TUYA_CALL_ERR_RETURN(tuya_bt_svc_init(bt_cfg));
TUYA_CALL_ERR_RETURN(tuya_user_svc_init(&gw_cbs));
// ...
/* start application service, more service in here */
TUYA_CALL_ERR_RETURN(tuya_bt_svc_start(bt_cfg));
TUYA_CALL_ERR_RETURN(tuya_user_svc_start(NULL));
// ...
return 0;
}
Is this page helpful?
YesFeedback