以网关为中心的 BLE 多连接应用
App for BLE Multiple connections with gateway as central
我有一个应用程序的概念,但我找不到正确的信息来了解它是否可行。因此,如果有人对此有经验,我们将不胜感激。
想法是创建一个应用程序,通过 BLE 连接功能类似于网关的设备(OS 是 linux)。移动应用程序需要控制网关设备与其他设备(外设)建立连接(也是 BLE)。外围设备具有发送到网关设备的数据。移动应用程序应该能够读取该数据并能够告诉网关设备发回数据。
我能发现的是,当网关想要发送数据时,它应该连接和断开连接到每个设备。
我的问题是:
- 创建这样的东西的最佳实践是什么?
- 这会有多稳定?
- 如果在 linux 中制作模拟 RFCOMM,我可以打开超过 1 个连接吗?
感谢您的帮助。
您的想法绝对可行,但需要大量关于 BLE、iOS/Android 应用程序开发和 BlueZ(Linux 上的蓝牙堆栈)的知识。我的第一个建议是根本不要使用经典蓝牙 (RFCOMM),而是使用低功耗蓝牙 (BLE)。原因是经典蓝牙在 iOS 上存在限制,并且比当前 BLE 存在的资源少得多。
关于您的具体问题:-
创建这样的东西的最佳实践是什么?
您将需要一个 iOS/Android 应用作为 BLE 中心(即负责扫描和启动 BLE 连接)。此应用程序还应充当 GATT 客户端(即从远程 GATT 服务器读取数据数据。
然后您需要在 shell 脚本中使用 BlueZ 命令或使用 BlueZ C API 为您的 Linux machine/gateway 编写和编译程序。 Linux 网关应充当 Central/Peripheral 设备(即通告和接受传入连接以及扫描和建立远程连接),还应充当 GATT Client/Server(即读取来自远程 GATT 服务器的数据,并将读取的数据托管在本地的 GATT 服务器中。
Linux program/script 的操作顺序是在启动时开始扫描特定设备,然后连接到它们并使用 GATT 操作读取它们的数据。读取数据后,它将在本地 GATT 服务器中托管数据。同样在启动时 Linux 机器需要为远程连接做广告。然后 iOS/Android 应用程序可用于扫描远程 Linux 设备,连接到它,并使用 GATT 命令从中读取数据。
这会有多稳定?
这将具有良好的稳定性而不会出现问题,但这完全取决于连接数和每次交易要发送的数据量。许多 BLE 设备至少允许 8 个连接,如果您的数量在此范围内,则应该没有任何问题。
如果在 linux 中制作模拟 RFCOMM,我可以打开超过 1 个连接吗?
您可以在 Linux 上拥有多个 RFCOMM 连接,但您会发现这方面的资源非常有限,因为 BlueZ 尚未广泛用于 RFCOMM。此外,我认为 iOS 应用程序不支持 RFCOMM,或者支持可能非常有限,因此您会 运行 遇到问题。
一些可能对您有用的参考资料:-
- Bluetooth Low Energy: A Primer
- Getting Started with Bluetooth Low Energy
- Introduction to BLE
- Core Bluetooth Programming Guide
- Android Bluetooth Low Energy Guide
- BlueZ Setting up GATT Server
- BlueZ Using GATT Client Commands
- More BlueZ Posts
希望对您有所帮助。
我有一个应用程序的概念,但我找不到正确的信息来了解它是否可行。因此,如果有人对此有经验,我们将不胜感激。
想法是创建一个应用程序,通过 BLE 连接功能类似于网关的设备(OS 是 linux)。移动应用程序需要控制网关设备与其他设备(外设)建立连接(也是 BLE)。外围设备具有发送到网关设备的数据。移动应用程序应该能够读取该数据并能够告诉网关设备发回数据。 我能发现的是,当网关想要发送数据时,它应该连接和断开连接到每个设备。
我的问题是:
- 创建这样的东西的最佳实践是什么?
- 这会有多稳定?
- 如果在 linux 中制作模拟 RFCOMM,我可以打开超过 1 个连接吗?
感谢您的帮助。
您的想法绝对可行,但需要大量关于 BLE、iOS/Android 应用程序开发和 BlueZ(Linux 上的蓝牙堆栈)的知识。我的第一个建议是根本不要使用经典蓝牙 (RFCOMM),而是使用低功耗蓝牙 (BLE)。原因是经典蓝牙在 iOS 上存在限制,并且比当前 BLE 存在的资源少得多。
关于您的具体问题:-
创建这样的东西的最佳实践是什么?
您将需要一个 iOS/Android 应用作为 BLE 中心(即负责扫描和启动 BLE 连接)。此应用程序还应充当 GATT 客户端(即从远程 GATT 服务器读取数据数据。
然后您需要在 shell 脚本中使用 BlueZ 命令或使用 BlueZ C API 为您的 Linux machine/gateway 编写和编译程序。 Linux 网关应充当 Central/Peripheral 设备(即通告和接受传入连接以及扫描和建立远程连接),还应充当 GATT Client/Server(即读取来自远程 GATT 服务器的数据,并将读取的数据托管在本地的 GATT 服务器中。
Linux program/script 的操作顺序是在启动时开始扫描特定设备,然后连接到它们并使用 GATT 操作读取它们的数据。读取数据后,它将在本地 GATT 服务器中托管数据。同样在启动时 Linux 机器需要为远程连接做广告。然后 iOS/Android 应用程序可用于扫描远程 Linux 设备,连接到它,并使用 GATT 命令从中读取数据。
这会有多稳定?
这将具有良好的稳定性而不会出现问题,但这完全取决于连接数和每次交易要发送的数据量。许多 BLE 设备至少允许 8 个连接,如果您的数量在此范围内,则应该没有任何问题。
如果在 linux 中制作模拟 RFCOMM,我可以打开超过 1 个连接吗?
您可以在 Linux 上拥有多个 RFCOMM 连接,但您会发现这方面的资源非常有限,因为 BlueZ 尚未广泛用于 RFCOMM。此外,我认为 iOS 应用程序不支持 RFCOMM,或者支持可能非常有限,因此您会 运行 遇到问题。
一些可能对您有用的参考资料:-
- Bluetooth Low Energy: A Primer
- Getting Started with Bluetooth Low Energy
- Introduction to BLE
- Core Bluetooth Programming Guide
- Android Bluetooth Low Energy Guide
- BlueZ Setting up GATT Server
- BlueZ Using GATT Client Commands
- More BlueZ Posts
希望对您有所帮助。