我们如何在蓝牙低功耗(BLE)上使用HTTP?

时间:2017-11-27 12:43:38

标签: android http bluetooth bluetooth-lowenergy

有没有办法从BLE中心(客户端)向BLE外设(服务器)发送HTTP消息(GET,POST等)?目前,我正在使用GATT协议发送纯文本。由于HTTP服务器已在我的Peripheral中运行,我宁愿使用HTTP协议。有人建议我使用HPS(HTTP代理服务)而不是BLE来完成这项工作。但我真的对HPS一无所知。

有没有其他方法可以通过BLE从客户端向服务器发送HTTP消息? 谁能告诉我这是怎么做到的?或者是否有任何其他方式通过BLE发送HTTP。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:5)

我不同意Emil的说法,即蓝牙上的IPv6是唯一的标准化选项。我为Bluetooth SIG btw工作。 HTTP代理服务是标准的GATT服务。您可以在此处下载规范:https://www.bluetooth.com/specifications/gatt/

这里有一些评论,说明“通过蓝牙进行HTTP”是一个坏主意,但没有详细说明什么是“坏”。我认为可能涉及一些混淆,以及HTTP代理服务的预期用途是什么。

此GATT HTTP代理服务必须在同时具有蓝牙低功耗(LE)堆栈和TCP / IP堆栈的设备上运行。它具有GATT特性,可以通过将值写入这些特性来配置HTTP请求。这包括HTTP标头值。可以预期的是,大多数此类参数在初始设置后将不会更改或至少不会频繁更改。然后,充当GATT HTTP代理服务客户端的设备通过GATT服务器通过HTTP和TCP / IP 间接发送数据。他们通过写入HTTP实体主体特征来实现此目的。...通常是一个很小的值,例如传感器读数。然后,GATT客户端设备通过将一个字节写入HTTP控制点特征(例如1以触发HTTP GET)来触发HTTP操作。

谈论基于蓝牙的HTTP可能是一个误称。这不是这里发生的事情。这是一个三层体系结构,在(1)蓝牙设备与(2)双重技术蓝牙和TCP / IP设备之间具有非常轻量级的蓝牙LE通信,充当代理,该代理随后传达已配置的蓝牙编码请求通过TCP / IP连接到(3)远程HTTP服务器。

至于有关使用串行端口配置文件的评论以及有关这将提供性能优势的建议,这也值得怀疑。这里没有详细说明什么,但我想的想法是,整个HTTP操作是使用串行端口配置文件制定并通过Bluetooth BR / EDR连接发送的。蓝牙BR / EDR在物理层上以每秒2兆符号的速度运行,默认情况下,蓝牙LE在每秒1兆符号的速度下运行。但是自几年前发布蓝牙5以来,蓝牙LE每秒还支持2兆个符号。此外,由于HTTP代理服务的设计,HTTP请求的固定或很少变化的组成部分仅需要配置一次,使用HPS vs SPP时,您可能会发现传输的数据更少。当然,这全都取决于我,但是我认为这很可能。...

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用蓝牙网关。某些蓝牙网关支持对操作员设备的Restful API。