用esp32BLE作为服务端时,如何获取连接自身的设备的设备名

Moderator: ESP_XCGuang

weibdorn
Posts: 12
Joined: Fri Mar 19, 2021 9:47 am

用esp32BLE作为服务端时,如何获取连接自身的设备的设备名

Postby weibdorn » Fri Mar 19, 2021 9:51 am

用esp32BLE作为服务端时,手机去连接,只知道用AT指令获取连接自身的手机的mac地址,但那样还是很难分辨是哪部手机,如何获取手机设备名

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: 用esp32BLE作为服务端时,如何获取连接自身的设备的设备名

Postby ESP_Alson » Mon Mar 22, 2021 6:25 am

首先,ESP32 BLE 作为 Server 时,可以通过 AT+BLECONN? 查询已经连接上 Server 的 BLE 设备的 MAC 地址。
其次,目前 AT 指令中还没有可以直接获取连接上 Server 的 BLE 设备的设备名。
最后,要想获取连接上 Server 的 BLE 设备名,可以通过如下的 AT 指令进行操作(核心就是发现 BLE 设备的服务,读取特征值)。假设现在已经有一台 BLE 设备连接上了 Server ,BLE 设备名为 "HUAWEI Mate 30 Pro 5G"。

[14:08:11:724] AT+BLECONN?
[14:08:11:724] +BLECONN:0,"43:0e:f4:8e:55:85"
[14:08:11:740]
[14:08:11:740] OK

[14:08:35:515] AT+BLECONN=0,"43:0e:f4:8e:55:85"
[14:08:35:531] +BLECONN:0,"43:0e:f4:8e:55:85"
[14:08:35:531]
[14:08:35:531] OK
[14:08:37:529] +BLECONNPARAM:0,-1
[14:08:39:606] +BLECONNPARAM:0,-1

[14:09:06:135] AT+BLEGATTCPRIMSRV=0
[14:09:06:135] +BLEGATTCPRIMSRV:0,1,0x1801,1
[14:09:06:135] +BLEGATTCPRIMSRV:0,2,0x1800,1
[14:09:06:135] +BLEGATTCPRIMSRV:0,3,0xFE35,1
[14:09:06:135] +BLEGATTCPRIMSRV:0,4,0x046A,1
[14:09:06:135]
[14:09:06:135] OK

[14:10:20:006] AT+BLEGATTCCHAR=0,2
[14:10:20:006] +BLEGATTCCHAR:"char",0,2,1,0x2A00,0x02
[14:10:20:006] +BLEGATTCCHAR:"char",0,2,2,0x2A01,0x02
[14:10:20:006] +BLEGATTCCHAR:"char",0,2,3,0x2AA6,0x02
[14:10:20:006]
[14:10:20:006] OK

[14:10:48:129] AT+BLEGATTCRD=0,2,1
[14:10:48:257] +BLEGATTCRD:0,21,HUAWEI Mate 30 Pro 5G
[14:10:48:257]
[14:10:48:257] OK

a set of sine waves
Posts: 56
Joined: Fri Mar 11, 2022 3:46 am

Re: 用esp32BLE作为服务端时,如何获取连接自身的设备的设备名

Postby a set of sine waves » Mon Jul 25, 2022 7:59 am

你好,我尝试了上面获取对面所连接的client的名称的指令是OK的。但是有几个地方有疑问:
①ESP32作为服务端建立连接之后,为什么可以使用AT+BLEGATTCPRIMSRV/AT+BLEGATTCCHAR/AT+BLEGATTCRD这几条命令呢?(在csdn资料里面上面几条指令都是client端才能单独使用的指令,如附件图片所示)
②通过读取特征值获取设备名称,那么我怎么知道设备名称在哪个服务哪个特征下面呢?也就是AT+BLEGATTCRD=0,2,1中的2和1是怎么确定的呢?
③我现在想ESP32 作为BLE服务端,和对端设备建立连接后,获取接收到的RSSI指标。这个有什么方法可以实现吗?

谢谢!
Attachments
1.png
1.png (29.69 KiB) Viewed 4603 times

a set of sine waves
Posts: 56
Joined: Fri Mar 11, 2022 3:46 am

Re: 用esp32BLE作为服务端时,如何获取连接自身的设备的设备名

Postby a set of sine waves » Wed Jul 27, 2022 1:27 am

上面的问题有人可以回答一下吗?

ESP_Sun
Posts: 326
Joined: Thu Dec 30, 2021 9:52 am

Re: 用esp32BLE作为服务端时,如何获取连接自身的设备的设备名

Postby ESP_Sun » Fri Jul 29, 2022 8:19 am

a set of sine waves wrote:
Mon Jul 25, 2022 7:59 am
你好,我尝试了上面获取对面所连接的client的名称的指令是OK的。但是有几个地方有疑问:
①ESP32作为服务端建立连接之后,为什么可以使用AT+BLEGATTCPRIMSRV/AT+BLEGATTCCHAR/AT+BLEGATTCRD这几条命令呢?(在csdn资料里面上面几条指令都是client端才能单独使用的指令,如附件图片所示)
②通过读取特征值获取设备名称,那么我怎么知道设备名称在哪个服务哪个特征下面呢?也就是AT+BLEGATTCRD=0,2,1中的2和1是怎么确定的呢?
③我现在想ESP32 作为BLE服务端,和对端设备建立连接后,获取接收到的RSSI指标。这个有什么方法可以实现吗?

谢谢!
1. 因为 ESP32 是支持即作为 BLE client 又作为 BLE server 的,所以 ESP32 作为服务端建立连接之后,可以使用 GATTC 端的命令。
2. 您可以了解下:蓝牙核心规范 4.2 版本(https://www.bluetooth.com/specification ... ation-4-2/)中的每个不同的服务特征含义, UUID 为:0x2A00 是应该代表设备名称,它位于服务 0x1800 下。
3. 目前您无法通过自定义命令实现此功能,后续 AT 可能会实现此功能。

Who is online

Users browsing this forum: No registered users and 19 guests