说实话,折腾智能家居这几年,我最大的感受就是——各种设备之间的“语言不通”太烦人了。
你买了小米的蓝牙温湿度计,又搞了个飞利浦的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