Имена синтаксического анализа обнаружения Bluetooth ESP32
Я запускаю пример кода из примеров ESP32 и сканирую доступные устройства BLE. Я вижу MAC-адрес устройства и т. д. Но для некоторых устройств я не вижу их имен.
Я использую ESP-WROOM-32 с аппаратной поддержкой, проверенной непосредственно с их github (некоторые ошибки были исправлены раньше на github, чем через lib Manager)
Когда я использую приложение LightBlue для обнаружения устройств BLE, я вижу имена большего количества устройств, чем ESP. Что я могу изменить, чтобы имена правильно отображались? ИЛИ Как мне проанализировать имя устройства из получаемых данных?
Этот код обратного вызова
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
Serial.print(" RSSI: ");
Serial.println(advertisedDevice.getRSSI());
}
};
выдает следующий результат:
Advertised Device: Name: , Address: 1d:0c:c7:3a:fb:c6, manufacturer data: 4c0009060378c0a81f12, payload: 1073609632
RSSI: -75
@Heisenbug, 👍1
1 ответ
Лучший ответ:
Bluetooth имеет два способа обработки имен устройств. Устройство может при желании объявить свое имя устройства. Он также должен ответить на запрос «получить имя устройства». Первый пассивен и это то, что вы обычно видите при сканировании. Последний активен и требует подключения к устройству и выполнения запроса. Если устройство не объявляет имя устройства, то единственный способ получить это имя — это отправить устройству запрос GATT «Характеристика имени». ESP32 (AFAIK) не делает этого автоматически, потому что эти вещи спроектированы так, чтобы быть «легкими». Ваше тяжеловесное «эталонное» программное обеспечение может работать и выполнять больше задач, поскольку это полноценное приложение.
Иногда вы можете увидеть разницу в устройствах, поскольку ваше эталонное приложение может заполнить список устройств комбинацией MAC-адресов и имен, а затем заменить MAC-адреса именами на более позднем этапе. Также он, вероятно, кэширует имена, которые запрашивал в прошлом.
- Не удается использовать Bluetooth или Wi-Fi на ESP32
- esp32 Stack canary watchpoint срабатывает
- ESP32S v1.1 NodeMCU vs ESP32 DevKitV1
- esp32-cam публикует изображение в mqtt
- WindowsError(31, "Устройство, подключенное к системе, не функционирует") в arduino
- Как очистить кучу памяти в esp32
- Пример кода для ESP32 в качестве медиа-контроллера для Android/iPhone Media Apps
- ESP-NOW и Wi-Fi, и OTA одновременно на Отправителе и Получателе