Ble Gateway :通用型BLE to WIFI Home Gateway 实现
随着BLE 传感器数量的增加,进行大数据的处理和分析便成了一个重要的需求。 市面的BLE to WIFI Gateway 方案很多,都是针对于特定
平台和特定芯片,例如TI 方案。Gateway 采集到BLE 节点上报的数据,将数据封装成特定格式,上传到cloud 云服务器,远程的或者后台 终端可以对数据进行监控或者统计。 大概的模式如下图所示。
采集到的数据封装成 JSON格式,通过mqtt 协议 上传到 MQTT server / IOE cloud / ALIcloud.
本人文笔不好,见得比较简陋,借鉴了一些网友的图片,愿文章起一个抛砖作用吧。
如有不明的地方或者需求请和我直接联系。
需要代买可以直接我联系。
HOME Gateway 模型
本文提的实现的方案,不限定硬件平台和软件平台。代码可以方便的移植到其它平台上,目前在x86 ,openwrt,平台上验证成功。
本次实验采用
平台是 Qualcomm Dakota 4029 路由平台 / PC 机,
BLE接收器 csr4.0 ble usb tonggle 、支持ble的 bluetooth 硬件均可实现
蓝牙协议栈 : bluze5.0
软件实现的功能
1.没有特定硬件需求
2. 支持linux,openwrt
3. 依赖BlueZ 5.0的蓝牙协议库,便有移植到 x86 ,mips ,arm等其它平台上
4. 支持多Ble 设备 星星组网,支持 1对 多模式
5. C语言实现
6. 动态添加 ble 设备,
7. 支持JASON
8. 支持MQTT 服务
9. 支持cli 配置
BLE Gateway service 介绍
为了便于实现通用性,选择了 BLuez 蓝牙框架。
Gateway 功能框图
bluetooth 接口上dump出的数据。
Gateway service
1.ble gateway 服务程序,会主动与添加到首选列表的ble 终端 进行连接(配对过的)
这个操作动作,可以通过配置文件实现,也可以通过cli命令去执行,配对动作。
[whitelist]
dev1=BC:6A:29:C0:DE:29
dev2=00:02:5B:00:B9:17
dev3=00:02:5B:33:B9:17
-
Ble gateway 服务程序,与周围节点进行 关联,并注册 readcallback ,writecallback,notifycall hook函数,
为了实现通用性,这个服务程序,只是采集接收数据,在服务里目前没有进行过滤 处理。服务将采集到所有gatt server 中的handle下的属性值进行封包成jason格式,并 数据报文上传到 服务器,所有的数据在cloud端,或者 local server处理。{ "ble": { "addr": [188, 106, 41, 192, 222, 41], // ble 节点 mac address "uuid": "0000aa21-0000-1000-8000-00805f9b34fb", // ble 节点 属性 的UUID "length": 4, // ble 节点属性 数据的长度 "data": [122, 11, 90, 19] // ble 节点属性的数据 } }
-
与 mqtt borker 进行连接,连接成功后,便可以传输数据。
[cls_server]
#配置文件等号左右可以有空格也可以没有
ip=192.168.1.1
#port=61623
port=1883
-
上传数据 到Mqtt broker
目前service 里只实现 最流行 mqtt 物联网传输协议,其它协议可以自行定制添加。 -
远程终端,后台终端的数据处理。
这里只是通过 手机端 的MQTT client 软件 ,进行数据 演示后端进行数据显示如下: