ESP32-BLE2MQTT:将你的BLE设备轻松接入物联网世界

 

说实话,折腾智能家居这几年,我最大的感受就是——各种设备之间的“语言不通”太烦人了。

你买了小米的蓝牙温湿度计,又搞了个飞利浦的Hue灯泡,还想让它们联动?做梦呢。每个厂家的东西都像关在自己小圈子里,死活不愿意跟别人好好说话。

直到我发现了一个叫esp32-ble2mqtt的开源项目,真有种“终于等到你”的感觉。

这玩意到底是干嘛的?

简单说,它就干一件事:让那些只能跟手机蓝牙通信的设备,能直接接入你的智能家居系统。

你去GitHub上翻翻,这个项目有700多颗星,说明啥?说明大家早就被这个问题折腾得够呛了。作者用的是ESP32这个芯片,折腾过Arduino的都知道,这货本身就有蓝牙和WiFi,正好拿来当“翻译官”。

左边接收各种蓝牙设备发来的信号,右边把这些信号转换成MQTT消息,扔给你的智能家居中枢。MQTT是啥?你可以理解成智能家居界的“普通话”,Home Assistant、Node-RED这些系统都认这个。

举个栗子你就明白了

你家里有个小米蓝牙温湿度计,本来这玩意只能通过手机App看数据。用了这个项目之后呢?

ESP32会自动发现这个温湿度计,然后在你的MQTT服务器上创建这样的主题:
设备MAC地址/Temperature、设备MAC地址/Humidity

然后Home Assistant订阅这些主题,实时温度湿度不就出现在你的仪表盘了嘛?不需要买小米网关,不需要开蓝牙,稳得很。

最骚的操作是啥?

这玩意不只是读数据,还能写。

比如说你有个蓝牙控制的智能灯泡或者继电器。你往MQTT的一个主题里发一条消息,比如/Set带上ON,ESP32就能通过蓝牙告诉那个设备:劳驾,给爷亮起来。

而且它几乎兼容所有蓝牙设备。普通的BLE外设就不说了,什么iBeacon信标、Eddystone、小米的MiBeacon、甚至那些刷了第三方固件的ATC温湿度计,通吃。

配置真的不复杂

别一看到要写配置文件就头大。其实就是改一个config.json,把这几样填上:

配置项

你该填啥

WiFi名字

你家的路由器SSID

WiFi密码

别告诉我你忘了

MQTT服务器地址

比如192.168.1.100

要连接的蓝牙设备MAC

要不要连指定的设备

你要是不想指定具体设备也行,让它自动发现周围的所有蓝牙设备,它默认会把找到的全连上。配置完后一条命令idf.py build flash刷进去,搞定。

一些小细节挺贴心

我发现这项目考虑得挺周到的。比如它支持黑名单/白名单。你家里可能有几十个蓝牙设备,但你只想让ESP32关注温湿度计和门窗传感器,别的什么手环啊、耳机啊别来凑热闹,设个白名单就清净了。

它还支持OTA空中升级。也就是说第一次用数据线刷完之后,后面再想升级固件或者改配置,直接在网络上传就行,不用再爬桌子底下拔插USB线了。

日志还能远程发出来,不用一直挂着串口调试。对于习惯“刷完就忘”的人来说,省心。

玩了一周的感受

说实话,刚开始配置的时候我也踩了点坑。比如某些蓝牙设备需要绑定密钥,得自己抓包或者从手机里扒出来。但GitHub上项目文档写得挺清楚,跟着一步步来就是了。

稳定性倒是真没话说,我那个ESP32连着跑了快一周,没掉过一次链子。而且功耗控制得也不错,接个充电宝能撑好几天。

最关键的是——省钱。一个ESP32开发板二三十块钱,加上这个开源项目,就能取代那些动不动上百的官方网关。对于喜欢在客厅、卧室、阳台各放一个传感器的玩家来说,省下来的钱够吃好几顿火锅了。

项目地址:https://github.com/shmuelzon/esp32-ble2mqtt

 

发表评论