金桔智能蓝牙网关建立蓝牙连接
金桔蓝牙网关(acserver版本v34以上)可以通过预置的蓝牙连接类型进行快速的蓝牙连接,不需要每次调用都提供服务uuid,特征值uuid,或者厂商uuid等,大大简化了用户调用蓝牙连接的过程。
蓝牙标准服务类型(16bit)连接
安卓手机看到的此类型服务为0000xxxx-0000-1000-8000-00805F9B34FB。例如,我们服务uuid为0x0001,写入服务为0x0004,通知服务为0x0005,苹果手机看起是这样的:
安卓手机看起来是这样的:
ACserver 可以配置该连接信息到配置文件中,因为大多数用户都是只连接几种固定的设备,所以服务信息多是固定的,在acserver目录下有blelinktype文件夹,打开该文件夹,下面的文件都是各个服务类型:
每个文件的文件名,就是该类型的类型名(不包含文件类型),这里只有一个文件,该类型的名称就是com.nordicsemi.service.uart ,我们打开该文件看下里面内容:
[
{
"Company": "NORDIC",
"Device_type": "standard_device",
"Device_sn":"NA",
"Default_station":"",
"Timeout":"20",
"Serviceuuid":"0001",
"Servicetype":"128bit",
"Txuuid":"0003",
"Rxuuid":"0002",
"Vendoruuid":"9E,CA,DC,24,0E,E5,A9,E0,93,F3,A3,B5,00,00,40,6E"
}
]
这里面是一个json结构的数组,在数组里面有一个结构对象,这里面就是该连接类型的配置信息,描述如下:
字段 | 描述 |
---|---|
Company | 标识该服务是哪个公司的服务产品,起描述作用。 |
Device_type | 标识该服务用于哪种类型的设备,起描述作用。 |
Device_sn | 标识该类型的设备是哪种型号的设备,起描述作用。 |
Default_station | 缺省情况下,用哪个基站来连接该类型的设备。 |
Timeout | 连接的超时时间,即,当连接上或者没有连接上,多长时间以后断开或删除该连接。 |
Serviceuuid | 服务的UUID按上图的例子,这里应该填:0001 |
Servicetype | 服务类型,如果是16bit服务就是填:16bit,这个例子里就应该填16bit |
Txuuid | 这个是通知属性,在上图的例子中这里应该填:0005 |
Rxuuid | 这个是发送属性,在上图的例子中这里应该填:0004 |
Vendoruuid | 这个是厂商服务UUID在16bit类型的服务中,留着默认值即可,该字段不起作用。 |
最后我们的配置文件内容应该是:
[
{
"Company": "NORDIC",
"Device_type": "standard_device",
"Device_sn":"NA",
"Default_station":"",
"Timeout":"20",
"Serviceuuid":"0001",
"Servicetype":"16bit",
"Txuuid":"0005",
"Rxuuid":"0004",
"Vendoruuid":"9E,CA,DC,24,0E,E5,A9,E0,93,F3,A3,B5,00,00,40,6E"
}
]
我们将该配置保存为test1.js,重启acserver以后,我们看到界面的界面上多了test1的连接类型,我们填上mac地址后
点击连接后,右边事件列表中:
有显示连接状态。
这样就是已经可以成功连接设备。
如果需要用命令进行连接,需要发送下面这样命令:
http://127.0.0.1:8888/ac/station?cmd=setblelink_type&mac=10.00.00.63.42.42&stationId=10002095&type=test1
参数说明:
字段 | 描述 |
---|---|
cmd | 命令类型,固定为setblelink_type |
mac | 设备的mac地址 |
stationId | 用哪个网关进行连接 |
type | 连接的类型名,就是刚刚保存的test1 |
发送连接命令后,会收到蓝牙连接成功的消息。
另外注意,如果要是服务的UUID是标准的蓝牙服务,安卓上看到的也是2个字节的服务UUID
这种不影响正常通信,只是填写的服务填上标准的UUID即可.
厂商服务类型(128bit)连接
此类型服务,需要有厂商自定义的UUID,即16字节的UUID。
例如,我们建立一个厂商服务 9E,CA,DC,24,0E,E5,A9,E0,93,F3,A3,B5,00,00,40,6E(注意,手机看到的正好与此顺序相反,第12,13字节空出来留着填服务UUID)服务UUID为0xF001,写入服务为0x0004,通知服务为0x0005,苹果手机上看到的服务类型为:
安卓手机看到的是这样的:
基本上跟苹果是一致的,我们新建蓝牙连接类型的时候只要把Servicetype字段改成128bit并且按读到的厂商服务的UUID填入即可,这里这样填写类型信息:
[
{
"Company": "NORDIC",
"Device_type": "standard_device",
"Device_sn":"NA",
"Default_station":"",
"Timeout":"20",
"Serviceuuid":"0001",
"Servicetype":"128bit",
"Txuuid":"0005",
"Rxuuid":"0004",
"Vendoruuid":"9E,CA,DC,24,0E,E5,A9,E0,93,F3,A3,B5,00,00,40,6E"
}
]
字段说明见上面的16bit服务部分。
我们将该配置保存为test2.js,重启acserver以后,我们看到界面的界面上多了test1的连接类型,我们填上mac地址后
点击连接后即可连接成功,连接信息注意观察右边的事件列表,注意不要刷新页面。
http://127.0.0.1:8888/ac/station?cmd=setblelink_type&mac=10.00.00.63.42.42&stationId=10002095&type=test2
参数说明:
字段 | 描述 |
---|---|
cmd | 命令类型,固定为setblelink_type |
mac | 设备的mac地址 |
stationId | 用哪个网关进行连接 |
type | 连接的类型名,就是刚刚保存的test2 |