Я смотрел эту демонстрацию BLE для Arduino:
https://github.com/dzindra/BLE-iOS-demo/blob/master/esp32blinky/esp32blinky.ino
Я заметил, что нет "Аутентификации / Авторизации" или явного "кода подключения" ".
Код состоит из создания сервисов и характеристик и их рекламы. В лучшем случае вы можете увидеть следующие обратные вызовы, которые запускаются при подключении клиента:
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
Serial.println("Connected");
};
void onDisconnect(BLEServer* pServer) {
Serial.println("Disconnected");
}
};
Мне было интересно, какой подход люди используют для обеспечения того, чтобы пользователи могли подключаться к BLE Arduino, только если они являются владельцем (для Например, нажав кнопку для запуска режима подключения) et c ...
При более глубоком поиске я обнаружил: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLETests/Arduino/security/BLE_server/BLE_server_passkey/BLE_server_passkey.ino
Этот другой пример показывает как ESP32, действующий в качестве клиента, будет аутентифицироваться на сервере:
https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLETests/Arduino/security/BLE_client/BLE_client_passkey/BLE_client_passkey.ino
Оба эти примера являются хорошими примерами того, как два ESP32 могут выступать в качестве клиента / сервер и аутентифицировать друг друга. Но тогда как мне заставить мой iPhone пройти аутентификацию? Я использую следующий пример iPhone для простого подключения без аутентификации.
Все выглядит немного "хакерским", и мне было интересно, есть ли авторитетный ответ о том, как подключиться к BLE Arduino с аутентификацией?
РЕДАКТИРОВАТЬ: По сути, я не хочу, чтобы случайные люди просто подключались к моему BLE-устройству. Мне не нужно ничего больше, чем это (мне не нужно шифрование). Я просто хочу запретить случайным людям подключаться к моему устройству и разрывать соединение со смартфоном с моим BLE-устройством.